tutorial sonar scanner coverage configurar con code maven jenkins continuous-integration code-analysis sonarqube

maven - scanner - sonarqube linux



Sonar analizando Maven 3 y el proyecto de varios idiomas utilizando JENKINS (2)

Aquí hay un problema / problema que se encontró al usar Sonar en un proyecto Java J de Maven 3 usando la construcción de JENKINS .

Para analizar mi proyecto, he elegido dos formas diferentes, pero ambas no funcionan como deberían.

Primera forma : Lanzar Sonar como tarea independiente como una acción posterior a la construcción en JENKINS

Sonar Plugin v2.1 instalado desde JENKINS

Sonar Runner v2.3 instalado desde JENKINS

En la sección posterior a la construcción de mi proyecto maven, compruebo Launch Sonar como tarea independiente y establezco estas propiedades:

# 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

De esta forma puedo analizar tanto JAVA como JS como quiera. Pero SONAR no carga las dependencias de maven ya que deberían cargarse. Aquí está el registro cuando SONAR analiza:

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

Puedo ver en Sonar la cobertura del código ... y el análisis es EXITOSO. Pero no puedo guardar estas ADVERTENCIAS en mi versión.

Entonces hice un análisis de Sonar usando maven .

Segunda forma: Soanar usando maven

Maven plugin v3.0.4 Instalado de JENKINS

Sonar plugin v2.1 instalado desde JENKINS

En la sección de creación posterior, elijo Sonar y establezco estas propiedades:

-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

Usando esta forma, ya no tengo más problemas con el cargador de clases y todas las dependencias están cargadas.

Pero Sonar solo analiza el código JAVA , incluso si defino sonar.sources=src/main solo analiza JAVA .

Aquí está el registro:

[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: ... ...

De nuevo, el análisis es EXITOSO , pero SONAR no analiza JS . Y como puede ver en el registro, los Source dirs están configurados en /**/**/jenkins/jobs/**/workspace/src/main/java incluso si -Dsonar.sources=src/main antes -Dsonar.sources=src/main .

Entonces, ¿es posible analizar JAVA y JS en un proyecto Maven con muchas dependencias que usan SONAR y JENKINS sin WARNING / ERROR y de una manera adecuada ? ¿ SONAR tiene límites?

Gracias por aceptar mi publicación y ayudarme a resolver mi problema.



Si desea un análisis de dependencia, de hecho, es la única manera de usar el plugin Maven para hacer análisis.

Si desea poder anular los directorios de origen Maven predeterminados usando la propiedad sonar.sources desde la línea de comando, debe mirar / votar este ticket: https://jira.codehaus.org/browse/MSONAR-70

Tenga en cuenta que a partir de SonarQube Maven Plugin 2.3 estamos utilizando internamente la API sónar-runner para que anular las propiedades desde la línea de comandos pueda funcionar en su situación (ya que parece que tiene un solo proyecto de módulo). Pero no hay garantía hasta que MSONAR-70 esté corregido.