如何为Sonar指定StyleCop设置?

时间:2013-12-23 12:49:09

标签: jenkins gradle sonarqube stylecop

我正在尝试通过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的设置?我错过了一些明显的东西吗?

任何帮助表示感谢。

1 个答案:

答案 0 :(得分:2)

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

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