with - sonar-maven-plugin




Сонар, анализирующий Maven 3 и многоязычный проект с использованием JENKINS (2)

Если вам нужен анализ зависимостей, то, действительно, единственный способ использовать плагин Maven для анализа.

Если вы хотите переопределить исходные каталоги Maven по умолчанию, используя свойство sonar.sources из командной строки, вы должны смотреть / голосовать за этот билет: https://jira.codehaus.org/browse/MSONAR-70

Обратите внимание, что, начиная с SonarQube Maven Plugin 2.3, мы используем внутренний API-интерфейс сонара, поэтому переопределение свойств из командной строки может работать в вашей ситуации (поскольку, кажется, у вас есть проект с одним модулем). Но никаких гарантий до тех пор, пока MSONAR-70 не будет исправлена.

Вот проблема / проблема, обнаруженная при использовании Sonar в проекте Java JS Maven 3 с использованием сборки JENKINS .

Чтобы проанализировать мой проект, я выбрал два разных способа, но оба они не работают должным образом.

Первый путь : запуск Sonar как отдельной задачи в качестве пост-строительной операции в JENKINS

Плагин Sonar v2.1 Установлен от JENKINS

Sonar Runner v2.3 Установлен от JENKINS

В разделе после сборки моего проекта maven я проверяю Launch Sonar как отдельную задачу, и я задал следующие свойства:

# Required metadata
sonar.projectKey=***
sonar.projectName=***
sonar.projectVersion=1.0
sonar.java.source=1.7

# Path to the parent source code directory.
sonar.sources=src/main

#Path to the directories to exclude
sonar.exclusions=src/main/webapp/ui/ext/**,src/main/webapp/ui/build/**,src/main/webapp/ui/admin/sass/**,src/main/webapp/ui/user/sass/**,src/main/ressources/**

#Path to classes directory
sonar.binaries=target/classes

#Path to Junit test reports and test files
sonar.junit.reportsPath=target/surefire-reports
sonar.tests=src/test
sonar.dynamicAnalysis=reuseReports

#Jacoco coverage report
sonar.jacoco.reportPath=target/jacoco.exec
sonar.java.coveragePlugin=jacoco

# Encoding of the source code
sonar.sourceEncoding=UTF-8

Таким образом, я могу анализировать JAVA и JS, как я хочу. Но SONAR не загружает зависимости maven, поскольку они должны быть загружены. Вот журнал, когда SONAR анализирует:

09:23:55.605 INFO  - Java bytecode scan...
09:23:55.646 WARN  - Class 'org/springframework/context/ApplicationContext' is not    accessible through the ClassLoader.
09:23:55.656 WARN  - Class 'com/mongodb/MongoClient' is not accessible through the ClassLoader.
09:23:55.657 WARN  - Class 'com/mongodb/DB' is not accessible through the ClassLoader.
09:23:55.661 WARN  - Class 'org/springframework/context/ApplicationContext' is not    accessible through the ClassLoader.
09:23:55.662 WARN  - Class 'org/springframework/context/ApplicationContext' is not accessible through the ClassLoader.
...
09:23:55.749 WARN  - Class 'org/apache/log4j/Logger' is not accessible through the ClassLoader.
09:23:55.773 INFO  - Java bytecode scan done: 168 m

Я вижу в Sonar код покрытия ... и анализ УСПЕШНО Но я не могу сохранить эти ПРЕДУПРЕЖДЕНИЯ в моей сборке.

Поэтому я сделал анализ сонара, используя maven .

Второй путь: Соанар с использованием maven

Плагин Maven v3.0.4 Установлен от JENKINS

Плагин Sonar v2.1 Установлен от JENKINS

В секции после сборки я выбираю Sonar, и я устанавливаю следующие свойства:

 -Dsonar.projectKey=***
 -Dsonar.projectName=***
 -Dsonar.projectVersion=1.0
 -Dsonar.java.source=1.7

 -Dsonar.sources=src/main

-Dsonar.exclusions=src/main/webapp/ui/ext/**,src/main/webapp/ui/build/**,src/main/webapp/ui/admin/sass/**,src/main/webapp/ui/user/sass/**,src/main/ressources/**

-Dsonar.binaries=target/classes

-Dsonar.junit.reportsPath=target/surefire-reports
-Dsonar.tests=src/test
-Dsonar.dynamicAnalysis=reuseReports

-Dsonar.jacoco.reportPath=target/jacoco.exec
-Dsonar.java.coveragePlugin=jacoco

-Dsonar.sourceEncoding=UTF-8

Используя этот способ, у меня больше нет проблемы с загрузчиком класса и загружаются все зависимости.

Но Sonar анализирует только код JAVA , даже если я определяю sonar.sources=src/main он анализирует только JAVA .

Вот журнал:

[INFO] --- sonar-maven-plugin:2.2:sonar (default-cli) @ WebDark ---
[INFO] SonarQube version: 4.2
INFO: Default locale: "fr_FR", source code encoding: "UTF-8"
....
[INFO] [15:20:59.054] Base dir: /**/**/jenkins/jobs/**/workspace
[INFO] [15:20:59.054] Working dir: /**/**/jenkins/jobs/**/workspace/target/sonar
[INFO] [15:20:59.054] Source dirs: /**/**/jenkins/jobs/**/workspace/src/main/java
[INFO] [15:20:59.054] Test dirs: /**/**/jenkins/jobs/**/workspace/src/test/java
[INFO] [15:20:59.054] Binary dirs: /**/**/jenkins/jobs/WebDark/workspace/target/classes
[INFO] [15:20:59.055] Source encoding: UTF-8, default locale: fr_FR
[INFO] [15:20:59.055] Index files
[INFO] [15:20:59.083] Excluded sources:
...
...

Опять же, анализ УСПЕШНО, но SONAR не анализирует JS . И, как вы можете видеть в журнале, Source dirs установлен в /**/**/jenkins/jobs/**/workspace/src/main/java даже если я -Dsonar.sources=src/main перед -Dsonar.sources=src/main .

Итак, можно ли анализировать JAVA и JS в проекте Maven со многими зависимостями, используя SONAR и JENKINS без каких-либо ПРЕДУПРЕЖДЕНИЙ / ОШИБКИ и надлежащим образом? Есть ли у SONAR ограничения?

Благодарим вас за понимание моего поста и помощь в решении моей проблемы.


Надеюсь, я могу помочь вам, указав вам первый абзац этой документации:

Это sais "... Поэтому для многоязычного проекта свойство обычно должно быть переопределено на: sonar.sources = src. Обратите внимание, что это свойство может быть установлено только в файле pom. Невозможно установить его через командной строки ".

http://docs.codehaus.org/display/SONAR/Analyzing+with+Maven#AnalyzingwithMaven-AnalyzingaMulti-languageProject

Удачи!





sonarqube