我目前在让 StyleCop.Analyzers 与 SonarQube 一起工作时遇到问题。我正在使用 v6.7 的 SonarQube,并且我已经尝试过使用多个版本的 SonarC# 插件。
将自定义规则导入 SonarQube 的推荐方法似乎是使用 SonarQube Roslyn SDK 工具(https://github.com/SonarSource/sonarqube-roslyn-sdk)从 Roslyn 分析器生成插件,在这种情况下StyleCop.Analyers NuGet 包。
这似乎对包的 v1.0.0 和 v1.1.0-beta 都有效,并且两者的规则都显示在 SonarQube 中 - 但是使用最新版本的 SonarC# 将无法正确扫描项目,并且数字发现的 C# 代码行数和问题为 0。但是,如果您降级到插件的 v5.11,项目会被正确扫描,它会找到大约 2k 行代码,并且尽我所能正确显示任何 StyleCop 警告告诉。
在 VSTS 构建中,它看起来好像插件正在工作,因为 StyleCop 警告确实出现在 MSBuild 阶段(我的理解是 SonarQube 规则覆盖了构建中的任何代码分析规则),但它们根本没有显示在SonarQube 中项目页面上的摘要。
SQ Roslyn SDK 项目表示它与 v4.5 或更高版本的 C# 插件兼容 - 但它看起来并没有得到积极维护。
我在 SonarQube 日志中看不到任何错误,但在 VSTS 中的“完成 SonarQube 分析”任务中有一些警告:
2018-01-03T15:07:50.0734421Z WARNING: WARN: Protobuf file not found: null\output-cs\encoding.pb
2018-01-03T15:07:50.0734783Z WARNING: WARN: Protobuf file not found: null\output-cs\metrics.pb
2018-01-03T15:07:50.0735152Z WARNING: WARN: Protobuf file not found: null\output-cs\issues.pb
2018-01-03T15:07:50.0735516Z WARNING: WARN: Protobuf file not found: null\output-cs\token-type.pb
2018-01-03T15:07:50.0735888Z WARNING: WARN: Protobuf file not found: null\output-cs\symrefs.pb
2018-01-03T15:07:50.0736289Z WARNING: WARN: Protobuf file not found: null\output-cs\token-cpd.pb
不确定这是否是 C# 插件或 SDK 工具的问题 - 其他人有任何类似的问题吗?除了使用旧版本的 C# 插件之外,还有其他解决方法吗?