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

时间:2015-07-31 08:07:04

标签: c# sonarqube resharper

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'.错误。

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

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

更新:我环顾四周,但我更加困惑。我已经看到一个名为&#34; MSBuild SonarQube Runner&#34;的跑步者的新版本,但也有一个名为&#34; SonarQube Runner&#34;到目前为止我们一直在使用 因此,正常的SonarQube Runner尚未被弃用,但对于使用Resharper的.NET项目,我们应该开始使用MSBuild SonarQube Runner,我们将能够指定在运行inspectcode时使用的自定义DotSettings文件。可执行程序?或者我们应该从命令行手动运行inspectcode?

1 个答案:

答案 0 :(得分:3)

现在应该使用MSBuild SonarQube Runner来分析所有.NET项目,这是与Microsoft共同开发的,它为.NET用户提供了最佳体验。

因此,现在不推荐使用声纳项目来运行.NET项目。对于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={{1} } /d:sonar.resharper.solutionFile = [report path]
  3. 的msbuild
  4. MSBuild.SonarQube.Runner.exe结束
  5. 您有责任使用与SonarQube中设置的设置一致的设置启动inspectcode.exe。为了简化这一过程,SonarQube R#2.0插件允许您将规则导出到.DotSettings文件中并提供永久链接。有关详细信息,请查看插件的文档:http://redirect.sonarsource.com/plugins/resharper.html

    现在,让我们回到你原来的问题,即SonarQube中的R#.DotSettings导入无效,有几个问题:

    1. 将.DotSettings文件导入SonarQube时,会进入新的质量配置文件。您需要确保将此新质量配置文件用于项目分析,方法是将其设置为默认项目,或者在项目的“设置”页面中明确设置质量配置文件。您还应该导出相同的新质量配置文件,以检查导入是否正常工作。
    2. 导入器无法理解您传递的.DotSettings文件的格式,导致关键标记以[solution path]开头 - 并且所有R#规则将保持禁用状态。
    3. SonarQube中的R#规则自定义将不起作用 - 保存的唯一信息是规则是否已启用。导出中不会出现任何不同的自定义。使用新的重用报告模式,这将不再是阻止程序,因为您可以为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