Сонар C # плагин не работает? - PullRequest
3 голосов
/ 15 июля 2011

Наша компания была рада выпуску плагинов C # для сонара и перепрыгнула на первый релиз.Тем не менее, мы, кажется, сталкиваемся с исключением, о котором сообщает ProjectLinkSensor.Вот что мы сделали:

На компьютере с Windows XP мы установили следующее:

  • Комплект разработки для Windows 7 (для доступа к FxCop)
  • Fxcop 10.0
  • Gallio
  • Сонар 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 clean sonar: sonar

Я вижу, чтоПлагин maven sonar выполняет анализ, извлекает настройки из локального экземпляра сонара и генерирует ожидаемые выходные файлы (например, 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 здесь: https://jira.codehaus.org/browse/SONARPLUGINS-1264

Ответы [ 2 ]

0 голосов
/ 21 августа 2011

Я один из главных разработчиков сонара для c #.Я раньше не видел твой билет на джира.Я на самом деле согласен с Фабрисом, вы должны были отправить письмо в список рассылки пользователя.

По поводу вашей проблемы, я думаю, что в вашем файле 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

Здесь вы найдете пример pom: http://maven -dotnet-plugin.appspot.com / configuration.html

Надеюсь, это поможет

0 голосов
/ 22 июля 2011

Не знаю, решит ли это вашу проблему, но я заметил, что вы ссылаетесь на диск C во всех ваших тегах <sonar.*.installDirectory>, кроме <sonar.fxcop.installDirectory>.

О, и вы также можете попытаться отключить модуль stylecop, поскольку вы случайно скопировали <sonar.gendarme.mode>skip</sonar.gendarme.mode> перед этим модулем ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...