web-dev-qa-db-fra.com

Analyse de Android Project avec Lint et SonarQube

J'ai vraiment eu un "débordement" en essayant de faire fonctionner ces choses ensemble. J'ai suivi les instructions à partir d'ici: http://docs.sonarqube.org/display/PLUG/Android+Lint+Plugin et j'ai finalement obtenu un serveur SonarQube 5.1.1 avec Android Lint plugin 1.1 installée. J'ai ensuite configuré ma version Gradle multi-module pour qu'elle fonctionne avec le plug-in SonarQube: voir le fragment de code de la configuration racine ci-dessous.

plugins {
    id 'org.sonarqube' version '1.0'
}

sonarqube {
    properties {

        property 'sonar.Host.url', 'sonarqube-server:9000'
        property 'sonar.jdbc.url', 'jdbc:mysql://sonarqube-db:3306/sonar?useUnicode=true&characterEncoding=utf8'
        property 'sonar.jdbc.driverClassName', 'com.mysql.jdbc.Driver'
        property 'sonar.jdbc.username', 'sonar'
        property 'sonar.jdbc.password', 'sonar'
        property 'sonar.sourceEncoding', 'UTF-8'
        property 'sonar.login', 'admin'
        property 'sonar.password', 'admin'

        property 'sonar.profile', 'Android Lint'

        property 'sonar.import_unknown_files', true
        property 'sonar.Android.lint.report', 'build/outputs/lint-results.xml'
    }
}

Et après cela, j'ai exécuté la tâche lint sonarqube Pour exécuter l'analyse. En conséquence, j'ai reçu une grande quantité d'erreurs Lint concernant le projet "retrolambda" (Java.lang.UnsupportedOperationException: Unknown ASTNode child: LambdaExpression), Ce qui est tout à fait normal, et des fichiers lint-results.xml (Accompagnés de la version HTML) pour chaque module contenant des descriptions des problèmes découvert. Le rapport indique qu'il y a eu 8 erreurs et 434 avertissements trouvés. Mais les choses ont mal tourné lorsque le plugin sonarqube a essayé de télécharger les résultats sur le serveur SonarQube. Le journal était plein de messages "Impossible de trouver le fichier" et "Impossible de trouver la règle". Et une fois le traitement terminé, aucun problème n'a été signalé pour mon projet sur le serveur SonarQube.

Et je me demande, qu'est-ce qui a mal tourné? J'ai vérifié les chemins et tous les fichiers étaient là. J'ai regardé à travers toutes les discussions que j'ai pu atteindre, et il semble que ma configuration soit correcte et que je fais tout bien. Quelqu'un a-t-il une idée de ce que j'ai raté et de ce qui doit être vérifié? Toutes suggestions ou idées sont les bienvenues.

Je serai également heureux s'il existe un moyen d'importer des données sur les peluches à l'aide de SonarQube Runner externe, car cet outil semble être plus prévisible et stable qu'un plugin Gradle.

50
sviklim

J'ai eu du succès avec un multimodule Android. Étant donné que les fichiers de construction complets prennent trop de place, je ne montre que les parties pertinentes ici.

Dans le projet parent build.gradle j'ai défini:

buildscript {
    ...
    dependencies { classpath 'com.Android.tools.build:gradle:1.5.0'
    ...
}
plugins { id "org.sonarqube" version "1.1" }

Dans le projet d'application (et tout autre enfant), j'ai défini:

sonarqube {
    properties {
        property "sonar.profile", "Android Lint"
        property "sonar.sources", "./src/main/Java"
    }
}

C'était la configuration minimale pour que le plug-in SonarQube commence à analyser les projets.

6
JanPl

Vos paramètres Gradle semblent corrects, avez-vous installé Android plugin sur le serveur SonarQube.

Je ne vois pas cette étape sur votre question, sinon passez à Paramètres-> Système-> Centre de mise à jour et installez Android plugin.

enter image description here

Une fois installé, vous devez redémarrer votre serveur SonarQube et relancer le sondeur-runner.

1
Abhishek Patidar