3

我正在嘗試從舊的Sonar runner遷移到.NET項目中的新的MsBuild Sonar runner。如何使用新的MsBuild Sonar runner使用FxCop分析?

我最後的問題是做FxCop分析。如果聲納質量配置文件包含的任何的FxCop規則,我得到下面的生成錯誤:

ERROR: Caused by: The property "sonar.cs.fxcop.assembly" must be set and the project must have been built to execute FxCop rules. 
This property can be automatically set by the Analysis Bootstrapper for Visual Studio Projects plugin, see: http://docs.codehaus.org/x/TAA1Dg. 
If you wish to skip the analysis of not built projects, set the property "sonar.visualstudio.skipIfNotBuilt". 

我GOOGLE了一番,發現一些比較老的話題同樣的問題,但沒有解決方案的工作。
我試圖添加sonar.visualstudio.enable="true"參數,但後來我得到以下錯誤:

ERROR: Caused by: Do not use the Visual Studio bootstrapper and set the "sonar.modules" property at the same time. 

也試圖添加/d:sonar.visualstudio.skipIfNotBuilt="true",但它並沒有幫助。

我在做什麼錯?如何參數化新的MsBuild聲納轉輪以使FxCop分析工作?

這些是我執行的命令(I修改的文件名的路徑):
1.聲納轉輪開始

MSBuild.SonarQube.Runner.exe begin /key:"MyProject" /name:"MyProject" 
/version:"1" /d:sonar.host.url="http://mysonarhost/" /d:sonar.jdbc.dialect="mssql" 
/d:sonar.jdbc.url="jdbc:jtds:sqlserver://mysonardb" /d:sonar.jdbc.username="sonar-user" 
/d:sonar.jdbc.password="sonar-password" /d:sonar.resharper.cs.reportPath="../../../../resharperresults.xml" 
/d:sonar.resharper.solutionFile="MySolution.sln" 
/d:sonar.visualstudio.testProjectPattern=".*\.(UnitTests|IntegrationTests)" 
/d:sonar.exclusions="obj/**" /d:sonar.dotnet.excludeGeneratedCode="true" 
/d:sonar.cs.fxcop.fxCopCmdPath="..\Tools\FxCop.v12.0.21005.1\FxCopCmd.exe" 
/d:sonar.visualstudio.solution="MySolution.sln" /d:sonar.dotnet.buildConfigurations="Release" 
/d:sonar.language="cs" /d:sonar.sourceEncoding="UTF-8" 
/d:sonar.cs.opencover.reportsPaths="..\CodeCoverage\MSTest.Coverage.MySolution.UnitTests.xml" 
  • 的MSBuild:
  • MSBuild.exe targets.msbuild ...

  • ReSharper的分析:
  • inspectcode.exe /o=resharperresults.xml MySolution.sln

  • 轉輪端:
  • MSBuild.SonarQube.Runner.exe end

    +0

    或者與新的跑步者一樣,FxCop報告必須手動生成,類似於ReSharper報告? –

    +0

    不,FxCop應該在MSBuild中強制執行 - 也就是說,除非您大量定製了.csproj和MSBuild文件 - 是這種情況嗎? –

    +0

    您可以刪除未使用的屬性:sonar.cs.fxcop.fxCopCmdPath,sonar.visualstudio.solution,sonar.visualstudio.testProjectPattern –

    回答

    0

    我建議升級到新發布的MSBuild SonarQube轉輪版本1.0.1,其中將強制禁用Visual Studio Bootstrapper插件。將所有項目遷移到使用MSBuild SonarQube Runner後,應該從SonarQube服務器上卸載Visual Studio Bootstrapper插件。

    然後,所有SonarQube服務器和JDBC屬性(例如sonar.host.urlsonar.jdbc.url)通過SonarQube.Analysis.xml文件比通過命令行更好。

    以下屬性無用:sonar.visualstudio.testProjectPatternsonar.dotnet.excludeGeneratedCodesonar.cs.fxcop.fxCopCmdPathsonar.visualstudio.solutionsonar.dotnet.buildConfigurations

    sonar.language可以如SonarQube被去除因爲SonarQube版本4.2支持多語言的項目。

    對於OpenCover,看看:http://docs.sonarqube.org/display/PLUG/C%23+Code+Coverage+Results+Import#C#CodeCoverageResultsImport-OpenCover

    ReSharper的,在:http://docs.sonarqube.org/display/PLUG/ReSharper+Plugin

    的FxCop的原生支持,而當FxCop的規則,你的質量配置文件啓用它的執行過程中會發生msbuild

    +0

    嗨@Dinesh - 如果我從TeamCity運行SonarQube,我應該在TeamCity服務器上安裝FxCop嗎? – Narayana

    +1

    FxCop附帶Visual Studio。如果你想在你的SonarQube分析中運行FxCop規則,那麼你應該將它安裝在你的構建機器上。但是,如果您禁用所有FxCop規則,則不需要安裝它。 –

    相關問題