Get Started
dotCover integrates into Visual Studio 2010, 2012, 2013, 2015, 2017, and 2019. After installing dotCover with or without any other dotUltimate tools and opening Visual Studio, you will find dotCover commands under the ReSharper | Unit Tests and ReSharper | Cover in the main menu. From these menus, you can execute various commands available in dotCover.
Unit testing and code coverage
The most basic scenario of using dotCover is measuring how much of your code is actually executed when you run unit tests. Baseline conditions are as follows: you have a solution opened in Visual Studio and code in the solution is covered with some unit tests. The task is to understand how much of the code is covered.
Analyze coverage of unit tests in a solution
Choose ReSharper | Unit Tests | Unit Tests from the main menu. This will open the Unit Test Explorer tool window. Here you can take a look at how many tests are there in the solution.
In the Unit Test Explorer window, select the tests whose coverage you want to analyze. If you want to analyze all tests, select the top-level node in the tree. Note that you can limit coverage scope by using coverage filters.
By default, coverage and test results are shown by markers in the left gutter of the editor: a marker is red if any tests related to the current statement are failing, green if all tests are passing, and grey if there are no tests covering this statement.

Coverage of applications
dotCover enables us to calculate code coverage for a specific use-case scenario. Hitting Control+Alt+K P or choosing ReSharper | Cover | Cover Startup Project in the menu launches our solution’s startup project under dotCover control. Alternatively, Control+Alt+K K or ReSharper | Cover | Cover Application. enables us to specify the application to calculate code coverage for.
Next, we can run our application and work through a use-case scenario and tell dotCover to get a snapshot once completed. As long as the tested application runs under dotCover control, the controller dialog is displayed where you can click Get Snapshot and inspect which lines of code were covered when we worked with the tested application.
Filtering coverage results
Code coverage results can be cluttered with infrastructure code or projects that we are not interested in inspecting. We can exclude specific nodes by right-clicking them and choosing Exclude and Create Coverage Filter :
Excluding item and creating a corresponding runtime coverage filter will tell dotCover not to cover the item next time we run coverage analysis.
Once you’ve mastered these basics, you can learn the keyboard shortcuts or check how to work with the command-line version of dotCover.
Выпуск ReShaprer 6.1, dotCover 1.2 и dotTrace 4.5.2 Performance
Дабы преподнести небольшой подарок к предстоящим праздникам, мы рады представить вам даже не один, а целых три релиза: ReSharper 6.1, dotCover 1.2 и dotTrace 4.5.2 Performance.
ReSharper 6.1
Этот выпуск Решарпера содержит не только багфиксы но и ряд фич, о которых мы уже писали в серии блог-постов (англ.яз.). Вот что появилось нового в этом релизе:
Настройки
В Решарпере 6.0 были заложены основы того, что в последствии стало новым механизмом управления настройками. Изменение это было существенным, как с архитектурной, так и с функциональной точки зрения. К сожалению, ввиду отсутствия времени, мы не смогли подготовить этот функционал к релизу 6.0. Но сейчас все готово, и в релизе 6.1 мы рады представить набор возможностей для общего владения настройками на уровне решений, команд, отдельных компьютеров и даже на уровне политик компании. Мы все еще продолжаем работать над настройками, и надеемся на вашы отзывы.
Улучшения производительности
Перед выпуском каждой версии Решарпера, мы вкладываем массу времени в работу над производительностью. Это не всегда так просто, т.к. нам нужно также успевать создавать новый функционал. В версии 6.0 у нас были серьезные проблемы с производительностью в некоторых типах веб-проектов. К счастью, эти проблемы были решены, и около 140 различных проблем были устранены к релизу 6.1.
Поддержка Async и Visual Studio 11
Поддержка Async все еще находится в состоянии CTP, а Visual Studio, в свою очередь – в стадии early preview. Пытаться поддерживать технологии, которые еще не готовы, не только сложно но еще и рискованно, т.к. любые крупные изменения могут свести на нет большую долю первоначальных усилий. Тем не менее, мы знаем что многие из наших пользователей экспериментируют с новыми технологиями и им не хватает ReSharper’a.
Поэтому, с релизом 6.1 мы предоставляем поддержку Async-а в C# и VB.NET, а также экспериментальную поддержку Visual Studio 11. Пока что нет поддержки Metro приложений и, для того чтобы произвести установку для VS11, вам потребуется отдельный установочный пакет (vsix), который можно скачать на этой странице.
Оптимизация ссылок на сборки
Большое число пользователей полагаются на Решарпер для быстрых изменений на уровне проекта, и поддержка оптимизации ссылок будет еще одним полезным инструментом. В любом проекте из вашего решения, ReSharper 6.1 может детектировать ссылки на сборки, которые не используются, и помогает пользователю удалить некоторые или все неиспользованные ссылки.
В процессе разработки версии 6.0, мы вложили много сил в создание более удобного API для расширения ReSharper’а. Версия 6.1 содержит плоды этих усилий: помимо улучшенного API, мы также предоставляем фреймфорк для юнит-тестирования, шаблоны Visual Studio, примеры и онлайн документацию. ReSharper 6.1 SDK можно скачать как инсталлятор MSI или ZIP-архив.
И другие полезные возможности…
Вот несколько других фич, которые вошли в релиз:
dotCover 1.2 и dotTrace 4.5.2 Performance
Оба этих релиза были «сервисными», и основной их целью была поддержка совместимости с ReSharper 6.1. Помимо этого, dotCover теперь работает с TypeMock 6.2.x, предоставляет улучшенные возможности создания отчетов с сокращенным объемом сгенерированного HTML-кода, а также потребляет меньше памяти.
Мы уже начали работать над новыми «мажорными» версиями dotCover и dotTrace Performance. Скоро будут выпущены EAP-версии продуктов с большим количеством новых возможностей и улучшений, о которых мы обязательно напишем.
Скачать их все 🙂
Ну и в заключение, позвольте поздравить всех вас с предстоящими праздниками. Увидимся в новом году!
Installation guide
dotCover is a Visual Studio extension. It supports Visual Studio 2010, 2012, 2013, 2015, 2017, and 2019. After installation, you will find the new ReSharper entry in the Extensions menu of Visual Studio. Most dotCover commands are available in that menu, but there are also a lot of features integrated in the editor, Solution Explorer, and other Visual Studio windows. Most of dotCover commands are also available with keyboard shortcuts.
Before installation, you may want to check the system requirements.
You can also install and uninstall dotCover via the command line.
New installation with default settings
Download and run the installer.
Make sure the Install option is selected (blue) next to the products you want to install.
By default, the selected products are installed into all Visual Studio versions on the target machine. If necessary, at the bottom of the installer window, you can deselect some Visual Studio versions. (the selected versions are blue).
Read and accept the license agreement and then click Next at the bottom of the installer dialog.
Deal with previous versions
dotCover does not allow you to install its different versions in the same Visual Studio version. However, several different dotCover versions can be installed in different Visual Studio versions.
Under each product that was installed previously there is the Product installation(s) section, which you can expand to see what happens to the previous versions.
Installation for all users of a computer
Download and run the installer.
Make sure the Install option is selected (blue) next to the products you want to install.
By default, the selected products are installed into all Visual Studio versions on the target machine. If necessary, at the bottom of the installer window, you can deselect some Visual Studio versions. (the selected versions are blue).
Click Options at the bottom of the dialog.
The product selection page will open again indicating the All users installation at the top.
Read and accept the license agreement and then click Next at the bottom of the installer dialog.
Silent installation via command line (Administrative mode)
You can use the installer to create a command line with all configuration options. You can then copy that command and use it in your custom installation scenario. For example, you can put the installer in a shared folder and place a batch file with the command next to it. As soon as the user executes the batch file the specified configuration is silently installed on their computer.
You can find the full list of the command-line parameters in this article.
Click Options at the bottom of the dialog.
The product selection page will open again indicating the Administrative mode at the top.
First, select target Visual Studio versions then choose which products should be installed.
Read and accept the license agreement and then click Next at the bottom of the installer dialog.
The installer will generate a program line command that you can copy.
Manage dotCover via Toolbox App
Toolbox App is a control panel that allows you to manage all JetBrains developer tools, including dotCover, from a single point of access. It lets you launch dotCover in different versions of Visual Studio, maintain different versions of the same tool, install updates and roll them back if needed. It also remembers your JetBrains Account and uses it to automatically log you in when you install and register new tools.
Install dotCover via Toolbox App
Launch the setup file.
When the installation is complete, accept the JetBrains privacy policy and sign in with your JetBrains Account.
Now you can manage existing tools, install new tools, and download updates:
Install into experimental instance of Visual Studio
Visual Studio’s experimental instance feature (previously known as custom hives) is intended for developing and debugging Visual Studio extensions, and maintains a separate copy of the configuration needed to run Visual Studio. Each experimental instance can have an entirely different configuration, from theme and window layout to the extensions that are loaded.
To launch Visual Studio in an experimental instance, run the Visual Studio executable in the command line with the following parameter:
Installation directories
%\PROGRAMFILES(x86)%\JetBrains\Installations for 64-bit systems and
%PROGRAMFILES%\JetBrains\Installations for 32-bit systems.
Directories of products installed into experimental instances of Visual Studio have the experimental instance name as a suffix.
Installation log
If something goes wrong during the installation, you can study the installer log. Regardless of how you install dotCover, you can find the log in the following directories.
For v. 2018.1 and above: %LOCALAPPDATA%\JetBrains\Shared\vAny\Installer
For older versions: %LOCALAPPDATA%\JetBrains\Shared\v
Coverage Analysis from the Command Line
You can also run code inspection and duplicate analysis from the command line.
Control execution of any test runner (MSTest, NUnit, xUnit, MSpec, and so on), record coverage of executed tests in coverage snapshots, and generate reports.
Merge coverage snapshots.
You may need to merge snapshots if, for example, you use several different formats of unit tests in your project or solution. In this case, you will have to start the console runner for all corresponding test runners and get several coverage snapshots. Then, you can use the merge command to merge the snapshots.
Generate coverage reports in different formats.
Use report command to generate reports in desired formats from coverage snapshots.
Install the dotCover console runner
There are several ways to install the dotCover console runner:
Using the archive- the most universal way to install the console runner.
Using the NuGet package- recommended if you want to run coverage analysis as a build step on a CI/CD server.
To install the dotCover console runner from the archive
Copy the archive to the machine where you are going to set up the console runner.
Extract files from the archive to a directory, from which you are going to start the console runner executable file dotCover.exe (Windows), dotCover.sh (Linux, macOS).
To install the dotCover console runner from the NuGet package
Open the required unit test project and add the reference to the JetBrains.dotCover.CommandLineTools package. For example:
On your CI/CD server, add a build step that restores NuGet packages.
On your CI/CD server, add build steps that use the console runner.
To install it as a local tool:
For further instructions, refer to the official Microsoft documentation.
Make sure your unit test project is built.
Navigate to the directory where dotCover.exe is located.
Type the following command in the console:
TargetExecutable is the path to the unit testing framework runner
Output is the report filename.
ReportType is the type of the report (in this case, we generate an HTML report)
When the console runner exits, the AppCoverageReport.html file should appear in the same directory with the dotCover console runner. Open this file to explore the coverage results in your web browser.
Alternatively, you can pass parameters in an XML file. To do so, type dotCover help cover coverage.xml in the command line.
Open the generated coverage.xml file and specify the configuration parameters. For example, the configuration file can look as follows:
Use dotCover cover coverage.xml to run the coverage with the specified parameters.
Installed from an archive or a NuGet package: dotCover.exe (Windows), dotCover.sh (Linux, macOS).
Open the solution folder.
Build the solution:
Run tests with coverage analysis:
If you configured dotCover.exe with an XML file and want to continue using it, specify a path to the file:
Navigate to the directory where dotCover.exe / dotCover.sh is located.
Type the following command in the console:
—output is the report filename.
—reportType is the type of the report (in this case, we generate an HTML report)
When the console runner exits, the AppCoverageReport.html file should appear in the same directory with the dotCover console runner. Open this file to explore the coverage results in your web browser.
Apply filters
If the coverage report contains some information that you are not interested in, you can apply filters, which tell the console runner, what should be included or excluded from the coverage report.
Check out the Set up coverage filters to learn how to configure filters in dotCover GUI. Note that the filters configured in the GUI are not applied when you run coverage with the console runner.
You can specify include and exclude filters in any order.
Independently of the order, the console runner first applies include filters and then exclude filters.
If no include filters is specified explicitly, the console runner first includes everything and then excludes what specified in exclude filters.
If there is some include filter, then the console runner first excludes everything that does not match to include filter, and then applies explicit exclude filters, if any.
By default, whether you specify any exclude filters or not, the console runner adds the following filters for system assemblies:
If necessary, you can disable these default filters with the DisableDefaultFilters command-line parameter.
There are two ways to specify coverage filters:
Set up coverage filters using XML configuration file
To exclude some items (modules, classes, methods) from the coverage report while keeping all others, add the corresponding entries to the ExcludeFilters node. For example:
Alternatively, to include only the desired items while excluding all others of the same kind, add the corresponding entries to the IncludeFilters node.
Another option, is to filter out classes and methods based on their attributes. For example, to filter out methods marked with the System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute attribute, we can add the following to the coverage.xml configuration file:
Alternatively, you can set up coverage filters using dotCover.exe command-line arguments.
Set up coverage filters using command-line arguments
To exclude/include items from the coverage analysis, you should run the console runner with the /Filters parameter. For example (for simplicity, we omit parameters related to the coverage target):
This example is equivalent to the XML configuration example from above. Note that the semicolon (;) separates not only filter entries but also items inside filter entries.
If you need to exclude/include only a module, you can omit the module keyword:
To filter out classes and methods based on their attributes, you should use the /AttributeFilters parameter. For example, to filter out methods marked with the System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute attribute:
The semicolon (;) works as a separator.
Change scope of coverage results
By default, when the coverage snapshot is ready, it only includes information on assemblies that were loaded for analysis, that is the assemblies that were not filtered out and that have tests. This can make the overall coverage percentage incorrect.
If necessary, you can change the scope of assemblies whose information should be added to the snapshot. To do so, use the Scope parameter. For example, to add all assemblies from your project to the snapshot, you can add the following to the configuration file:
Note that everything excluded with filters is excluded anyway regardless of the specified scopes.
Cover multiple test projects
If there are several unit test projects in your solution, you can run coverage for all of them at once as described in the basic scenario. In this case, to avoid specifying full path to each assembly, you could use the TargetWorkingDir parameter when specifying test assemblies. For example:
However, sometimes this approach may not work. For example, when unit test projects use different unit testing frameworks. In such cases we can breakdown the coverage, merging and reporting into individual steps.
Let’s suppose that we have two unit test projects, TestProject1 that uses MSTest and TestProject2 that uses NUnit. To run coverage on both projects and get a single report, we perform the following steps:
Run coverage for multiple projects in separate steps
Create two configuration files for running the cover (c) command on each of the tests projects. testProject1.xml for the TestProject1 that uses MSTest:
and testProject2.xml for the TestProject2 that uses NUnit:
Run the merge (m) command to merge both snapshots:
where the merge.xml is the configuration file:
To build an HTML test report from the merged snapshots, run the report (r) command
where the report.xml is the configuration file:
Find symbol files (PDB)
Locating symbol files (PDB) for the target binaries is vital for calculating coverage. If you cover unit tests or cover the startup project, dotCover easily locates symbol files using the structure of the current solution.
By default, dotCover search symbol files in the following places:
in the same directory where the binary file resides;
in the debug directory that is specified inside the binary file;
in all directories specified in the _NT_SYMBOL_PATH environment variable and in the registry;
If necessary, you can specify other places to look for symbol files. To do so, use the following parameters when using the cover command:
Use the SymbolSearchPaths parameter to provide a semicolon separated list of paths to search for symbol files. Each path can be either a directory path or a symbol server path (for example, srv*C:\LocalSymbols*http://symbolserver:33417/ ).
Use the AllowSymbolServerAccess parameter to allow dotCover access symbol servers specified either in the SymbolSearchPaths parameter, or in _NT_SYMBOL_PATH environment variable.
JetBrains 2020
Итоги года
год поставил перед людьми немало сложных вопросов и новых задач. Как и многим компаниям по всему миру, нам пришлось полностью пересмотреть привычные подходы к работе. Мы гордимся нашей командой, которая смогла быстро адаптироваться к ситуации и продолжила разработку продуктов в соответствии с планами релизов. Отдел продаж и команды поддержки также упорно трудились, чтобы не подвести клиентов в новых обстоятельствах.
JetBrains
JetBrains продолжает расти и увеличивать продажи. В течение года мы представили много новых функций в наших инструментах, выпустили публичную версию Space, продолжили заниматься локализацией продуктов и поддержкой сообщества открытого кода. Хотим рассказать обо всем подробнее.
Спасибо, что вы с нами! Ваша поддержка нам очень помогает.
JetBrains сегодня
В 2020 году продажи JetBrains продолжили расти двузначными темпами, а наша команда насчитывает уже больше 1500 сотрудников в 9 офисах.
Новости офисов
Амстердам
В конце января 2020 года амстердамская команда JetBrains переехала в новый офис.
В сентябре в Амстердаме открылся музей JetBrains Expo.
В начале года команда насчитывала 28 человек, а теперь — 81. 28 сотрудников релоцировались из наших офисов в других странах.
Бостон
Следуя официальным ограничениям, с марта по июнь все сотрудники бостонского офиса работали из дома. С середины июня некоторые коллеги начали приезжать в офис несколько раз в неделю, а другие продолжали работать удаленно.
Работа из дома
Мы полностью перешли на удаленный режим в течение недели с начала пандемии. Коллеги, чья работа пострадала от новых обстоятельств, например команда по организации мероприятий, по возможности были переведены в другие отделы или присоединились к новым проектам.
Чтобы работать из дома было комфортно, все сотрудники JetBrains могли забрать из офиса привычную мебель и оборудование. Что же оказалось нужнее всего?
Мы много общаемся друг с другом в тематических чатах, и в них успели появиться свои традиции. Например, по пятницам мы делимся фотографиями питомцев.
А как насчет новых знакомств? Можно отправиться на виртуальный кофе-поинт и пообщаться со случайным коллегой! Бот объединяет людей в пары и назначает время для получасовой онлайн-беседы за кофе. Спасибо, Donut!
Хотите присоединиться к команде JetBrains?
Посмотрите наши вакансии. Среди них есть варианты удаленной работы.
Галерея
JetBrains
Labs
Уже давно сотрудники JetBrains могут посвящать 20% рабочего времени интересным проектам и претворять в жизнь любые идеи на хакатонах. В 2020 году мы запустили проект JetBrains Labs, чтобы помогать коллегам воплощать их идеи и разрабатывать новые продукты.
Любой сотрудник может предложить идею и начать работу над ее реализацией. JetBrains Labs помогает в проработке концепции, проведении маркетинговых исследований, создании команды и поиске пользователей. У нас уже есть несколько интересных проектов — следите за новостями!
Восьмой ежегодный хакатон JetBrains
48 часов творчества и работы над идеями, которые могут ни к чему не привести, а могут запросто изменить мир.
5 минут на презентацию проекта
5 часов в сутки на сон (в среднем)
16 человек в одной из команд
40 проектов на финише
48 проектов на старте
450 часов видеозвонков
22 000 долларов в призовом фонде
JetBrains поддерживает научные группы, занимающиеся исследованиями в различных областях: от ядерной физики и нейрофизиологии до робототехники и машинного обучения. Проект JetBrains Research объединяет 18 лабораторий, 4 из которых сформировались в 2020 году.
Агентные системы и обучение с подкреплением
Разработка новых методов обучения ИИ-агентов
Группа биоинформатики
Разработка эффективных вычислительных методов для решения актуальных задач биологии и медицины
BioLabs
Исследование механизмов эпигенетической регуляции и их роли в процессах клеточной дифференцировки и старения
Лаборатория параллельных вычислений
Разработка современных многопоточных алгоритмов, их проверка, тестирование и сравнительный анализ
Лаборатория криптографии
Поиск решений современных проблем криптографии и информационной безопасности
Лаборатория киберфизических систем
Теоретические основы, языки и инструменты для разработки программ управления киберфизическими системами
Группа HoTT и зависимых типов
Создание формального языка с зависимыми типами, основанного на гомотопической теории типов
Лаборатория исследований процессов обучения
Долгосрочное исследование факторов, определяющих успешность студентов в обучении на программах STEM
Мы не только выдаем бесплатные лицензии студентам, но и тесно сотрудничаем с 16 университетами Санкт-Петербурга, Москвы и Новосибирска, а также с MIT, Мюнхенским техническим университетом, Калифорнийским университетом в Ирвайне и Сан-Диего, Рочестерским технологическим институтом в Нью-Йорке, Уппсальским университетом, Университетом имени Иоганна Кеплера, Университетом Британской Колумбии и другими учебными заведениями.
В прошедшем году более 50 старшеклассников и около 200 студентов получили стипендии от JetBrains. А JetBrains Research предоставила гранты 52 исследователям за научную работу и преподавание в университетах-партнерах. В совокупности за 2020 год они опубликовали 79 научных работ и провели 67 учебных курсов.
Клиенты
В 2020 году доходы JetBrains увеличились на 11% за счет 85-процентного роста в Китае, который стал четвертым рынком по объему продаж. Азиатско-Тихоокеанский регион остается самым быстрорастущим — здесь продажи выросли на 32%.















