SonarQube/SonarLint/Visual Studio:对解决方案中的所有项目使用一个规则集

SonarQube/SonarLint/Visual Studio: Use one ruleset fo all projects in solution

我们目前正在评估 SonarQube/SonarLint 在我们的 .NET 应用程序中的使用情况。到目前为止,我们对所见所闻感到非常满意(顺便说一句,将 SonarQube 带到这么远的荣誉 - 我几年前在我的博士项目中使用过它,从那以后它有了很大的改进!)。 =12=]

但是,有一件事有点令人惊讶:当我将我的 SonarLint 实例连接到我们的 SonarQube 服务器(它工作得很好)并开始同步绑定的项目时,SonarLint 开始下载 nuget 包(这是预期的)然后为我们解决方案的每个项目创建一个甚至两个 .ruleset 文件(除了文件 SonarQube/<solution name>CSharp.ruleset,我认为它是解决方案范围的规则集)。

我期望并且更喜欢的是仅对完整解决方案有效的单个规则集(并且可能选择为有意义的项目(例如,测试项目)覆盖该规则集)。

这种行为是否可能,也就是说,我错过了什么吗?到目前为止,文档是我确定的唯一缺少 SonarLint 的领域。

创建这些额外的规则集文件是有原因的。其实有多个:

  • 即允许您设置所有项目必须遵守的基线,但为具有特定类型代码的项目启用附加规则。您可能启用了一些特定于 Sharepoint 项目的 MSOCAF 规则,这对您的 Unittest 或 Windows 服务项目没有意义

  • 比如说,当你修复项目中的技术债务时,你可以为整个解决方案设置一个基线,然后慢慢收紧单个项目的规则集,这样你就可以将清理工作集中在一个特定的项目。而不是必须同时清除解决方案中所有项目的特定规则或规则集。

每次与 SonarQube 同步时,其中一个项目规则集文件将被覆盖。另一个将保持原样。允许您保存您的自定义并仍然允许您安全地将更改同步到 SonarQube 基线。

如果我没记错的话,解决方案规则集包含在项目规则集中,就像您存储自定义项的规则集一样。目前我手边没有 SonarQube 服务器来验证哪个规则集文件服务器的用途,但这就是它背后的原因。

我在以下博客中详细介绍了拥有多个规则集的好处 post:SonarLint for VisualStudio 2.1 released, brings consistency with MSBuild, navigation to SonarQube and notifications

每个项目有一个规则集,如果您想加强解决方案的质量定义,可以自定义,还有一个对应于 SonarQube 质量配置文件(符合 SonarQube 中的治理)