2011-07-15 45 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

希望它可以帮助