gpt4 book ai didi

c# - 将 Visual Studio 2015 规则集导出/导入到 SonarQube

转载 作者:可可西里 更新时间:2023-11-01 08:48:11 27 4
gpt4 key购买 nike

环境:我们正在 Visual Studio 2015 中构建 C# 代码,并使用 Visual Studio 2015 中可用的默认规则集生成代码分析报告。

问题陈述:在与我们的持续集成环境 Jenkins 集成的 SonarQube 中运行相同的代码时,我们得到不同的代码分析报告,因此我们想要导入 Visual Studio 的默认规则集2015 将在 SonarQube 5.6 或更高版本中使用(如果有解决方案,我准备升级 Sonar)。但问题是 SonarQube 无法识别以 CS 开头的规则集,例如..

<Rules AnalyzerId="Microsoft.CodeAnalysis.CSharp" RuleNamespace="Microsoft.CodeAnalysis.CSharp">
<Rule Id="AD0001" Action="Error" />
<Rule Id="CS0028" Action="Error" />
<Rule Id="CS0078" Action="Error" />
<Rule Id="CS0105" Action="Error" />
<Rule Id="CS0108" Action="Error" />
<Rule Id="CS0109" Action="Error" />

我已经安装了以下插件:

  1. C# 代码分析器
  2. 用于 C# 的 CodeCracker

最佳答案

简答:没有支持的方法来执行此操作。但是您可以尝试稍微修改一下来解决这个问题。

长答案

您需要解决多个问题:

  • MsBuild 的 SonarQube 扫描器(您可能用于将分析结果推送到 SonarQube 服务器)正在从 SQ 服务器拉下事件规则。然后通过 ruleset 参数将其传递给 msbuild 中的 CoreCompile 任务。因此,即使您创建了自己的参数,也会将其从参数中删除并更改为 Sonar 参数。
  • 结束步骤将问题推送到 SQ 服务器,但 SQ 服务器将忽略任何未知的规则 ID。因此,在您的情况下,所有 CS* 问题都将被忽略。

目前我认为这些问题没有简单的解决方案。一般建议是创建您的 SQ 插件,它定义所有 CS* 规则。将这些规则放入规则集文件中(可能在开始和构建阶段之间),解析输出的 json 文件并将结果发送到服务器。这会奏效,但这是一项相当艰巨的任务,而且有很多地方可能会失控。

另一种方法是查看 SonarQube Roslyn SDK .此 SDK 让您可以从 Roslyn nuget 分析器创建 SonarQube 插件。如果您创建这样一个插件,您会看到它嵌入了 2-3 个 XML 文件。这些文件描述了插件的规则。为了支持你的情况,我会:

  • 使用一个规则创建一个 Roslyn 分析器包。 (不报告任何问题。)
  • 更改嵌入文件以定义CS* 规则。获得所有 CS* 规则的列表可能不是那么容易,但是 this可能是一个好的开始。
  • 将SQ插件部署到SQ服务器,希望它能正常工作。

关于c# - 将 Visual Studio 2015 规则集导出/导入到 SonarQube,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43131664/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com