Sonar ne montre pas la couverture de code après la génération réussie avec le plugin Jenkins Sonar
J'essaie d'obtenir la couverture de code avec Sonar et Jenkins. Je vois, Jenkins, Sonar plugin est correctement exécutée cas de test JUnit et complète de construire avec succès. Mais Sonar ne pas afficher les résultats de Couverture de Code (toujours à l'affiche 0.0% que la couverture de code) sur le projet. Mais Sonar ne montrer "l'Unité de la réussite du test".
Je suis à l'aide de Maven avec Jenkins et Sonar.
Je reçois le message ci-dessous dans Jenkins journaux lors de l'exécution de la Sonar plugin:
Projet de couverture est fixé à 0% pas de JaCoCo les données d'exécution a été sous-évaluées: .../sonar/cible/jacoco.exec
Quelqu'un peut-il m'aider comment faire pour obtenir correct de la couverture de code sur n'importe quel projet Sonar.
source d'informationauteur Venkat
Vous devez vous connecter pour publier un commentaire.
Juste parce que Sonar invoquée Infaillible correctement (et que vous avez reçu le "test de l'Unité de succès" message) ne signifie pas que JaCoCo instrumenté votre code.
Essayez d'exécuter la JaCoCo directement. Vous pourriez trouver pourquoi JaCoCo échoue directement:
mvn jacoco:prepare-agent test jacoco:report
JaCoCo aura lieu jacoco.exec ainsi que son XML/HTML rapports à l'intérieur de cible/jacoco. Ou ce sera un échec, et j'espère que vous aurez une meilleure idée du pourquoi.
Un problème très commun est que le JaCoCo javaagent ne fonctionnera pas si vous l'avez changé, l'Infaillible argLine à tous, parce que
jacoco:prepare-agent
juste définit la argLine de propriété qui, dans ce scénario, est commodément ignoré. Vous pouvez définir préparez-agentpropertyName
propriété de quelque chose d'autre (comme jacocoArgLine) et comprennent que dans votre argLine config:<argLine>-Xmx1024m ${jacocoArgLine}</argLine>
J'ai lu https://docs.sonarqube.org/display/PLUG/Code+Couverture+++Tests+pour+Java+Projet et utilisé cobertura que ma couverture de code du plugin, puis je vois la couverture de code affiche pour les petits projets. Quand je check pour un grand projet sonar je viens de voir la couverture de code que - cela signifie qu'elle est vide. Dans les journaux que j'ai pu trouver que Cobertura rapport n'a pas été trouvée dans /.../coverage.xml chemin d'accès.
coverage.xml n'a pas été générée en raison de OutOfMemeryError:heapspace. Depuis que mon projet est un projet comme lorsque j'ai mis en mémoire dans la mémoire de 2 go et cobertura plugin mémoire 1,5 GO sonar obtient de couverture de code affiché.
Au lieu d'utiliser le Jenkins, sonar plugin pour l'exécution de sonar, essayez de le faire avec maven, par l'exécution de la sonar objectif. Habituellement, cela est plus facile à former une nouvelle étape de génération et de peaufiner tous les chemins jusqu'à sonar détecte tous les fichiers concernés.
Dans votre cas, je suppose qu'il peut lire les junit/testng rapport, mais ne peut pas trouver le jacoco résultats (jacoco.exec). Est le chemin de sonar sorties(
../sonar/target/jacoco.exec
) correct?Selon cette post de blogvous avez probablement oublier de mettre le
sonar.binaries
propriété dans votre projet de propriétésVotre Sonar plug-in ne peut pas trouver le fichier de rapport généré par Jacoco.
Dans votre pom(parent ou enfant) regardez pour l'
<destFile>
tag sousjacoco/prepare-agent
exécution. Modifier le nom et l'emplacement detarget/jacoco.exec
et vous êtes bon pour aller!