2013-12-23 46 views
2

我想通過詹金斯客戶端上的gradle sonarrunner插件運行StyleCop(4.7.47)。它運行良好,但由於某種原因,它不使用我的Settings.StyleCop文件,其中我禁用了一些規則,所以Sonar(3.7)報告了我不感興趣的違規。如何爲Sonar指定StyleCop設置?

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得到它的設置?我錯過了明顯的東西嗎?

任何幫助表示讚賞。

回答

2

聲納的規則啓用/禁用通過聲納Quality Profiles admin screens(以及設置規則的優先級)。

由於聲納的架構,規則必須插件運行之前進行填充,使插件在分析代碼本身不能直接改變違反狀態或優先級。插件會在服務器啓動時填充可用規則,但Sonar StyleCop插件不提供通過QualityProfile以外的默認值修改規則設置的方法。

+0

謝謝。不是我所希望的答案,但它澄清了事情。這意味着您必須手動確保本地和構建環境使用相同的StyleCop設置。 – GlennV

+1

不幸的是,是的。 SonarQube維護者已經採取了SonarQube應該成爲運行規則的主要來源的立場,等等。然而,包括SyleCop插件在內的幾個插件提供了一種將SonarQube設置導出爲其他應用可用的配置文件的方法。如果進入QualityProfiles頁面並單擊「Permalinks」選項卡,StyleCop鏈接將下載帶有Sonar設置的StyleCop配置文件。不過,我不能說我已經嘗試過。 –