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

时间:2017-07-18 16:24:02

标签: sonarqube

我有一个广泛的源代码树,我只想分析树中的一些目录。在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.629SonarQube 6.4

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

目前,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)

进行测试