SonarQube.Scanner.MSBuild.exe:如何指定sonar.sources?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SonarQube.Scanner.MSBuild.exe:如何指定sonar.sources?相关的知识,希望对你有一定的参考价值。

我有一个广泛的源代码树,我只想分析树中的一些目录。在SonarQube文档中,我找到了sonar.sources选项的描述,在这种情况下应该有所帮助。

首先,我尝试将其作为命令行参数/d:sonar.source=发送... SonarQube.Scanner.MSBuild.exe begin调用接受参数,但它没有任何区别。 SonarQube.Scanner.MSBuild.exe end调用不接受参数。

我也尝试在配置文件SonarQube.Analysis.xml中指定它,它也没有任何区别(虽然sonar.exclusions在配置文件中运行良好)。

SonarQube的Administration > Analysis Scope网页没有sonar.sources

有没有办法让sonar.sourcesSonarQube.Scanner.MSBuild.exe一起工作?

我使用sonar-scanner-msbuild-3.0.0.629and SonarQube 6.4

答案

用于MSBuild的SonarQube扫描仪将根据您的解决方案文件自动检测并包含源。而不是试图通过sonar.sources将分析缩小到子集,允许SonarQube Scanner for MSBuild执行其正常的发现工作,而narrow analysis scope则使用排除。具体来说,设置sonar.exclusions(项目管理>分析范围>文件)以省略要跳过的文件/目录。

或者,您可以使用sonar.inclusions(在界面中大致相同的位置找到)将分析范围缩小到仅要分析的文件。如果“包含”是比“排除”更小的子集,则这可能更容易。但是,您应该只使用这两个设置中的一个或另一个。

另一答案

目前,sonar.exclusions仅在项目中工作,这意味着任何匹配仅适用于项目结构内的文件/文件夹。这反过来意味着我们不能限制整个项目,据我所知。相反,我们需要提出一些其他选择。

一种是根据我们实际想要分析的文件未使用的某种模式命名每个测试文件,例如*Tests.cs

这意味着我们可以使用sonar.exclusions=**/*Tests.cs

另一种方法是将所有源文件放在子目录中的测试项目中交配一些模式,同样是我们想要分析的项目/文件不使用的模式。例如my-project/tests/stuff.cs

使用sonar.exclusions=tests/**/*

总而言之,我发现这种行为非常烦人 - 能够排除整个文件夹/项目更有用。不得不依赖惯例迟早会破裂,需要更多的维护和知识。

Sonar 6.7.1 (build 35068)MSBuild Scanner 4.0.2SonarC# 6.7 (build 4267)测试

以上是关于SonarQube.Scanner.MSBuild.exe:如何指定sonar.sources?的主要内容,如果未能解决你的问题,请参考以下文章

SonarQube MSBuild 无法排除文件

缺少必需的参数:/ key:[Sonarqube项目密钥]

Sonarqube:缺少“报告”参数

上传NUnit的单元测试结果和OpenCover的单元测试覆盖率到SonarQube服务中