c# - 如何为 SonarQube 创建自己的 C# 自定义规则?
问题描述
我一直在做一些研究。我发现的是一个很好的示例列表,但这里有其他语言。
我还查看了sonar-dotnet。但它看起来与其他实现不相似。
最后,老实说,这可能是我最后一次机会,我快速浏览了FxCop 自定义规则,我不确定什么是正确的方法。
我正在尝试做的只是一个基本的 c# 规则,可以像这样由 sonar 预定义的那样进行审查。
我的意思是,使用Noncompliant Code和Compliant Solution。
解决方案
您指出的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。
推荐阅读
- lua - Computercraft 错误尝试在 turtle.inspectDown() 返回值上调用 nil
- python - GCP 自定义预测例程无法包含 setup.py 中指定的 jsonschema 依赖项
- python - Python 中的“主”函数
- python - 无法将 numpy 数组加载到“model.fit”中
- xcode - 使用沙盒帐户测试 Mac 应用订阅 - 日期错误问题
- mysql - AWS 是否提供对 RDS MySQL 的支持?
- python - 如何在 python 中加入一个可迭代对象(字符串连接)?
- node.js - 为表 Postgres 续集缺少的 FROM 子句条目
- html - 带有 CSS 编码的 HTML
- react-native - 回答另一个调查问题回来后,我需要显示已检查的项目