Программные исключения покрытия в SonarQube MSBuild runner - PullRequest
0 голосов
/ 24 мая 2018

Есть ли способ программно исключить артефакты из анализа Sonar с помощью сканера MSBuild?

У нас есть несколько различных решений Visual Studio в нашем репозитории git.Почти все эти решения используют проекты, содержащие общий код.Я хочу исключить покрытие кода из этих общих проектов - но только для определенных проектов Sonar.

Всегда исключать проект просто и задокументировано путем добавления раздела <PropertyGroup> в .csproj.

Добавление аргумента /d:sonar.coverage.exclusions="**/MyCommonCode/**" в сканер MSBuild, по-видимому, ничего не делает и не добавляет шаблоны исключения в сам сонар.

Обоснование

Я хочу поддерживать точные показатели покрытия кода для кода, используя эти общие проекты.Если бы общий код имел 100 000 строк и был хорошо протестирован, но мой проект имел только 10 000 строк и имел нулевые тесты, покрытие кода Sonar было бы искусственно благоприятным.

Вместо этого я намереваюсь создать отдельный проект Sonar, содержащий толькоохват этого общего кода.

Мы используем SonarQube 7.0 и SonarScanner для MSBuild 4.0.2.

1 Ответ

0 голосов
/ 07 июня 2018

Вы можете добавить условие к фрагменту MSBuild, на который вы ссылались, и использовать его для управления включением в анализ общих проектов, например,

<PropertyGroup> <!-- Exclude the project from analysis --> <SonarQubeExclude Condition="$(ExcludeCommonCode)=='true'" >true</SonarQubeExclude> </PropertyGroup>

...а затем передайте аргумент / p: ExcludeCommonCode = true в MSBuild для сборок решений, для которых вы не хотите анализировать общий код.

За исключением общих проектов в этомway делает больше, чем просто исключает эти проекты из покрытия кода: это означает, что код вообще не будет анализироваться (без проблем и без метрик), и эти проекты MSBuild вообще не будут отображаться в этом проекте SonarQube.Однако, я думаю, это то, что вам нужно, если у вас есть отдельный проект SonarQube для анализа общих проектов.

...