繁体   English   中英

SonarQube MSBuild运行程序中的程序性覆盖排除项

[英]Programmatic coverage exclusions in SonarQube MSBuild runner

有没有一种方法可以使用MSBuild Scanner以编程方式从Sonar分析中排除工件?

我们的git储存库中有许多不同的Visual Studio解决方案。 几乎所有这些解决方案都使用包含共享代码的项目。 我希望从这些常见项目中排除代码覆盖范围-但仅适用于某些Sonar项目。

总是不包括一个项目是直截了当的并且记录通过添加<PropertyGroup>在部分.csproj

/d:sonar.coverage.exclusions="**/MyCommonCode/**"参数添加到MSBuild扫描器似乎无济于事,也没有在Sonar本身中添加排除模式。

基本原理

我希望使用这些常见项目为代码维护准确的代码覆盖率指标。 如果通用代码具有100,000行并且经过了良好的测试,但是我的项目只有10,000行并且具有零测试,那么Sonar代码覆盖范围将是人为有利的。

相反,我打算有一个单独的Sonar项目,其中仅包含此通用代码的内容。

我们正在使用SonarQube 7.0和用于MSBuild 4.0.2的SonarScanner。

您可以将条件添加到您所引用的MSBuild片段中,并使用该条件来控制是否在分析中包含公共项目,例如

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

...然后将参数/ p:ExcludeCommonCode = true传递给MSBuild,以生成您不想分析其通用代码的解决方案。

以这种方式排除普通项目并不仅仅是将那些项目排除在代码范围之外:这意味着根本不会分析代码(没有问题,也没有指标),并且这些MSBuild项目不会出现在该SonarQube项目下所有。 但是,如果您有一个单独的SonarQube项目来分析常见项目,那么我想这就是您想要的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM