2015-02-25 4 views
1

У меня есть многомодульный проект Java Maven, который уже использует Findbugs, Checkstyle, PMD и Jacoco для проверки кода. Тесты также проводятся во время этих анализов. Теперь я хотел бы настроить SonarQube для сбора отчетов, сгенерированных при запуске Maven, и отображения их в панели инструментов SonarQube. До сих пор у меня есть эти свойства в моем родительском pom.xml, что я нашел в различных проводок по всему интернету:Интеграция SonarQube с использованием Maven для повторного использования Findbugs, PMD, Checkstyle, Surefire и Jacoco

<properties> 
    <sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis> 
    <sonar.surefire.reportsPath>${project.parent.build.directory}/surefire-reports</sonar.surefire.reportsPath> 
    <sonar.jacoco.reportPath>${project.parent.build.directory}/coverage-reports/${project.artifactId}-jacoco.exec</sonar.jacoco.reportPath> 
    <sonar.findbugs.reportPath>${project.parent.build.directory}/findbugs/findbugs.xml</sonar.findbugs.reportPath> 
    <sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin> 
</properties> 

Я не изменил конфигурацию плагина Checkstyle, FindBugs, Jacoco или PMD. Я добавил несколько строк в Surefire конфигурации плагина:

  <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-surefire-plugin</artifactId> 
       <version>${maven-surefire-plugin.version}</version> 
       <configuration> 
        <skip>${skip.test}</skip> 
        <testFailureIgnore>${testFailureIgnore}</testFailureIgnore> 
        <argLine>${surefireArgLine}</argLine> 
        <failIfNoTests>${failIfNoTests}</failIfNoTests> 
        <test>AllTests</test> 
        <properties> 
         <property> 
          <name>listener</name> 
          <value>org.sonar.java.jacoco.JUnitListener</value> 
         </property> 
        </properties> 
       </configuration> 
      </plugin> 

И вот Sonar плагины:

  <plugin> 
       <groupId>org.codehaus.sonar-plugins.java</groupId> 
       <artifactId>sonar-jacoco-listeners</artifactId> 
       <version>${sonar-jacoco-listeners.version}</version> 
      </plugin> 
      <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>sonar-maven-plugin</artifactId> 
       <version>${sonar-maven-plugin.version}</version> 
      </plugin> 

При запуске этого я получаю сообщение «„sonar.dynamicAnalysis“является устаревшим, начиная с версии 4.3 и больше не должны использоваться ». Но я не уверен, что еще использовать. Соответствующая проблема JIRA также не говорит об этом (https://jira.codehaus.org/browse/SONAR-5185) И, кроме того, похоже, что Sonar ничего не набирает из моего пробега Maven. На панели мониторинга отображаются только значения «Линии кода», «Дубликации», «Сложность», «Индекс каталога» и «Успех тестирования блока». Судя по последней записи, по крайней мере, результаты от единичных тестов подбираются.

Я использую Maven 3.2.2, sonar-jacoco-listeners 2.9.1, sonar-maven-plugin 2.5 и SonarQube 4.5.1. Тесты выполняются из задания Дженкинса, используя «mvn -e test».

Любые указатели или справка были бы весьма благодарны. Возможно, то, чего я пытаюсь достичь просто, невозможно и/или выполнимо.

(В ответ на комментарий пользователя944849) Это выход сонара для сборки модуля.

[INFO] [13:39:34.821] ------------- Scan Administration 
[INFO] [13:39:34.822] Load module settings 
[INFO] [13:39:34.869] Configure Maven plugins 
[INFO] [13:39:34.871] Compare to previous analysis (2015-02-25) 
[INFO] [13:39:34.872] Compare over 30 days (2015-01-26, analysis of 2015-01-26 05:14:41.328) 
[INFO] [13:39:34.873] Compare to previous version (2015-01-16) 
[INFO] [13:39:34.874] No quality gate is configured. 
[INFO] [13:39:34.889] Initializer FindbugsMavenInitializer... 
[INFO] [13:39:34.889] Initializer FindbugsMavenInitializer done: 0 ms 
[INFO] [13:39:34.889] Base dir: /mnt/jenkins/jobs/nightlybuild_UVDS_BTH/workspace/trunk/admin 
[INFO] [13:39:34.889] Working dir: /mnt/jenkins/jobs/nightlybuild_UVDS_BTH/workspace/trunk/admin/target/sonar 
[INFO] [13:39:34.889] Source paths: pom.xml, src/main/java 
[INFO] [13:39:34.890] Test paths: src/test/java 
[INFO] [13:39:34.890] Binary dirs: target/classes 
[INFO] [13:39:34.890] Source encoding: UTF-8, default locale: de_DE 
[INFO] [13:39:34.890] Index files 
[INFO] [13:39:35.112] 544 files indexed 
[INFO] [13:39:42.216] Quality profile for java: DEFAULT 
[INFO] [13:39:42.276] Sensor JavaSquidSensor... 
[INFO] [13:39:42.303] Java Main Files AST scan... 
[INFO] [13:39:42.303] 407 source files to be analyzed 
[INFO] [13:39:52.304] 245/407 files analyzed 
[INFO] [13:39:58.548] 407/407 source files analyzed 
[INFO] [13:39:58.549] Java Main Files AST scan done: 16246 ms 
[INFO] [13:39:58.566] Java bytecode scan... 
[INFO] [13:39:58.895] Java bytecode scan done: 329 ms 
[INFO] [13:39:58.896] Java Test Files AST scan... 
[INFO] [13:39:58.896] 137 source files to be analyzed 
[INFO] [13:39:59.676] Java Test Files AST scan done: 780 ms 
[INFO] [13:39:59.676] 137/137 source files analyzed 
[INFO] [13:39:59.677] Package design analysis... 
[INFO] [13:40:00.767] Package design analysis done: 1090 ms 
[INFO] [13:40:00.788] Sensor JavaSquidSensor done: 18512 ms 
[INFO] [13:40:00.796] Sensor QProfileSensor... 
[INFO] [13:40:00.797] Sensor QProfileSensor done: 1 ms 
[INFO] [13:40:00.797] Sensor InitialOpenIssuesSensor... 
[INFO] [13:40:00.839] Sensor InitialOpenIssuesSensor done: 42 ms 
[INFO] [13:40:00.839] Sensor ProjectLinksSensor... 
[INFO] [13:40:00.843] Sensor ProjectLinksSensor done: 4 ms 
[INFO] [13:40:00.843] Sensor VersionEventsSensor... 
[INFO] [13:40:00.850] Sensor VersionEventsSensor done: 7 ms 
[INFO] [13:40:00.850] Sensor FileHashSensor... 
[INFO] [13:40:00.863] Sensor FileHashSensor done: 13 ms 
[INFO] [13:40:00.863] Sensor SurefireSensor... 
[INFO] [13:40:00.863] parsing /mnt/jenkins/jobs/nightlybuild_UVDS_BTH/workspace/trunk/uvds-admin/target/surefire-reports 
[INFO] [13:40:00.920] Sensor SurefireSensor done: 57 ms 
[INFO] [13:40:00.921] Sensor Maven dependencies... 
[INFO] [13:40:01.086] Sensor Maven dependencies done: 165 ms 
[INFO] [13:40:01.090] Sensor CPD Sensor (wrapped)... 
[INFO] [13:40:01.090] JavaCpdEngine is used for java 
[INFO] [13:40:01.101] Cross-project analysis disabled 
[INFO] [13:40:02.295] Sensor CPD Sensor (wrapped) done: 1205 ms 
[INFO] [13:40:02.432] Execute decorators... 
+0

Существуют ли отчеты в настройках местоположения? Кроме того, вы проверили вывод консоли Jenkins для сборки, чтобы узнать, что делает SonarQube? У него могут быть сообщения о том, что вы не находите файлы в сконфигурированном каталоге или не имеете их в неправильном формате или что-то в этом роде. – user944849

ответ

0

Вот POM с конфигурацией для SonarQube 4.5.1, которая работает для меня, по крайней мере, для безошибочного и JaCoCo (см results).

Проект запускается с mvn clean install -Dsonar.

Я не использую FindBugs в моем проекте ..

0

Спасибо за ваши ответы. Сонар теперь поднимает покрытие кода. Проблема заключалась в том, как я описал файлы exec Jacoco. Я использовал переменную parent.project.build.directory. Это не сработало. Теперь я храню файлы exec в каталоге сборки проектов.

Смежные вопросы