Как использовать анализ FxCop с новым бегуном MsBuild Sonar?

Я пытаюсь перейти со старого бегуна Sonar на новый бегун MsBuild Sonar в проекте .NET.

Последняя проблема, с которой я столкнулся, - это анализ FxCop. Если профиль качества в Sonar содержит какие-либо правила 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".

Я много гуглил и нашел несколько довольно старых тем с той же проблемой, но ни одно из решений не помогло.
Я попытался добавить параметр 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 работал?

Вот команды, которые я выполняю (я изменил имена файлов и пути):
1. Начало работы с Sonar runner

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:

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

  1. Конец бегуна:

MSBuild.SonarQube.Runner.exe end


person Mark Vincze    schedule 21.08.2015    source источник
comment
Или с новым раннером отчет FxCop должен создаваться вручную, как и отчет ReSharper?   -  person Mark Vincze    schedule 21.08.2015
comment
Нет, предполагается, что FxCop будет применяться во время MSBuild - то есть, если вы не сильно настроили файлы .csproj и MSBuild - так ли это?   -  person Dinesh Bolkensteyn    schedule 21.08.2015
comment
Вы можете удалить неиспользуемые свойства: sonar.cs.fxcop.fxCopCmdPath, sonar.visualstudio.solution, sonar.visualstudio.testProjectPattern   -  person Dinesh Bolkensteyn    schedule 21.08.2015
comment
Возможно, попробуйте выполнить полную перестройку MSBuild и отправить журналы этого   -  person Dinesh Bolkensteyn    schedule 21.08.2015


Ответы (1)


Я рекомендую выполнить обновление до недавно выпущенной MSBuild SonarQube Runner версии 1.0.1, что приведет к отключению подключаемого модуля Visual Studio Bootstrapper. После того, как вы перенесли все свои проекты на использование MSBuild SonarQube Runner, вам следует удалить плагин Visual Studio Bootstrapper со своего сервера SonarQube.

Затем все свойства сервера SonarQube и JDBC, такие как sonar.host.url или sonar.jdbc.url, лучше передавать через файл SonarQube.Analysis.xml, чем через командную строку.

Следующие свойства бесполезны: sonar.visualstudio.testProjectPattern, sonar.dotnet.excludeGeneratedCode, sonar.cs.fxcop.fxCopCmdPath, sonar.visualstudio.solution, sonar.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 изначально поддерживается, и его выполнение будет происходить в течение msbuild, когда правила FxCop включены в вашем профиле качества.

person Dinesh Bolkensteyn    schedule 11.09.2015
comment
Привет, @Dinesh! Если я использую SonarQube из TeamCity, следует ли мне установить FxCop на сервер TeamCity? - person Narayana; 15.12.2015
comment
FxCop поставляется с Visual Studio. Если вы хотите запустить правила FxCop в своем анализе SonarQube, то да, вы должны установить его на вашем компьютере сборки. Однако, если вы отключите все правила FxCop, вам не нужно его устанавливать. - person Dinesh Bolkensteyn; 16.12.2015