SonarQube 覆盖规则集和分析器
SonarQube overwrites ruleset and analyzers
我有一个使用 StyleCop.Analyzers(基于 Roslyn)的 C# 项目。当我们使用 msbuild 14 编译此项目时,我们看到 StyleCop.Analyzers 引发的以下警告:
warning SA1005: Single line comment must begin with a space.
到目前为止,还不错。这就是我们所期望的。
然后,我们创建了一个简单的脚本,在 SonarQube msbuild 中执行此编译 start/stop:
cd MyProjectRoot
"D:\MSBuild.SonarQube.Runner-2.0\MSBuild.SonarQube.Runner.exe" begin /k:test /n:test /v:1.0.0 /d:sonar.host.url=https://mysonar.com/ /d:sonar.login=abc
"C:\Program Files (x86)\MSBuild.0\bin\msbuild.exe" /p:Configuration=Debug /t:Rebuild
"D:\MSBuild.SonarQube.Runner-2.0\MSBuild.SonarQube.Runner.exe" end
当我们 运行 这样做时,我们有一些奇怪的事情:我们没有看到以前的警告 SA1005。
通过查看 msbuild 输出,我们看到当 msbuild 不是 在 SonarQube start/stop 中调用时,我们有以下内容:
C:\Program Files (x86)\MSBuild.0\bin\csc.exe ... /analyzer:..\packages\StyleCop.Analyzers.1.0.0\analyzers\dotnet\cs\Newtonsoft.Json.dll /analyzer:..\packages\StyleCop.Analyzers.1.0.0\analyzers\dotnet\cs\StyleCop.Analyzers.CodeFixes.dll /analyzer:..\packages\StyleCop.Analyzers.1.0.0\analyzers\dotnet\cs\StyleCop.Analyzers.dll
但是当 在 SonarQube start/stop 中使用 StyleCop 时,我们有:
C:\Program Files (x86)\MSBuild.0\bin\csc.exe ... /analyzer:C:\Users\myuser\AppData\Local\Temp\.sonarqube\.static\csharp_1.11.0\SonarAnalyzer.zip\SonarAnalyzer.CSharp.dll /analyzer:C:\Users\myuser\AppData\Local\Temp\.sonarqube\.static\csharp_1.11.0\SonarAnalyzer.zip\SonarAnalyzer.dll
如您所见,我们使用的分析仪不同!事实上,我根本没有使用我配置的分析器。此外,我们没有使用相同的规则集。我没有在 msbuild 输出中显示它,但你可以相信我 ;)
所以两个问题:
- 在启用 SonarQube 的情况下进行编译时,我们如何保留配置的代码分析器?
- 在启用 SonarQube 的情况下进行编译时,如何保留配置的规则集?
注意我用的是:
- SonarQube msbuild 运行ner 2.0
- SonarQube 服务器 5.3
- SonarQube c# 插件 5.2
SonarQube 覆盖了分析期间使用的规则集。如果您希望您的规则集相同,您需要在 SonarQube 中设置质量配置文件以匹配您当前的规则集。如果你想使用它,有一个 VS 插件可以将你的规则集从 SonarQube 服务器同步到你的本地项目。
StyleCop分析器需要使用以下SDK打包分析器:https://github.com/SonarSource-VisualStudio/sonarqube-roslyn-sdk/blob/master/README.md
一旦你这样做了,这些规则应该可以作为质量门规则在声纳中使用,并且会在分析过程中自动运行。
我有一个使用 StyleCop.Analyzers(基于 Roslyn)的 C# 项目。当我们使用 msbuild 14 编译此项目时,我们看到 StyleCop.Analyzers 引发的以下警告:
warning SA1005: Single line comment must begin with a space.
到目前为止,还不错。这就是我们所期望的。
然后,我们创建了一个简单的脚本,在 SonarQube msbuild 中执行此编译 start/stop:
cd MyProjectRoot
"D:\MSBuild.SonarQube.Runner-2.0\MSBuild.SonarQube.Runner.exe" begin /k:test /n:test /v:1.0.0 /d:sonar.host.url=https://mysonar.com/ /d:sonar.login=abc
"C:\Program Files (x86)\MSBuild.0\bin\msbuild.exe" /p:Configuration=Debug /t:Rebuild
"D:\MSBuild.SonarQube.Runner-2.0\MSBuild.SonarQube.Runner.exe" end
当我们 运行 这样做时,我们有一些奇怪的事情:我们没有看到以前的警告 SA1005。
通过查看 msbuild 输出,我们看到当 msbuild 不是 在 SonarQube start/stop 中调用时,我们有以下内容:
C:\Program Files (x86)\MSBuild.0\bin\csc.exe ... /analyzer:..\packages\StyleCop.Analyzers.1.0.0\analyzers\dotnet\cs\Newtonsoft.Json.dll /analyzer:..\packages\StyleCop.Analyzers.1.0.0\analyzers\dotnet\cs\StyleCop.Analyzers.CodeFixes.dll /analyzer:..\packages\StyleCop.Analyzers.1.0.0\analyzers\dotnet\cs\StyleCop.Analyzers.dll
但是当 在 SonarQube start/stop 中使用 StyleCop 时,我们有:
C:\Program Files (x86)\MSBuild.0\bin\csc.exe ... /analyzer:C:\Users\myuser\AppData\Local\Temp\.sonarqube\.static\csharp_1.11.0\SonarAnalyzer.zip\SonarAnalyzer.CSharp.dll /analyzer:C:\Users\myuser\AppData\Local\Temp\.sonarqube\.static\csharp_1.11.0\SonarAnalyzer.zip\SonarAnalyzer.dll
如您所见,我们使用的分析仪不同!事实上,我根本没有使用我配置的分析器。此外,我们没有使用相同的规则集。我没有在 msbuild 输出中显示它,但你可以相信我 ;)
所以两个问题:
- 在启用 SonarQube 的情况下进行编译时,我们如何保留配置的代码分析器?
- 在启用 SonarQube 的情况下进行编译时,如何保留配置的规则集?
注意我用的是:
- SonarQube msbuild 运行ner 2.0
- SonarQube 服务器 5.3
- SonarQube c# 插件 5.2
SonarQube 覆盖了分析期间使用的规则集。如果您希望您的规则集相同,您需要在 SonarQube 中设置质量配置文件以匹配您当前的规则集。如果你想使用它,有一个 VS 插件可以将你的规则集从 SonarQube 服务器同步到你的本地项目。
StyleCop分析器需要使用以下SDK打包分析器:https://github.com/SonarSource-VisualStudio/sonarqube-roslyn-sdk/blob/master/README.md
一旦你这样做了,这些规则应该可以作为质量门规则在声纳中使用,并且会在分析过程中自动运行。