2017-05-23 1 views
2

J'ai essayé de configurer sonar-scanner pour un projet Maven contenant un module java (core) et un module javascript (web).Comment configurer le scanner Sonarqube pour java et javascript dans le même projet

Je peux obtenir des données de couverture java scannées et présentées sur mon serveur sonarqube local, ou javascript, mais pas les deux.

Voici mon fichier sonar-project.properties, où la propriété sonar.modules peut avoir l'une des 4 valeurs:

### below: select just one of the 4 possible values for sonar.modules 
sonar.modules = core --> get java coverage data 
sonar.modules = web --> get javascript coverage data 
sonar.modules = core,web --> get only java coverage data 
sonar.modules = web,core --> get only java coverage data 

sonar.sources=src 

# javascript coverage report 
web.sonar.exclusions=src/main/webapp/js/lib/**/*.js 
web.sonar.javascript.lcov.reportPath = test-output/coverage/lcov.info 

# java coverage report 
core.sonar.java.binaries = target/classes 
core.sonar.java.libraries = ../web/target/scheduler-web-3.5.0-SNAPSHOT/WEB-INF/lib 
core.sonar.java.test.libraries = ../web/target/scheduler-web-3.5.0-SNAPSHOT/WEB-INF/lib 
core.sonar.jacoco.reportPath = target/jacoco.exec 
core.sonar.junit.reportsPath = target/surefire-reports 
core.sonar.jacoco.reportMissing.force.zero = true 

La clé de ma solution, basée sur la réponse acceptée ci-dessous:

  • Aucune modification apportée au POM de niveau supérieur.

  • Ajouté à la web/pom.xml:

<properties> 
    <sonar.javascript.lcov.reportPath>test-output/coverage/lcov.info</sonar.javascript.lcov.reportPath> 
</properties> 

essentiellement sonar ne savait pas où trouver mon fichier lcov.

Répondre

1

Vous ne devriez pas utiliser le scanner sonarqube avec un fichier sonar-project.properties dédié pour exécuter votre analyse - mais plutôt compter sur le Scanner for Maven.

Pour voir comment faire, il suffit de jeter un oeil à la façon dont sonarqube lui-même (qui contient Java et JS) est analysé:

<properties> 
 
    <!-- self-analysis --> 
 
    <sonar.sources>src/main/js,src/main/less</sonar.sources> 
 
    <sonar.tests>src/main/js</sonar.tests> 
 
    <sonar.test.inclusions>src/main/js/**/__tests__/**</sonar.test.inclusions> 
 
    <sonar.exclusions>src/main/js/libs/third-party/**/*,src/main/js/libs/require.js,src/main/js/**/__tests__/**</sonar.exclusions> 
 
    <yarn.script>build</yarn.script> 
 
</properties>

+0

La réponse ci-dessus m'a mis sur la bonne voie. J'ai ajouté au POM pour chacun des deux modules qui m'intéressaient. –

+0

Curieux de savoir pourquoi ma question a été rejetée. Prêt à le modifier. –