Jenkins 的 sonar msbuild 运行:必须设置 sonar.cs.fxcop.assembly

sonar msbuild run from Jenkins: sonar.cs.fxcop.assembly must be set

我已经完成了之前关于该主题的问题,但无论给出什么答案似乎都不适合我

我的设置是 - 安装了 Microsoft Visual Studio Community 2017 - SonarQube 服务器版本 5.6.2 - SonarQube MSbuild 扫描仪:4.2.0.1214

我在 运行

时得到的日志

传感器org.sonar.plugins.csharp.CSharpSensor(完成)|时间=2847ms 信息:传感器 org.sonar.plugins.csharp.CSharpFxCopProvider$CSharpFxCopSensor 信息:-------------------------------------------- ---------------------- 信息:执行失败 信息:-------------------------------------------- ---------------------- 信息:总时间:17.829s 信息:最终内存:21M/421M 信息:-------------------------------------------- ---------------------- 错误:SonarQube 扫描仪执行期间出错 错误:必须设置 属性 "sonar.cs.fxcop.assembly" 并且必须构建项目以执行 FxCop 规则。这个 属性 可以由 Analysis Bootstrapper for Visual Studio Projects 插件自动设置,参见:http://docs.codehaus.org/x/TAA1Dg.If 你想跳过未构建项目的分析,设置 属性 "sonar.visualstudio.skipIfNotBuilt".

我不知道的是 - 我怎么知道在构建过程中启用了 fxcop,如果这有意义并且是否需要做任何事情? - 当我看到的所有 post 都倾向于说 "that should not happen if using sonar msbuild and visual studio"

时,为什么我会收到此错误消息

谢谢

关于如何支持 FxCop 的历史有点复杂,这取决于您使用的是哪个版本的 SonarC# 插件以及您 运行 正在使用哪个版本的 Scanner for MSBuild。 MSBuild 的 SonarC# plugin/Scanner 中对 FxCop 的本机支持已弃用一段时间,最终在 version 4.0.

中从 MSBuild 的扫描器中删除

我怎么知道在构建过程中启用了 fxcop?

检查您在 SonarQube 服务器上安装了哪些插件。我的猜测是您安装了旧版本的 SonarC# 插件(v5.4 之前)或安装了社区 FxCop 插件。此外,如果您查看项目的质量配置文件,您会看到存储库 FxCop / 代码分析 C# 中的一些规则已启用。

由您决定是否要 运行 FxCop 规则作为构建的一部分。 SonarC# 插件现在原生实现了所有最有用的 FxCop 规则,因此 SonarSource 推荐的方法只是将 SonarC# 插件用于新项目。

如果您使用的是 v4 或更高版本的 Scanner for MSBuild 并且确实想要上传 FxCop 问题,请检查您是否安装了最新版本的 FxCop Community 插件并按照 Use with 中的说明进行操作SonarQube Scanner for MSBuild v4.0 插件 Readme 部分。

如果您不想上传此特定项目的 FxCop 问题,您可以停用质量配置文件中的所有 FxCop 规则。如果您不想看到任何项目的 FxCop 问题,您可以卸载已安装的 FxCop 插件,并升级到更新版本的 SonarC# 插件(注意:SonarQube 5.6.2 是相当旧的版本,因此您除非您先升级 SonarQube 服务器,否则将无法安装最新版本的 SonarC# 插件。