Я использую Visual Studio 2019 Professional. Около полутора лет я регулярно составлял отчеты о покрытии кода, запуская пакетный файл, который вызывает OpenCover для запуска анализа, а затем запускает ReportGenerator для обработки данных в хороший отчет. Это работает просто отлично.
Но меня всегда беспокоило, что у меня есть несколько классов объектов, которые, наверное, не стоит включать в отчет, так как они просто состоят из кучи свойств с геттерами и сеттерами. Итак, вчера я читал о том, как удалить такие классы из результатов OpenCover.
Я применил атрибут [ExcludeFromCodeCoverage] к двум классам, просто для начала. Затем я изменил единственную строку командного файла, которая вызывает OpenCover, следующим образом:
"%~dp0packages\OpenCover.4.7.922\tools\OpenCover.Console.exe" -register:user -target:"C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\MSTest.exe" -targetargs:"/testcontainer:\"%~dp0UnitTestProject1\bin\Debug\AppTESTS.dll\"" -skipautoprops -excludebyattribute:"System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage*" -hideskipped:All -output:"%~dp0GeneratedReports\Raw_Report.xml"
Обратите внимание, что единственными фактическими ИЗМЕНЕНИЯМИ, которые я внес в эту строку, были:
- -skipautoprops
- -excludebyattribute:System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage*
- -скрыть: все
Теперь основная проблема связана с атрибутом -excludebyattribute.
Я пробовал разные варианты:
- *.ExcludeFromCodeCoverage*
- *.ExcludeFromCodeCoverageAttribute
- System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute
- (и, возможно, некоторые другие, которые я забыл)
И я все еще вижу два класса, которые пытаюсь исключить из вывода.
Отчаянно пытаюсь понять, что я здесь делаю не так.
Может ли тот факт, что я работаю в Visual Studio 2019 Professional, которая на самом деле не включает встроенную функцию/окно покрытия кода Visual Studio, иметь какое-то отношение к этому? Я имею в виду, что единственная претензия Visual Studio к двум добавленным атрибутам [ExcludeFromCodeCoverage] заключалась в том, что мне нужно было добавить использование System.Diagnostics.CodeAnalysis; каждому из двух файлов.
Спасибо!