我们目前正在评估SonarQube / SonarLint在.NET应用程序中的使用。我们对迄今为止所看到的内容感到非常满意(并且,顺便说一下,赞扬SonarQube到目前为止的荣誉 - 几年前我已经将它用于我的博士项目,并且从那时起它已经有了很大的改进!)。 / p>
然而,有一件事有点令人惊讶:当我将SonarLint实例连接到我们的SonarQube服务器(工作正常)并开始同步绑定项目时,SonarLint开始下载nuget包(这是预期的那种)然后为我们的解决方案的每个项目创建了一个甚至两个.ruleset文件(除了文件SonarQube/<solution name>CSharp.ruleset
,我假设它是解决方案范围的规则集)。
我期望并且更喜欢的只是对整个解决方案有效的单个规则集(并且可能是对有意义的项目(例如,测试项目)覆盖该规则集的选项。)
这种行为是否可行,即我是否遗漏了什么?到目前为止,文档是我发现SonarLint缺乏的唯一区域。
答案 0 :(得分:2)
我在以下博客文章中提供了更多关于拥有多个规则集的兴趣的详细信息:SonarLint for VisualStudio 2.1 released, brings consistency with MSBuild, navigation to SonarQube and notifications
每个项目都有一个规则集可自定义,以便您希望加强解决方案质量的定义,以及一个与SonarQube质量配置文件相符的规则(符合SonarQube中的治理)
答案 1 :(得分:1)
创建这些附加规则集文件的原因是有原因的。实际上有多个:
这是为了允许您设置所有项目必须遵守的基线,但是为具有特定类型代码的项目启用附加规则。您可能启用了一些特定于Sharepoint项目的MSOCAF规则,这些规则对您的Unittest或Windows服务项目没有意义
比如说,当您在项目中修复技术债务时,您可以为整个解决方案设置基线,并慢慢收紧各个项目的规则集,以便您可以将清理工作集中在特定项目上。而不是必须同时在解决方案中的所有项目中清除特定规则或规则集。
每次与SonarQube同步时,都会覆盖其中一个项目规则集文件。当你离开它时,另一个将保留。允许您保存自定义设置,并允许您安全地将更改同步到SonarQube基准。
如果我正确记住这一点,则解决方案规则集将包含在项目规则集中,存储自定义项的规则集也是如此。目前我手头没有SonarQube服务器来验证哪个规则集文件服务器有什么用途,但这就是它背后的原因。