2011-07-15 47 views
3

我們公司很高興看到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

回答

0

我不知道這是否能解決您的問題,但我注意到您在所有<sonar.*.installDirectory>標記中引用了C驅動器,但<sonar.fxcop.installDirectory>除外。

哦,你也可以嘗試禁用了StyleCop模塊,因爲你不小心在模塊前面複製粘貼<sonar.gendarme.mode>skip</sonar.gendarme.mode> ...

+0

的d驅動器是故意的(fxcop出於某種原因在D驅動器上),stylecop/gendarme skip是一個複製/粘貼錯誤,謝謝你的看法。我們暫停了C#Sonar安裝,因爲它已經花了很長時間,我們的資源有限。我們正在等待GA版本發佈。 – Rolf

0

我的聲納的主要開發者爲C#之一。 我以前沒有見過你的傑拉票。我真的同意Fabrice,你應該發送郵件給用戶郵件列表。

關於你的問題,我的第一個猜測是你的pom.xml文件有錯誤。 如果您使用「mvn -e clean sonar:sonar」,則需要在pom.xml文件中聲明「maven-dotnet-plugin」插件。 「乾淨」部分將由此插件執行。 另外,正確的命令行寧可是「mvn clean package sonar:sonar」,不會有任何組件可供分析。

有關Maven的DOTNET-插件的更多信息,你可以檢查出的文檔: http://maven-dotnet-plugin.appspot.com

你會發現,這裏聚甲醛例子: http://maven-dotnet-plugin.appspot.com/configuration.html

希望它可以幫助