【问题标题】:SonarQube/SonarLint/Visual Studio: Use one ruleset fo all projects in solutionSonarQube/SonarLint/Visual Studio:对解决方案中的所有项目使用一个规则集
【发布时间】:2023-04-02 08:55:02
【问题描述】:

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

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

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

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

【问题讨论】:

  • 我有点惊讶于我的问题没有收到任何答案(SonarLint 团队显然正在监视 SO 上的 SonarLint 标签),因为这似乎是一个相当基本的要求,并且我希望许多团队都有相同的用例。我的问题有什么愚蠢的吗?如果是这种情况,请提供一个链接或类似的东西......我是在混合 SonarLint 和 VS 职责,还是我的用例根本不可能?再次,请分享您的知识......提前致谢。
  • 在解决方案级别更改规则集将应用于项目级别,如果该级别的规则集未更改。如果您使用 XML 编辑器打开文件,您会看到不同之处。

标签: .net visual-studio-2015 sonarqube sonarlint sonarlint-vs


【解决方案1】:

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

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

【讨论】:

  • 这看起来是朝着正确方向迈出的一大步 - 感谢您通过这个 SO 问题告诉我!
【解决方案2】:

创建这些附加规则集文件是有原因的。实际上有多个:

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

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

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

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

【讨论】:

  • 感谢您的回答!但是,有些事情我仍然不清楚。我当然看到需要为不同的项目采用不同的规则集,但我认为为每个项目设置单独的规则集是一场维护噩梦(我承认我没有理解你关于“解决方案规则集包含在项目规则集”——毕竟,我们将有 1 个解决方案和许多项目规则集,那么前者如何包含在后者中?)。待定...
  • 我们想到的是一个解决方案规则集作为所有项目的基础,以及项目规则集(仅)在需要定制某些项目的需求时,例如添加或禁用从解决方案规则集中“继承”的规则。女巫SonarQube是否有可能发生这样的事情?您能否指出该用例的相关文档?再次感谢您的见解...
  • 不,Sonar 中的集合将成为基线,对所有项目都有效。 4.something 删除了在同一个 sonarqube 项目中拥有不同质量配置文件的能力。因此,Sonar 中的内容将成为所有项目的基准。从持续改进的角度来看,我不喜欢它。
  • 添加规则可能的。这是第二个项目规则集的用武之地。我从与构建功能的团队的讨论中获得了我的见解。随着底层技术的进步,还有很多东西需要找到它的最终位置。
猜你喜欢
  • 1970-01-01
  • 2017-06-05
  • 2018-10-14
  • 1970-01-01
  • 1970-01-01
  • 2010-09-24
  • 1970-01-01
  • 2012-06-27
  • 1970-01-01
相关资源
最近更新 更多