Загрузите это расширение с Visual Studio Market Place (версия 2019), Visual Studio Market Place (версия 2022) или загрузите ее из выпусков. Более старые версии можно скачать здесь.
Для .Net — тестовые адаптеры представляют собой пакеты nuget. Например, расширения NUnit Test Adaptor недостаточно.
Fine Code Coverage обеспечивает покрытие кода с использованием одного из трех различных инструментов покрытия. В предыдущих выпусках использовались два инструмента покрытия: OpenCover и Coverlet, которые будут называться «старым покрытием».
Microsoft теперь предоставляет бесплатное решение для покрытия, которое вы можете использовать, установив параметр перечисления Visual Studio Fine Code Coverage RunMsCodeCoverage. Вероятно, это будет предпочтительный инструмент покрытия для большинства разработчиков. В настоящее время он находится в бета-версии.
При старом покрытии FCC могла предоставить абстракцию по опциям исключения/включения каждого инструмента. Эта абстракция не работает для покрытия кода MS.
Таким образом, вы обнаружите, что существуют отдельные параметры конфигурации для покрытия M и старого покрытия, а также параметры, общие для них. Могут быть достигнуты исключения и включения на уровне сборки — см. ExcludeAssemblies и IncludeAssemblies. Конфигурация (в основном) определяется параметрами Visual Studio, файлами Finecodecoverage-settings.xml и свойствами проекта msbuild. Все эти настройки являются необязательными. Для параметров, имеющих область действия проекта, эти параметры образуют иерархию, в которой более низкие уровни переопределяют или, для коллекций, переопределяют или объединяются с уровнем выше. Подробно это описано далее.
Независимо от используемого инструмента покрытия, процесс начинается с реакции FCC на обозреватель тестов в Visual Studio. Один из трех инструментов покрытия предоставляет результаты покрытия, и результаты можно открыть с помощью кнопок в окне инструмента Fine Code Coverage. Это покрытие не является динамическим и представляет собой покрытие, полученное при последнем выполнении тестов. Когда покрытие устареет, вы можете нажать кнопку «Очистить пользовательский интерфейс FCC» в меню «Инструменты» или повторно запустить покрытие.
Подробную информацию о том, как FCC продвигается по покрытию кода, можно найти на вкладке «Журнал покрытия» в окне инструмента Fine Code Coverage, а более подробные журналы — на панели окна вывода FCC. Если у вас возникли проблемы, предоставление журналов из окна вывода поможет понять природу проблемы.
Представляйте единый унифицированный отчет в окне инструмента Fine Code Coverage. В отчете показано покрытие линий и филиалов, а также горячие точки риска с возможностью открытия файлов вашего класса.
Цветные поля для обозначения статуса покрытия вашего кода. Инструментированные (включенные и анализируемые) строки кода либо покрыты, либо непокрыты, либо частично покрыты, что означает, что не все ветки были выполнены.
FCC предоставляет концепцию «грязных» регионов, в которых ранее инструментированный код больше не будет отображать статус инструментированного после изменения кода.
Для C# и Visual Basic предоставлена дополнительная информация о покрытии:
FCC также позволяет вам видеть код, который не был включен в покрытие, и новые строки, добавленные с момента последнего запуска покрытия.
В настройках необходимо включить как грязную, так и новую окраску линий.
При желании строки также можно выделить, установив доступные параметры Visual Studio. Читайте дальше для более подробной информации.
Цветами можно управлять через Visual Studio/Инструменты/Параметры/Среда/Шрифты и цвета/Текстовый редактор/Элементы отображения:
Для Visual Studio Community, Professional и Enterprise вы можете использовать настройки
Зона покрытия FCC
Покрытие частично затронутой зоны FCC
Зона покрытия, не затронутая FCC
Покрытие грязной зоны FCC
Зона покрытия новых линий FCC
Зона покрытия не входит в зону FCC
Для версий, которые предоставляют элементы, указанные ниже, FCC будет использовать их по умолчанию вместо эквивалентных элементов FCC, чтобы можно было использовать цвета, определенные в темах. Если вы хотите обеспечить единообразие для 5 доступных элементов, вы можете установить для UseEnterpriseFontsAndColors значение false.
Зона покрытия, не затронутая
Покрытие частично затронутой зоны
Площадь покрытия
Вы можете отключить раскрашивание редактора, установив для параметра Visual Studio EditorCoverageColouringMode значение Off. Вы также можете установить параметр DoNotUseRoslynWhenTextChanges, если есть проблемы с производительностью. В этом случае окраска новых линий будет не такой хорошей. Если вы переключитесь на одну из опций EditorCoverageColouringMode, вам нужно будет повторно запустить покрытие.
Вы можете переключать цвета редактора. FCC добавляет кнопку меню «Переключить индикаторы» в меню «Инструменты». Вы также можете создать сочетание клавиш — Инструменты/Параметры/Среда/Клавиатура, показывать команды, содержащие «ToggleIndicators».
Для компонентов Blazor с блоками @code линии покрытия могут создаваться за пределами этих регионов. Если синтаксическое дерево Roslyn доступно FCC, вы можете установить для параметра BlazorCoverageLinesFromGeneratedSource значение true, чтобы ограничить линии покрытия в файле .razor линиями в сгенерированном источнике.
FCC отслеживает редактор Visual Studio и сохраняет эту информацию при закрытии файла. Если при повторном открытии файла текст изменился за пределами окна документа, для этого файла не будет меток покрытия, поскольку линии покрытия больше не будут правильными.
Также не будет никаких пометок редактора, если вы редактируете файл во время сбора информации FCC.
При старом покрытии FCC необходимо было скопировать вашу тестовую dll и зависимости и запустить OpenCover или Coverlet для этих файлов. В этом нет необходимости при покрытии кода MS. Старое покрытие будет ждать завершения тестов, прежде чем запускать инструмент покрытия для повторного запуска всех тестов. В этом нет необходимости при покрытии кода MS. Старое освещение основывалось на каждом тесте. Покрытие кода MS — это покрытие тестов, которые вы выбираете в обозревателе тестов.
Поддерживает С++! Обратите внимание, что FCC не был должным образом протестирован с проектами C++, но с простым классом C++, протестированным с помощью Google Test, FCC обеспечивает покрытие.
Во-первых, вам нужно изменить параметр RunMsCodeCoverage с No.
Для покрытия кода MS требуется файл настроек запуска, настроенный соответствующим образом для покрытия кода. Для этого необходимо, чтобы у вас был пакет покрытия кода ms и вы указали на него элемент TestAdaptersPaths, а также указали сборщик данных ms. Исключения и включения также указываются в настройках запуска. Я не думаю, что документация достаточно ясно описывает, как это работает, поэтому вы можете рассмотреть эту проблему.
FCC не требует от вас этого. Если вы не предоставили параметры запуска и RunMsCodeCoverage имеет значение «Да», FCC сгенерирует их и запишет необходимую запись в файл проекта.
Обратите внимание, что открытие файла тестового проекта в Visual Studio во время выполнения тестов может привести к появлению предупреждения о конфликте, когда FCC удалит запись в конце теста. Если RunMsCodeCoverage имеет значение IfInRunSettings, то, если в проекте есть параметры запуска, включающие правильно настроенный элемент сбора данных ms, FCC будет обрабатывать собранные результаты.
FCC включает пакет покрытия кода MS и создаст необходимый файл настроек запуска для каждого тестового проекта, запускаемого из окна обозревателя тестов. Исключения и включения будут осуществляться на основе комбинированных настроек аналогично старому покрытию. Поскольку покрытие кода MS использует регулярное выражение и имеет различные методы исключения/включения для Coverlet и OpenCover, существуют специальные параметры Visual Studio для MS и связанные элементы.
Поскольку FCC предоставляет файл настроек запуска для каждого тестового проекта (если вы не предоставили решение для всего проекта или для конкретного проекта), она должна записать элемент RunSettingsFilePath в файл проекта.
Хотя FCC удаляет значение этого элемента из файла проекта, оно все еще присутствует.
FCC создает настройки запуска из шаблона, используя замену строк. При желании вы можете предоставить свои собственные шаблоны. FCC будет искать файл fcc-ms-runsettings-template.xml в каталоге проекта или каталоге решения. Ваш шаблон должен быть действительным XML-документом, но не обязательно предоставлять все элементы настроек запуска. FCC добавит заменяемые элементыResultDirectory и TestAdaptersPaths (и элемент контейнера RunConfiguration, если необходимо), если они отсутствуют. FCC также добавит заменяемые элементы ms DataCollector/Configuration/CodeCoverage, если они отсутствуют. Он также добавит рекомендуемые неисключение/включение элементы CodeCoverage AllowLowIntegrityProcesses, CollectFromChildProcesses, CollectAspDotNet и UseVerifyingInstrumentation, если они не указаны. UseVerifyingInstrumentation будет иметь значение false для .Net Framework. Чтобы просмотреть сгенерированные параметры запуска, используйте элемент RunSettingsFilePath в файле проекта.
Для пользовательского шаблона, который предоставляет свои собственные элементы, которые в противном случае были бы предоставлены FCC, для участия в замене шаблона необходимо добавить строки типа %fcc_replace%.
Исключения и включения имеют формат «%fcc_modulepaths_exclude%». Чтобы FCC предоставила путь покрытия кода ms, предоставленный FCC, для TestAdaptersPaths, используйте %fcc_testadapter%.
Также можно использовать собственный файл настроек запуска, а FCC добавит и заменит его. FCC обеспечит наличие элемента TestAdaptersPaths, а также сборщика данных ms. В отличие от шаблона, если присутствует сборщик данных ms, то к xml применяется только замена.
Покрытие кода Ms предоставляет элемент Configuration/CodeCoverage по умолчанию, если он не указан. Он также добавит некоторые исключения по умолчанию, если они отсутствуют, или объединит их, если вы не добавите атрибут mergeDefaults='false'. Например, его атрибуты исключают ExcludeFromCodeCoverageAttribute. Если вам интересно, см. ...AppDataLocalFineCodeCoveragemsCodeCoverage_version_buildnetstandard1.0Microsoft.VisualStudio.TraceDataCollector.dll и DynamicCoverageDataCollector.
Пожалуйста, проверьте устранение неполадок, прежде чем сообщать о проблеме.
Dll копируются в подпапку выходной папки проекта, что может повлиять на ваши тесты. Альтернативный вариант — установить для параметра AdjacentBuildOutput значение true. Покрытие обеспечивается либо OpenCover для проектов старого стиля, либо Coverlet для проектов SDK нового стиля. Хотя FCC предоставляет абстракцию над обоими, так что можно игнорировать различия между ними, существуют обстоятельства, когда важно знать, какой инструмент прикрытия будет запущен. Это наиболее очевидно при использовании Coverlet, подробности читайте дальше.
Другой сценарий — когда вы хотите использовать конкретную версию инструмента покрытия. Это можно настроить.
Инструменты покрытия, которые использует FCC, по умолчанию устанавливаются в каталог FineCodeCoverage внутри Environment.SpecialFolder.LocalApplicationData
. Это можно изменить с помощью параметра ToolsDirectory Visual Studio. Убедитесь, что этот каталог существует, и после перезапуска инструменты будут установлены в него.
Запустите (некоторые) модульные тесты и...
Иерархия следующая:
а) Параметры Visual Studio
б) файлы Finecodecoverage-settings.xml
Их можно найти, пройдя по структуре каталогов из каталога проекта. Применяя атрибут topLevel='true' к корневому элементу, обход останавливается.
Учитывая файл Finecodecoverage-settings.xml в каталоге проекта и файл Finecodecoverage-settings.xml в каталоге решения, иерархия следующая:
Параметры Visual Studio
Уровень решения Finecodecoverage-settings.xml
Уровень проекта Finecodecoverage-settings.xml
<FineCodeCoverage>
<Enabled>
True
</Enabled>
<!-- and more -->
</FineCodeCoverage>
в) файл проекта msbuild
Существует два способа предоставления этих настроек. Непосредственно в файле проекта
<PropertyGroup Label="FineCodeCoverage">
<Enabled>
True
</Enabled>
<Exclude>
[ThirdParty.*]*
[FourthParty]*
</Exclude>
<Include>
[*]*
</Include>
<ExcludeByFile>
**/Migrations/*
**/Hacks/*.cs
</ExcludeByFile>
<ExcludeByAttribute>
MyCustomExcludeFromCodeCoverage
</ExcludeByAttribute>
<IncludeTestAssembly>
True
</IncludeTestAssembly>
<ModulePathsExclude>
.*Fabrikam.Math.UnitTest.dll
</ModulePathsExclude>
<!-- and more -->
</PropertyGroup>
С помощью элемента FineCodeCoverage.
<PropertyGroup>
<FineCodeCoverage>
<Enabled>
True
</Enabled>
<!-- and more -->
</FineCodeCoverage>
</PropertyGroup>
Это необходимо , если настройки проекта хранятся вне файла проекта и используется импорт msbuild.
Это также необходимо, если вы хотите объединить элемент настройки с элементом предыдущего уровня, поскольку msbuild не поддерживает пользовательские атрибуты.
По умолчанию каждое свойство коллекции перезаписывается. Это можно изменить для всех настроек, установив defaultMerge='true' в корневом элементе.
Если вы укажете атрибут слияния для элемента настройки, он будет использоваться.
Это не транзитивно.
<PropertyGroup>
<FCCExcludeFromCodeCoverage/>
</PropertyGroup>
<PropertyGroup>
<UseDataCollector/>
</PropertyGroup>
У Coverlet разные «драйверы». Раньше Fine Code Coverage использовала только драйвер консоли Coverlet. С этим связаны некоторые проблемы. Если вы столкнулись с 0% покрытием или непостоянным покрытием , теперь можно переключиться на драйвер сборщика данных. Это лучший драйвер, но его нельзя использовать для всех проектов. На данный момент это добровольно. В будущем Fine Code Coverage определит соответствующий драйвер. Пожалуйста, обратитесь к документации Coverlet для получения информации о поддержке версий.
Обратите внимание, что нет необходимости добавлять пакет nuget Coverlet.collector, поскольку его предоставляет FCC.
Fine Code Coverage будет использовать драйвер сборщика данных в двух случаях:
Настройки сборщика данных Coverlet можно найти здесь. Если вы используете вариант 2) выше, то общие настройки (исключения и включения) будут созданы на основе свойств проекта (выше) и глобальных параметров Visual Studio (см. ниже), при этом свойства проекта будут иметь приоритет. Если вы используете вариант 1), то параметры проекта и глобальные параметры будут использоваться только в том случае, если элемент конфигурации «Общие настройки» отсутствует, а параметр RunSettingsOnly (см. ниже) изменен на false.
Вариант | Описание |
---|---|
Общий | |
РедакторПокрытиеЦветовойРежим | Установите значение Off или установите значение DoNotUseRoslynWhenTextChanges, если есть проблемы с производительностью. |
BlazorCoverageLinesFromGeneratedSource | Установите значение true, чтобы ограничить линии покрытия в файле .razor линиями в сгенерированном источнике (если доступно). |
ПоказатьРедакторПокрытие | Установите значение false, чтобы отключить все индикаторы покрытия редактора. |
ShowCoverageInGlyphMargin | Установите значение false, чтобы предотвратить появление следов покрытия на полях глифа. |
ПоказатьCoveredInGlyphMargin | Установите значение false, чтобы предотвратить закрытие меток на полях глифа. |
ПоказатьUncoveredInGlyphMargin | Установите значение false, чтобы предотвратить появление непокрытых меток на полях глифа. |
ShowPartiallyCoveredInGlyphMargin | Установите значение false, чтобы предотвратить частичное закрытие меток на полях глифа. |
ПоказатьDirtyInGlyphMargin | Установите значение true, чтобы на полях глифа отображались грязные пятна. |
ПоказатьNewInGlyphMargin | Установите значение true, чтобы отображать новые линейные знаки на полях глифа. |
ShowCoverageInOverviewMargin | Установите значение false, чтобы предотвратить появление следов покрытия на полях обзора. |
ПоказатьCoveredInOverviewMargin | Установите значение false, чтобы предотвратить закрытие меток на полях обзора. |
ПоказатьUncoveredInOverviewMargin | Установите значение false, чтобы предотвратить появление непокрытых меток на полях обзора. |
ShowPartiallyCoveredInOverviewMargin | Установите значение false, чтобы предотвратить частичное закрытие меток на поле обзора. |
ПоказатьDirtyInOverviewMargin | Установите значение true, чтобы на полях обзора отображались грязные пятна. |
ПоказатьNewInOverviewMargin | Установите значение true, чтобы отображать новые метки линий на полях обзора. |
ПоказатьЛиниюПокрытиеВыделение | Установите значение true, чтобы разрешить выделение линии покрытия. |
ShowLineCoveredHighlighting | Установите значение false, чтобы предотвратить выделение закрытых линий. |
ShowLineUncoveredВыделение | Установите значение false, чтобы предотвратить выделение непокрытых строк. |
ПоказатьЛиниюЧастичноПокрытоВыделение | Установите значение false, чтобы предотвратить подсветку частично перекрытых строк. |
ПоказатьЛинияГрязныйВыделение | Установите значение true, чтобы отобразить выделение грязной линии. |
ПоказатьЛиниюНовыйВыделение | Установите значение true, чтобы показать выделение новой строки. |
UseEnterpriseFontsAndColors | Установите значение false, чтобы использовать элементы шрифтов и цветов FCC. |
ПоказатьToolWindowToolbar | Установите значение false, чтобы скрыть панель инструментов в окне инструментов. Требуется перезапуск Visual Studio. На панели инструментов есть кнопки для просмотра XML-файла Cobertura и горячих точек риска. |
Имя выходного каталога решения FCC | Чтобы вывод FCC был виден в подпапке вашего решения, укажите это имя. |
Каталог инструментов | Папка, в которую копируются подпапки инструментов. Должно уже существовать. Требуется перезапуск VS. |
Порог для цикломатической сложности | Когда цикломатическая сложность метода превышает это значение, метод будет присутствовать на вкладке «Горячие точки риска». |
ЛипкийОхватТаблица | Установите значение true, чтобы таблица покрытия была липкой. |
Классы с пространством имен | Установите значение false, чтобы отображать типы в отчете в краткой форме. Влияет на группировку. |
Квалификация пространства имен | Управляйте квалификацией типов в отчете, если NamespacedClasses имеет значение true. FullyQualified – всегда полностью соответствует требованиям. AlwaysUnqualified — всегда неквалифицированный. UnqualifiedByNamespace — неквалифицированный при группировке по пространству имен. QualifiedByNamespaceLevel — опускает части идентификатора первого уровня группировки. Уменьшает пространство, сохраняя при этом уникальность. |
СкрытьПолностью покрыто | Установите значение true, чтобы скрыть полностью охваченные классы, пространства имен и сборки. |
Скрыть0Покрытие | Установите значение true, чтобы скрыть классы, пространства имен и сборки с покрытием 0 %. |
Hide0Coverable | Установите значение false, чтобы показать классы, пространства имен и сборки, которые не покрываются. |
Включено | Указывает, включен ли вывод покрытия. |
ОтключеноНетПокрытия | Установите значение false для VS Option Enabled=false, чтобы не отключать покрытие. |
Запустить, когда тесты не пройдены | По умолчанию покрытие запускается в случае сбоя тестов. Установите значение false, чтобы предотвратить это. Невозможно использовать вместе с RunInParallel. |
ЗапуститьКогдаТестыПревышают | Укажите значение, чтобы обеспечить покрытие только на основе количества выполняемых тестов. Невозможно использовать вместе с RunInParallel. |
ЗапуститьMsCodeCoverage | Измените значение на IfInRunSettings, чтобы собирать данные только с настроенными параметрами запуска. Да, для генерации настроек запуска. |
ВключитьТестАссембли | Указывает, следует ли сообщать о покрытии кода тестовой сборки. |
Включить референседпроектс | Установите значение true, чтобы добавить все проекты, на которые есть прямые ссылки, в список Include. |
Включить сборки | Предоставьте список сборок, которые необходимо включить в покрытие. Для сопоставления используется имя dll без расширения. |
Исключить сборки | Предоставьте список сборок, которые следует исключить из покрытия. Для сопоставления используется имя dll без расширения. |
OpenCover / Покрывало | |
Выходные данные смежной сборки | Если ваши тесты зависят от их пути, установите для этого параметра значение true. |
Исключать | Фильтрация выражений для исключения определенных модулей и типов (несколько значений) |
Включать | Фильтрация выражений для включения определенных модулей и типов (несколько значений) |
Исключить пофайлу | OpenCover использует сопоставление с подстановочными знаками *. Coverlet использует подстановку файловой системы |
Исключить по атрибуту | Исключите код с атрибутами на уровне сборки, типа и метода. Добавьте полностью квалифицированные или неквалифицированные типы атрибутов. |
ЗапуститьПараллельно | По умолчанию запускаются тесты OpenCover/Coverlet, а затем выполняется покрытие. Установите значение true, чтобы немедленно запустить покрытие. |
Покрытие кода MS | Каждое из приведенных ниже значений представляет собой массив регулярных выражений, которые необходимо преобразовать в элементы настроек запуска, см. |
МодульПутсИсключение | Исключить — Сопоставляет сборки, указанные по имени сборки или пути к файлу. |
МодульПутсИнклюд | Включить — Сопоставляет сборки, указанные по имени сборки или пути к файлу. |
Названия компанийИсключить | Исключить — сопоставляет сборки по атрибуту Company. |
Названия компанийВключить | Включить — Сопоставляет сборки по атрибуту Company. |
PublicKeyTokens исключить | Исключить — сопоставляет подписанные сборки по токену открытого ключа. |
Токены PublicKeyToken включают | Включить — сопоставляет подписанные сборки по токену открытого ключа. |
ИсточникиИсключить | Исключить — Сопоставляет элементы по пути к исходному файлу, в котором они определены. |
ИсточникиВключить | Включить — Сопоставляет элементы по пути к исходному файлу, в котором они определены. |
АтрибутыИсключить | Исключить — Сопоставляет элементы, имеющие указанный атрибут. Укажите полное имя атрибута |
АтрибутыВключить | Включить — Сопоставляет элементы, имеющие указанный атрибут. Укажите полное имя атрибута |
ФункцииИсключить | Исключить — Сопоставляет процедуры, функции или методы по полному имени, включая список параметров. |
ФункцииВключить | Включить — Сопоставляет процедуры, функции или методы по полному имени, включая список параметров. |
Покрывало | |
RunSettingsOnly | Укажите false для глобальных параметров и параметров проекта, которые будут использоваться для элементов конфигурации сборщика данных Coverlet, если они не указаны в настройках запуска. |
CoverletCollectorDirectoryPath | Укажите путь к каталогу, содержащему файлы сборщика Coverlet, если вам нужны функции, которых нет в версии FCC. |
ПокрывалоКонсольЛокальный | Укажите значение true, чтобы использовать локальную установку консоли Coverlet с помощью собственных инструментов dotnet. |
CoverletConsoleCustomPath | Укажите путь к exe-файлу Coverlet Console, если вам нужны функции, которых нет в версии FCC. |
ПокрывалоКонсольГлобальный | Укажите значение true, чтобы использовать глобальную установку консоли Coverlet с помощью собственных инструментов dotnet. |
Настройки «CoverletConsole» имеют приоритет Local/CustomPath/Global. | |
Открытая обложка | |
OpenCoverRegister | Измените значение по умолчанию, если определение FCC path32 или path64 неверно. |
OpenCoverTarget | При необходимости укажите свою собственную цель. |
OpenCoverTargetArgs | Если вы указываете свою собственную цель, вы также можете указать дополнительные аргументы. FCC предоставляет путь к тестовой dll. |
OpenCoverCustomPath | Укажите путь к открытию exe-файла обложки, если вам нужны функции, которых нет в версии FCC. |
Пороговая сложностьForNPathComplexity | Если сложность npath превышает это значение для метода, метод будет присутствовать на вкладке «горячие точки риска». |
ПорогForCrapScore | Когда оценка дерьма превышает это значение для метода, метод будет присутствовать на вкладке «горячие точки риска». |
Вероятно, вы захотите установить для IncludeReferencedProjects значение true. Это гарантирует, что вы не получите покрытие для тестирования фреймворков — только ваш код.
Coverlet и OpenCover используют выражения фильтра. Фильтровать выражения
Подстановочные знаки
* => соответствует нулю или более символам. Примеры
[*]* => Все типы во всех сборках.
[coverlet.*]Coverlet.Core.Coverage => Класс Coverage в пространстве имен Coverlet.Core, принадлежащий любой сборке, соответствующей Coverlet.* (например, Coverlet.core).
[*]Coverlet.Core.Instrumentation.* => Все типы, принадлежащие пространству имен Coverlet.Core.Instrumentation в любой сборке
[coverlet.*.tests]* => Все типы в любой сборке, начиная с Coverlet. и заканчивая .tests
Опции «Исключить» и «Включить» можно использовать вместе, но «Исключить» имеет приоритет.
Покрытие кода MS использует регулярные выражения. Вы можете включать или исключать сборки или определенные типы и элементы из анализа покрытия кода. Если раздел «Включить» пуст или опущен, то включаются все загруженные сборки, имеющие связанные файлы PDB. Если сборка или член соответствует предложению в разделе «Исключить», они исключаются из покрытия кода. Раздел «Исключить» имеет приоритет над разделом «Включить»: если сборка указана как в «Включении», так и в «Исключении», она не будет включена в покрытие кода.
Вы можете игнорировать метод или весь класс из покрытия кода, применив атрибут [ExcludeFromCodeCoverage], присутствующий в пространстве имен System.Diagnostics.CodeAnaанализ.
Для .Net (не .Net Framework) этот атрибут можно применять на уровне сборки.
Для .Net Framework см. FCCExcludeFromCodeCoverage выше, где описаны аналогичные функции.
Чтобы игнорировать код, которому присвоен другой тип:
Вы также можете игнорировать дополнительные атрибуты, добавляя их в список ExcludeByAttribute. Для Coverlet/OpenCover добавьте добавление в список ExcludeByAttribute (полностью или неквалифицированный). Для покрытия кода MS добавьте в список AttributesExclude. При этом используется сопоставление регулярных выражений.
По умолчанию выходные данные FCC находятся внутри папки Debug каждого тестового проекта. Если вы предпочитаете, вы можете указать папку, в которой будут храниться файлы, выводимые внутри компании и используемые FCC. Оба приведенных ниже метода ищут каталог, содержащий файл .sln, в восходящем каталоге каталога, содержащего первый файл тестового проекта. Если такой каталог решения найден, логика применяется.
Если в каталоге решения есть подкаталог fcc-output, он будет использоваться автоматически.
Альтернативно, если вы укажете FCCSolutionOutputDirectoryName в параметрах, каталог будет создан при необходимости и использован.
Если вы хотите внести свой вклад в этот проект, ознакомьтесь с правилами внесения взносов.
Чтобы клонировать и собрать этот проект самостоятельно, обязательно установите расширение Extensibility Essentials для Visual Studio, которое включает некоторые функции, используемые в этом проекте.
Апач 2.0
Покрывало
Открытая обложка
Генератор отчетов
Поставщик | Тип | Связь |
---|---|---|
ПайПал | Один раз | |
Либерапей | повторяющийся |