如何使用 Resharper Sonar 插件中的 DotSettings 导入功能?

How to use the DotSettings import feature in the Resharper Sonar plugin?

用于 Sonar 的 Resharper 插件的新版本 (2.0) 已扩展,具有导入现有 Resharper DotSettings 文件的功能。 但是,如果我在创建质量配置文件时设置了一个设置文件,则它的设置不会被提取。

我尝试使用以下简单的 DotSettings 文件,其中唯一的设置是禁用私有字段名称的 _ 前缀:

<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
    <s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=PrivateInstanceFields/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /&gt;</s:String>
</wpf:ResourceDictionary>

但即使在指定上述 DotSettings 文件创建我的质量配置文件并使用此质量配置文件分析项目后,我仍然遇到 Name 'xyz' does not match rule 'Instance fields (private)'. Suggested name is '_xyz'. 错误。

此外,如果我尝试从永久链接选项卡下载我的质量配置文件的设置文件,它包含一堆规则,但它不包含我在导入的 DotSettings 文件中的规则。

这是什么原因?我做错了什么吗?

更新:我环顾四周,但我变得更加困惑。我已经看到 运行ner 的一个新版本叫做 "MSBuild SonarQube Runner",但是还有一个 运行ner 简单地叫做 "SonarQube Runner",我们一直在使用到现在。
所以普通的 SonarQube Runner 没有被弃用,但是对于使用 Resharper 的 .NET 项目,我们应该开始使用 MSBuild SonarQube Runner,这样我们就可以指定一个自定义的 DotSettings 文件来使用 运行宁inspectcode.exe?或者我们应该从命令行手动 运行 检查代码?

所有 .NET 项目现在都应该使用与 Microsoft 联合开发的 MSBuild SonarQube Runner 进行分析,它为 .NET 用户提供了最佳体验。

因此,现在已弃用 sonar-runner 用于 .NET 项目。对于 COBOL、PL/SQL 和其他许多其他语言(不包括 C# 和 VB.NET),sonar-runner 仍然是分析项目的推荐方式。

自从SonarQube ReSharper 2.0 版插件发布以来,重用报告模式现在是首选模式。这意味着我们希望您启动 inspectcode.exe 并生成报告。然后,在启动 MSBuild SonarQube Runner 时,将 sonar.resharper.cs.reportPath 属性 设置为该报告的路径,并将 sonar.resharper.solutionFile 设置为解决方案文件的路径。

以下是使用 R# 的命令行 inspectcode.exe 工具和 MSBuild SonarQube Runner 分析项目的步骤:

  1. inspectcode.exe/报告=[report path][solution path]
  2. MSBuild.SonarQube.Runner.exe 开始 /k:[SQ Project Key] /n:[SQ Project Name /v:[SQ Project Version] /d:sonar.resharper.cs.reportPath=[report path] / d:sonar.resharper.solutionFile=[solution path]
  3. msbuild
  4. MSBuild.SonarQube.Runner.exe结束

您有责任使用与 SonarQube 中的设置一致的设置启动 inspectcode.exe。为简化此操作,SonarQube R# 2.0 插件允许您将规则导出到 .DotSettings 文件并提供指向该文件的永久链接。查看插件的文档以获取更多信息:http://redirect.sonarsource.com/plugins/resharper.html

现在,让我们回到您原来的问题,即 SonarQube 中的 R# .DotSettings 导入不起作用,有几个问题:

  1. 当您将 .DotSettings 文件导入 SonarQube 时,它​​会进入一个新的质量配置文件。您需要确保这个新的质量配置文件将用于您的项目的分析,方法是将其设置为默认配置文件,或者通过在项目的设置页面中明确设置质量配置文件。您还应该导出完全相同的新质量配置文件以检查导入是否正常工作。
  2. 导入器不理解您传递的 .DotSettings 文件的格式,它希望关键标记以 /Default/CodeInspection/Highlighting/InspectionSeverities/= 开头 - 所有 R# 规则将保持禁用状态。
  3. SonarQube 中的 R# 规则自定义将不起作用 - 保存的唯一信息是规则是否启用。导出中不会出现任何不同的定制。使用新的重用报告模式,这将不再是障碍,因为您可以提供 inspectcode.exe 完全自定义的 .DotSettings 文件(而不是限于 SonarQube 生成的文件)。
  4. 您正在测试的一条规则似乎不存在于 SonarQube R# 插件 2.0 的规则集中(参见 https://raw.githubusercontent.com/SonarCommunity/sonar-resharper/master/src/main/resources/org/sonar/plugins/resharper/rules.xml for the full list) and http://jira.sonarsource.com/browse/SONARRSHPR-17