【问题标题】:How do you specify StyleCop settings for Sonar?如何为 Sonar 指定 StyleCop 设置?
【发布时间】:2014-01-11 16:43:49
【问题描述】:

我正在尝试通过 Jenkins 客户端上的 gradle sonarrunner 插件运行 StyleCop (4.7.47)。它运行良好,但由于某种原因,它没有使用我的 Settings.StyleCop 文件,我在该文件中禁用了一些规则,因此 Sonar (3.7) 报告了我不感兴趣的违规行为。

c#项目结构如下:

/Root
    Src/
        Project1/...
        Project2/...
        MySolution.sln
        Settings.StyleCop
    build.gradle

我的 Settings.StyleCop 文件如下所示:

<StyleCopSettings Version="105">
  <GlobalSettings>
    <StringProperty Name="MergeSettingsFiles">NoMerge</StringProperty>
  </GlobalSettings>
  <Analyzers>
    <Analyzer AnalyzerId="StyleCop.CSharp.DocumentationRules">
      <Rules>
        <Rule Name="ElementDocumentationMustBeSpelledCorrectly">
          <RuleSettings>
            <BooleanProperty Name="Enabled">False</BooleanProperty>
          </RuleSettings>
        </Rule>
      </Rules>
    </Analyzer>
  </Analyzers>
</StyleCopSettings>

我为 sonarrunner gradle 插件指定的声纳属性是:

property "sonar.language" , "cs"
property "sonar.sources" , "Src"
property "sonar.dotnet.visualstudio.solution.file" ,"Src/MySolution.sln"
property "sonar.dotnet.key.generation.strategy", "safe"
property "sonar.sourceEncoding" , "UTF-8"

我也尝试过指定sonar.stylecop.analyzers.settings property,尽管Sonar FAQ 提到这不能用于指定活动规则。

当我在 VisualStudio 中运行 StyleCop 时,它确实使用了正确的规则。

有没有办法验证 StyleCop 从哪里获取设置?我错过了什么明显的东西吗?

任何帮助表示赞赏。

【问题讨论】:

    标签: jenkins gradle sonarqube stylecop


    【解决方案1】:

    Sonar 的规则通过 Sonar 中的Quality Profiles admin screens 启用/禁用(以及设置规则优先级)。

    由于 Sonar 的架构,必须在插件运行之前填充规则,因此插件本身无法在分析代码时直接更改违规状态或优先级。该插件会在服务器启动时填充可用的规则,但 Sonar StyleCop 插件不提供一种方法来修改默认规则设置,而不是通过 QualityProfile。

    【讨论】:

    • 谢谢。不是我希望的答案,但它澄清了事情。这意味着您必须手动确保本地环境和构建环境使用相同的 StyleCop 设置。
    • 不幸的是,是的。 SonarQube 维护者认为 SonarQube 应该是运行规则的主要来源,等等。但是,包括 SyleCop 插件在内的几个插件提供了一种将 SonarQube 设置导出为其他应用程序可用的配置文件的方法.如果您转到 QualityProfiles 页面并单击“永久链接”选项卡,StyleCop 链接将下载带有声纳设置的 StyleCop 配置文件。不过,我不能说我已经尝试过了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-11
    • 2017-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-01
    • 1970-01-01
    相关资源
    最近更新 更多