我們公司很高興看到C# plugins for sonar的發佈,並首次發佈。但是,我們似乎遇到了由ProjectLinkSensor報告的錯誤。這就是我們所做的:聲納C#插件不工作?
在Windows XP的機器,我們安裝了以下內容:
- Windows 7的開發工具包(去的FxCop)
- 的FxCop 10.0
- 加利奧
- 聲納2.9 RC1(運行Derby數據庫)
- Maven的 2.2.1
然後我們檢查瞭解決方案,並放置在下面的pom.xml在SLN的文件所在的目錄:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.rolfje</groupId>
<artifactId>SomeSilverlightProject</artifactId>
<version>1.0-SNAPSHOT</version>
<name>SomeSilverlightProject</name>
<properties>
<sonar.language>cs</sonar.language>
</properties>
<build>
<sourceDirectory>${basedir}</sourceDirectory>
</build>
</project>
在這種正在運行的Maven構建用戶的主目錄,我們已經放在以下settings.xml:
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
<profiles>
<profile>
<id>dotnet</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<sonar.gallio.mode>skip</sonar.gallio.mode>
<sonar.gallio.installDirectory>C:/Program Files/Gallio</sonar.gallio.installDirectory>
<sonar.fxcop.mode>skip</sonar.fxcop.mode>
<sonar.fxcop.installDirectory>D:/Program Files/Microsoft Fxcop 10.0</sonar.fxcop.installDirectory>
<sonar.partcover.mode>skip</sonar.partcover.mode>
<sonar.partcover.installDirectory>C:/Program Files/PartCover/PartCover .NET 4.0</sonar.partcover.installDirectory>
<sonar.gendarme.mode>skip</sonar.gendarme.mode>
<sonar.gendarme.installDirectory>C:/Program Files/gendarme-2.6-bin</sonar.gendarme.installDirectory>
<sonar.gendarme.mode>skip</sonar.gendarme.mode>
<sonar.stylecop.installDirectory>C:/Program Files/Microsoft StyleCop 4.3.2.1</sonar.stylecop.installDirectory>
<sonar.jdbc.url>jdbc:derby://localhost:1527/sonar</sonar.jdbc.url>
<sonar.jdbc.driver>org.apache.derby.jdbc.ClientDriver</sonar.jdbc.driver>
<sonar.jdbc.username>sonar</sonar.jdbc.username>
<sonar.jdbc.password>sonar</sonar.jdbc.password>
<sonar.host.url>http://localhost:9000</sonar.host.url>
</properties>
</profile>
</profiles>
</settings>
請注意,我把「skip」放在所有模塊的前面。我一個接一個地做了這個,希望關掉其中一個模塊可以消除錯誤,我將能夠給你一個更清晰的錯誤報告。然而這並沒有幫助。
當我進入項目目錄(其中SLN文件),我運行以下命令: MVN -e乾淨聲納:聲納
我看到Maven的聲納插件不分析,從獲取的設置本地聲納實例,並生成預期的輸出文件(例如target/sonar/stylecop-msbuild.xml)。然而,這些報告沒有得到上傳到聲納,我看到被行家報告下列錯誤:
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Can not execute Sonar
Embedded error: org.sonar.plugins.core.sensors.ProjectLinksSensor has unsatisfied dependency: class org.apache.maven.project.MavenProject among unsatisfiable dependencies: [[class org.apache.maven.project.MavenProject]] where [email protected]:135<I<[email protected]:139<I<[email protected]:44<| was the leaf container being asked for dependencies.
[INFO] ------------------------------------------------------------------------
[INFO] Trace
org.apache.maven.lifecycle.LifecycleExecutionException: Can not execute Sonar
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:719)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeStandaloneGoal(DefaultLifecycleExecutor.java:569)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:539)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:284)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60)
除了相當無益的錯誤(ProjectModule @ 2c507f並沒有真正告訴我了),這看起來就像一個令人討厭的bug,這會導致聲納上傳(至少對我而言)不起作用。
其他人有這個問題嗎?這是什麼原因造成的?爲什麼在這種情況下錯誤報告如此糟糕?
請注意,我還報告過這是Jira上的一個bug,因爲我真的認爲Sonar/C-Sharp插件生態系統正在讓我在黑暗中。然而,它被置於「無法修復」的狀態,沒有額外的信息。 Jira的bug在這裏:https://jira.codehaus.org/browse/SONARPLUGINS-1264
的d驅動器是故意的(fxcop出於某種原因在D驅動器上),stylecop/gendarme skip是一個複製/粘貼錯誤,謝謝你的看法。我們暫停了C#Sonar安裝,因爲它已經花了很長時間,我們的資源有限。我們正在等待GA版本發佈。 – Rolf