必须设置sonar.cs.fxcop.assembly

时间:2015-11-19 10:59:43

标签: sonarqube fxcop

当在QualityProfile中使用FxCop规则时,MSBuild SonarQube正在提出问题'sonar.cs.fxcop.assembly必须设置'。见下面的例外情况。

它与其他StyleCop和C#规则一起正常工作。 我看过类似的帖子,但找不到解决方案。

我正在使用:

C:\Sonar\sonarqube-5.2
C:\Sonar\MSBuild.SonarQube.Runner-1.0.2

安装了以下插件:     插件C#4.3     插件StyleCop 1.1

定位以下示例项目:

C:\Sonar\sonar-examples-master\projects\languages\csharp\ConsoleApplication1

我正在执行以下命令:

cd Sonar\MSBuild.SonarQube.Runner-1.0.2\

MSBuild.SonarQube.Runner.exe begin /k:"MyProjectKey" /n:"MyProjectName" /v:"MyProjectVersion"

"C:\Program Files (x86)\MSBuild\12.0\Bin\MSBuild.exe" "C:\Sonar\sonar-examples-master\projects\languages\csharp\ConsoleApplication1\ConsoleApplication1.csproj" /t:Rebuild

MSBuild.SonarQube.Runner.exe end

我试图在.csproj文件中声明程序集位置但没有成功。预期的路径是什么样的?

<ItemGroup>
    <SonarQubeSetting Include="sonar.cs.fxcop.assembly">
        <Value>path to dll</Value>
    </SonarQubeSetting>
</ItemGroup>

感谢您的帮助!

例外:

10:33:14.564 INFO  - Sensor org.sonar.plugins.csharp.CSharpFxCopProvider$CSharpF
xCopSensor@1eeeda8
INFO: ------------------------------------------------------------------------
INFO: EXECUTION FAILURE
INFO: ------------------------------------------------------------------------
Total time: 12.017s
Final Memory: 14M/113M
INFO: ------------------------------------------------------------------------
ERROR: Error during Sonar runner execution
org.sonar.runner.impl.RunnerException: Unable to execute Sonar
        at org.sonar.runner.impl.BatchLauncher$1.delegateExecution(BatchLauncher
.java:91)
        at org.sonar.runner.impl.BatchLauncher$1.run(BatchLauncher.java:75)
        at java.security.AccessController.doPrivileged(Native Method)
        at org.sonar.runner.impl.BatchLauncher.doExecute(BatchLauncher.java:69)
        at org.sonar.runner.impl.BatchLauncher.execute(BatchLauncher.java:50)
        at org.sonar.runner.api.EmbeddedRunner.doExecute(EmbeddedRunner.java:102
)
        at org.sonar.runner.api.Runner.execute(Runner.java:100)
        at org.sonar.runner.Main.executeTask(Main.java:70)
        at org.sonar.runner.Main.execute(Main.java:59)
        at org.sonar.runner.Main.main(Main.java:53)
Caused by: java.lang.IllegalArgumentException: Cannot find the assembly "C:\Prog
ram Files (x86)\Microsoft Visual Studio 11.0\Team Tools\Static Analysis Tools\Fx
CopSdk.dll" provided by the property "sonar.cs.fxcop.assembly".
        at com.google.common.base.Preconditions.checkArgument(Preconditions.java
:88)
        at org.sonar.plugins.fxcop.FxCopConfiguration.checkAssemblyProperty(FxCo
pConfiguration.java:115)
        at org.sonar.plugins.fxcop.FxCopConfiguration.checkProperties(FxCopConfi
guration.java:97)

3 个答案:

答案 0 :(得分:4)

错误消息具有误导性:您不应尝试设置sonar.cs.fxcop.assembly属性。可能发生的是您从未安装Visual Studio的计算机上运行分析,并且在msbuild期间未触发FxCop(作为&#34;代码分析&#34; MSBuild的一部分)任务)。

即将启用FxCop规则,但即将推出的MSxild 1.1版SonarQube扫描程序已包含更好的错误消息,但未安装FxCop。见https://jira.sonarsource.com/browse/SONARMSBRU-161

答案 1 :(得分:0)

默认情况下,通过在构建服务器上安装Visual Studio,fxcopcmd.exe存储在此处:

C:\Program Files (x86)\Microsoft Visual Studio 14.0\Team Tools\Static Analysis Tools\FxCop

enter image description here

答案 2 :(得分:0)

如果你使fxcop程序集指向你的应用程序dll,问题将得到修复,如下所示。

sonar.cs.fxcop.fxCopCmdPath = C:/ Program Files(x86)/ Microsoft Visual Studio 12.0 /团队工具/静态分析工具/ FxCop / FxCopCmd.exe sonar.cs.fxcop.assembly = APPLICATIONNAME / bin中/ APPLICATIONNAME.dll

注意:请确保您提供指向bin文件夹的正确路径。