Sonar C#插件无法正常工作?

时间:2011-07-15 05:31:07

标签: c# sonarqube

我们公司很高兴看到C# plugins for sonar的发布,并跳过了第一个版本。但是,我们似乎遇到了ProjectLinkSensor报告的execption。这就是我们所做的:

在Windows XP计算机上,我们安装了以下内容:

  • Windows 7开发工具包(访问FxCop)
  • Fxcop 10.0
  • 加利奥
  • Sonar 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>

请注意,我在所有模块前放了“跳过”。我一个接一个地做了这个,希望关闭其中一个模块将删除错误,我将能够给你一个更清晰的错误报告。然而这没有用。

当我进入项目目录(sln文件所在的位置)时,我运行以下命令: mvn -e clean sonar:sonar

我看到maven声纳插件进行分析,从本地声纳实例获取设置,并生成预期的输出文件(例如target / sonar / stylecop-msbuild.xml)。但是,这些报告没有上传到声纳,我看到maven报告了以下错误:

[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 org.sonar.batch.bootstrap.ProjectModule@2c507f:135<I<org.sonar.batch.bootstrap.BatchModule@659812:139<I<org.picocontainer.DefaultPicoContainer@eb1882: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并没有真正告诉我太多),这看起来像一个讨厌的错误,导致声纳上传(至少对我来说)不起作用。

其他人有没有这个问题?造成这种情况的原因是什么,以及为什么在这种情况下错误报告如此糟糕?

请注意,我也将此报告为Jira上的一个错误,因为我真的认为Sonar / C-Sharp插件生态系统让我陷入了黑暗。但是,如果没有其他信息,它就会被置于“无法修复”状态。 Jira bug在这里:https://jira.codehaus.org/browse/SONARPLUGINS-1264

2 个答案:

答案 0 :(得分:0)

我不知道这是否能解决您的问题,但我注意到您在所有<sonar.*.installDirectory>代码中引用了C驱动器,<sonar.fxcop.installDirectory>除外。

哦,你也可以尝试禁用stylecop模块,因为你不小心在该模块前面复制粘贴<sonar.gendarme.mode>skip</sonar.gendarme.mode> ...

答案 1 :(得分:0)

我是c#声纳的主要开发者之一。 我以前没见过你的jira票。我实际上同意Fabrice,你应该发送邮件到用户邮件列表。

关于您的问题,我的第一个猜测是您的pom.xml文件出错。 如果使用“mvn -e clean sonar:sonar”,则需要在pom.xml文件中声明“maven-dotnet-plugin”插件。 “清理”部分将由此插件执行。 另外,正确的命令行宁可是“mvn clean package sonar:sonar”,也不会有任何程序集要进行分析。

有关maven-dotnet-plugin的更多信息,请查看以下文档: http://maven-dotnet-plugin.appspot.com

你会在这里找到一个pom示例: http://maven-dotnet-plugin.appspot.com/configuration.html

希望有所帮助