使用SonarQube,MSBuild14和FxCop10分析C#VS解决方案

时间:2016-08-11 11:46:11

标签: c# msbuild sonarqube fxcop

我在一个目前使用VS2013的团队中,所以我的安装是MSBuild12。 我安装了FXCop10。 我安装了MSBuild14。 我安装了SonarQube Scanner for MSBuild 2.1

我在演示模式下运行SonarQube 5.6版。 我已启用所有规则,并可使用以下批处理脚本进行分析:

<!-- language: lang-sh-->
@echo off
REM Set FxCop10Directory="C:\Program Files (x86)\Microsoft Fxcop 10.0\"
REM Set FxCop10="C:\Program Files (x86)\Microsoft Fxcop 10.0\FxCopCmd.exe"

Set ScannerDirectory="D:\Programs\sonar-scanner-2.6.1\bin\"
Set MSBuild12="C:\Program Files (x86)\MSBuild\12.0\Bin\MSBuild.exe"
Set MSBuild14="C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe"
Set Runner="MSBuild.SonarQube.Runner.exe"
Set Key="DEMO2016"
Set Name="SonarQube Internal Demo"
Set Version="0.0.0.0"

PATH=%PATH%;%ScannerDirectory%

call %Runner% begin /k:%Key% /n:%Name% /v:%Version%
call %MSBuild14% /t:Rebuild
call %Runner% end
pause

当我尝试通过更改调用%MSBuild14% /t:Rebuild的调用来升级到MSBuild14时,出现错误。

error : FxCop must be installed when some of its rules are enabled in the SonarQube quality profile. FxCop is included as part of Visual Studio.

VS2013附带另一版FXCop。

如何控制MSBuild.SonarQube.Runner使用的版本? 如何为MSBuild.SonarQube.Runner设置FxCop10?

1 个答案:

答案 0 :(得分:0)

我不知道为什么MSBuild12最初为我工作。 我必须导入开发环境才能使系统正常工作。

<!-- language: none-->

@echo off
echo.
echo Setup References
Set ScannerDirectory="D:\Programs\sonar-scanner-2.6.1\bin\"
Set MSBuild14="C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe"
Set Runner="MSBuild.SonarQube.Runner.exe"
Set vcvars="C:\LegacyApp\VisualStudio2013\VC\vcvarsall.bat"
echo.
echo Setup Runner Parameters
Set Key="DEMO2016"
Set Name="SonarQube Internal Demo"
Set Version="0.0.0.0"
echo.
echo Create Environment
PATH=%PATH%;%ScannerDirectory%
call %vcvars%
echo.
echo Runner Begin
call %Runner% begin /k:%Key% /n:%Name% /v:%Version%
echo.
echo MSBuild Rebuild
call %MSBuild14% /t:Rebuild
echo.
echo Runner End
call %Runner% end
pause

输出显示当前使用的FxCop版本的位置:

<!-- language: none-->

Running Code Analysis...
C:\LegacyApp\VisualStudio2013\Team Tools\Static Analysis Tools\FxCop\FxCopCmd.exe 

在命令提示符中执行该文件将返回其版本。