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

本文关键字:DotSettings 导入 功能 插件 Resharper Sonar | 更新日期: 2023-09-27 18:05:38

新版本(2.0)的Resharper plugin for Sonar扩展了导入现有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'.错误。

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

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

更新:我又看了看周围,但我更困惑了。我已经看到了一个名为"MSBuild SonarQube runner"的运行程序的新版本,但也有一个简单地称为"SonarQube runner"的运行程序,我们一直使用到现在。
所以正常的SonarQube Runner还没有被弃用,但对于使用Resharper的。net项目,我们应该开始使用MSBuild SonarQube Runner,这样我们就可以在运行inspectcode.exe时指定一个自定义的DotSettings文件。或者我们应该从命令行手动运行inspectcode ?

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

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

因此,在。net项目中使用sonar-runner现在是不赞成的。对于COBOL, PL/SQL和其他许多语言(不包括c#和VB.NET),声纳运行器仍然是分析项目的推荐方法。

自从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= [report path] [solution path]
  2. MSBuild.SonarQube.Runner.exe begin/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. <
  5. MSBuild.SonarQube.Runner.exe结束/gh>

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

现在,让我们回到你最初的问题,这是r# .DotSettings导入SonarQube不工作,有几个问题:

  1. 当你导入一个。dotsettings文件到SonarQube,它进入一个新的质量配置文件。您需要确保这个新的质量配置文件将用于您的项目的分析,或者通过将其设置为默认的,或者通过在您的项目的设置页面中显式地设置质量配置文件。您还应该导出相同的新质量配置文件,以检查导入是否正常工作。
  2. 您传递的。dotsettings文件的格式不被导入器理解,它期望关键标签以/Default/CodeInspection/Highlighting/InspectionSeverities/=开始-并且所有r#规则将保持禁用。
  3. r#规则定制在SonarQube中将不起作用——保存的唯一信息是该规则是否启用。任何不同的定制都不会出现在导出中。有了新的重用报告模式,这将不再是拦截器,因为你可以提供inspectcode.exe与一个完全自定义的。dotsettings文件(而不是局限于SonarQube的生成一个)。
  4. 你正在测试的一个规则似乎不存在SonarQube r# Plugin 2.0的规则集(见https://raw.githubusercontent.com/SonarCommunity/sonar-resharper/master/src/main/resources/org/sonar/plugins/resharper/rules.xml的完整列表)和http://jira.sonarsource.com/browse/SONARRSHPR-17