首页 > 解决方案 > 如何为 SonarQube 创建自己的 C# 自定义规则?

问题描述

我一直在做一些研究。我发现的是一个很好的示例列表,但这里有其他语言。

我还查看了sonar-dotnet。但它看起来与其他实现不相似。

最后,老实说,这可能是我最后一次机会,我快速浏览了FxCop 自定义规则,我不确定什么是正确的方法。

我正在尝试做的只是一个基本的 c# 规则,可以像这样由 sonar 预定义的那样进行审查。

我的意思是,使用Noncompliant CodeCompliant Solution

标签: c#sonarqubesonarqube-scan

解决方案


您指出的sonar-custom-rules-examples都是用 Java 编写的,并使用用 Java 编写的各种目标语言的解析器。C# 和 VB.NET的sonar-dotnet分析器是使用Microsoft 提供的Roslyn 框架用 C# 编写的。

如果您想为 C# 编写自己的自定义规则,那么编写 Roslyn 分析器绝对是最简单的方法(Roslyn 替换了 FxCop,后者现已过时)。但是,有许多免费的第三方 Roslyn 分析器可用,因此可能有人已经编写了至少一些您想要的规则。查看NuGet以了解可用的内容。

接下来,您希望 Roslyn 分析器提出的问题出现在 SonarQube 中。如果您使用的是新版本的 SonarQube (v7.4+)、SonarScanner for MSBuild (v4.4+) 和 SonarC# 插件 (v7.6+),则第三方 Roslyn 分析器引发的问题将自动作为通用问题被导入。有关更多信息,请参阅文档

通用问题有几个重大限制,就像无法选择在 SonarQube UI 中运行的规则一样。如果您想要更全功能的体验(或者如果您使用的是旧版本的 SonarQube),您可以使用SonarQube Roslyn SDK生成一个包装 Roslyn 分析器的自定义 SonarQube 插件。使用 SDK 很简单:它是一个针对 Roslyn 分析器运行的 exe,它会为您生成一个 SonarQube 插件 jar。


推荐阅读