3

我们目前正在评估将 SonarQube/SonarLint 用于我们的 .NET 应用程序的过程。到目前为止,我们对所见所闻感到非常满意(顺便说一句,SonarQube 能走到这一步,我很荣幸 - 几年前我在我的博士项目中使用过它,从那时起它有了很大的改进!)。

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

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

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

4

2 回答 2

2

我在以下博客文章中提供了有关拥有多个规则集的更多详细信息:SonarLint for VisualStudio 2.1 发布,带来与 MSBuild 的一致性,SonarQube 导航和通知

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

于 2016-04-19T13:18:04.390 回答
1

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

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

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

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

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

于 2016-04-08T11:42:52.457 回答