Métriques et Sonar

publicité
Métriques et Sonar
Philippe Collet
Licence 3 Informatique – S6
2016-2017
Sonar
r Outil open-source
n Géré par la société sonar-source depuis 2008 (SonarQube)
r Objectifs :
n Fournir une analyse complète de la qualité d'un projet de développement à
partir de métriques
n Evaluer la qualité du code
n En connaître l'évolution au cours du développement
Ph. Collet
2
Sonar: fonctionnalités principales
r Tableau de bord des projets analysés
r Détection rapide du code « à risque », des points faibles d’un projet
r Mesures quantitatives : nombre de classes, duplication de code, etc.
r Mesures qualitatives : couverture et taux de réussite des tests,
complexité du code, respect des règles de codage, etc.
r Historiques des métriques, fonction « time machine » sur plusieurs
versions
r Support de plus de 600 règles de qualité, de profils pour les règles
de codage,
r Visualisation du code source avec les violations détectées
Ph. Collet
3
Structure de Sonar
r un runner, qui lance des analyse et compile les résultats
n Plugin maven, plugin gradle, etc.
n Runner stand-alone en Java
n Attention, tant que le runner n’est pas de nouveau exécuté, la BD n’est pas
mise à jour
r une base de données, qui stocke les analyses des projets étudiés
r un serveur web pour consulter les données
n Par défaut : http://localhost:9000
r des plugins pour intégrer dans les IDE
Ph. Collet
4
Installation proposée
r Une installation stand-alone de SonarQube
n Au moment de ce cours : LATEST = 6.2
r http://docs.sonarqube.org/display/SONAR/Get+Started+in+Two+Minutes
Ph. Collet
5
Commande jacoco maven
r mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent install
n (ou « clean package » à la place de install)
r mvn sonar:sonar
r Références
n http://docs.sonarqube.org/display/PLUG/Usage+of+JaCoCo+with+Java+Plugin
n http://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner+for+
Maven
Ph. Collet
6
Plugin softvis3d
r http://softvis3d.com/#/download
n Copier le plugin téléchargé dans le répertoire Sonar sous
« extensions/downloads »
n Relancer le serveur
n Activer dans « More » sur un projet en particulier
Ph. Collet
7
Intégration AndroidStudio / Gradle / Sonar
r Gradle (plugin) :
https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner+for+Gradle
r Configuration du scanner dans gradle.properties (optionnel)
systemProp.sonar.host.url=http://localhost:9000
systemProp.sonar.login=token
r Activation du plugin sonar dans le build.gradle général :
buildscript {
repositories {
maven {
url "https://plugins.gradle.org/m2/"
}
}
dependencies {
classpath "org.sonarsource.scanner.gradle:sonarqube-gradleplugin:2.2.1"
}
}
apply plugin: "org.sonarqube"
Ph. Collet
8
Intégration AndroidStudio / Gradle / Sonar
r Configuration jacoco dans le build.gradle de l’application
apply plugin: 'jacoco'
r Dans la partie
android {
…
debug {
testCoverageEnabled true
}
}
testOptions {
unitTests.all {
jacoco {
includeNoLocationClasses = true
}
}
}
Ph. Collet
9
Intégration AndroidStudio / Gradle / Sonar
r Toujours dans le build.gradle de l’application
sonarqube {
properties {
property "sonar.sources", "src/main/java,src/main/res"
property "sonar.tests", "src/test/java,src/androidTest/java"
property "sonar.java.coveragePlugin", "jacoco"
property "sonar.jacoco.reportPath",
"${project.buildDir}/jacoco/testDebugUnitTest.exec"
property 'sonar.jacoco.itReportPath',
"${project.buildDir}/outputs/code-coverage/connected/coverage.ec"
property "sonar.junit.reportsPath", "${project.buildDir}/testresults/debug" // path to junit reports
}
}
Ph. Collet
10
Intégration AndroidStudio / Gradle / Sonar
r Exécution de :
r gradle sonarqube
r Par exemple après un appel à gradle connectedAndroidTest ou une commande
interactive similaire dans AndroidStudio
Ph. Collet
11
Téléchargement