How to use FxCop analysis with the new MsBuild Sonar runner?

拟墨画扇 提交于 2019-12-13 13:52:55

问题


I am trying to migrate from the old Sonar runner to the new MsBuild Sonar runner in a .NET project.

The last problem I have is doing the FxCop analysis. If the quality profile in Sonar contains any FxCop rules, I get the following build error:

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".

I googled a lot and found some rather old topics with the same problem, but none of the solutions worked.
I tried to add the sonar.visualstudio.enable="true" parameter, but then I get the following error:

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

Also tried to add /d:sonar.visualstudio.skipIfNotBuilt="true", but it didn't help.

What am I doing wrong? How to parameterize the new MsBuild sonar runner to make the FxCop analysis work?

These are the commands I'm executing (I modified the file names an paths):
1. Sonar runner begin

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"
  1. MsBuild:

MSBuild.exe targets.msbuild ...

  1. ReSharper analysis:

inspectcode.exe /o=resharperresults.xml MySolution.sln

  1. Runner end:

MSBuild.SonarQube.Runner.exe end


回答1:


I recommend to upgrade to the newly released MSBuild SonarQube Runner version 1.0.1, which will force the Visual Studio Bootstrapper plugin to be disabled. Once you have migrated all your projects to use the MSBuild SonarQube Runner, you should uninstall the Visual Studio Bootstrapper plugin from your SonarQube server.

Then, all the SonarQube server and JDBC properties such as sonar.host.url or sonar.jdbc.url are better passed through the SonarQube.Analysis.xml file than through the command line.

The following properties are useless: sonar.visualstudio.testProjectPattern, sonar.dotnet.excludeGeneratedCode, sonar.cs.fxcop.fxCopCmdPath, sonar.visualstudio.solution, sonar.dotnet.buildConfigurations

sonar.language can be removed as SonarQube supports multi-language projects since SonarQube version 4.2.

For OpenCover, have a look at: http://docs.sonarqube.org/display/PLUG/C%23+Code+Coverage+Results+Import#C#CodeCoverageResultsImport-OpenCover

For ReSharper, at: http://docs.sonarqube.org/display/PLUG/ReSharper+Plugin

FxCop is natively supported, and its execution will happen during msbuild when FxCop rules are enabled in your quality profile.



来源:https://stackoverflow.com/questions/32142494/how-to-use-fxcop-analysis-with-the-new-msbuild-sonar-runner

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!