2015-11-19 124 views
1

的MSBuild SonarQube是提出這個問題用在QualityProfile的FxCop規則時,「sonar.cs.fxcop.assembly必須設置」。見下面的例外。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 
[email protected] 
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) 

回答

4

錯誤消息是誤導性的:你不應該不要嘗試設置sonar.cs.fxcop.assembly屬性。可能發生的情況是,您正在從未安裝Visual Studio的計算機上運行分析,並且在msbuild本身(作爲「代碼分析」MSBuild任務的一部分)期間未觸發FxCop。

即將SonarQube掃描儀的MSBuild的1.1版本已經包含了當的FxCop規則啓用的情況下,更好的錯誤消息,但沒有安裝的FxCop。見https://jira.sonarsource.com/browse/SONARMSBRU-161

+0

我在我的機器上安裝了Visual Studio 2008,2010和2012,我可以找到FxCop到以下文件夾中: C:\ Program Files(x86)\ Microsoft Visual Studio 11.0 \ Team Tools \ Static Analysis Tools \ FxCop 我需要安裝另一個版本的FxCop嗎? –

+0

由於我沒有安裝VS2013,我已經安裝了MS Build for VS2013 [鏈接](https://www.microsoft.com/en-us/download/details.aspx?id=40760)我剛剛安裝了FxCop 10在這[鏈接](http://www.fluxbytes。com/microsoft/download-fxcop-10 /)但我仍然遇到問題。 –

+0

是的我懷疑你將需要Visual Studio 2013與MSBuild 12順利工作。但是,你可以嘗試設置環境變量'%VisualStudioVersion%'到'11.0',看看這是否強制MSBuild 12尋找你的Visual Studio 11安裝。 –

0

默認情況下,在構建服務器上安裝Visual Studio,fxcopcmd.exe存儲在這裏:

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

enter image description here

0

,如果你做的FxCop組件,如下圖所示指向您的應用程序的DLL的問題將得到解決。

sonar.cs.fxcop.fxCopCmdPath = C:/ Program Files文件(86)/微軟的Visual Studio 12.0 /團隊工具/靜態分析工具/的FxCop/FxCopCmd.exe sonar.cs.fxcop.assembly = APPLICATIONNAME /箱/APPLICATIONNAME.dll

注:請確認你是給指向bin文件夾的正確路徑。

+0

請格式化您的答案。 – sjaustirni

相關問題