Sonar

J’ai déjà travaillé avec sonar à une époque et j’ai beaucoup apprécié l’outil pour son efficacité. A présent, je l’intègre dans tous mes projets.

Installer sonar sur debian

  1. Rendez vous dans le fichier /etc/apt/source.list et copiez-y la ligne
    deb http://downloads.sourceforge.net/project/sonar-pkg/deb binary/
  2. Lancez un sudo apt-get update  puis un sudo apt-get install sonar
  3. Lancez le service avec sudo /etc/init.d/sonar start ou sudo service sonar start
  4. A présent, vous devez télécharger le runner de sonar: wget http://repo1.maven.org/maven2/org/codehaus/sonar/runner/sonar-runner-dist/2.4/sonar-runner-dist-2.4.zip
  5. Dézippez-le et placez-le dans le répertoire /opt/sonar/sonar-runner
  6. Créez un alias dans votre fichier .bashrc vous permettant de lancer le runner alias sonar-runner=’sh /opt/sonar/sonar-runner/bin/sonar-runner’

Configurer Sonar

sonar-plugins

  1. Rendez-vous sur http://127.0.0.1:9000
  2. Connectez-vous avec admin/admin (loupe Log in en haut à droite)
  3. Cliquez sur Administration > System > Update Center (url http://127.0.0.1:9000/updatecenter/installed)
  4. Cliquez sur l’onglet « Available » et choisissez d’installer le plugin php (et les autres plugins qui vous seront utiles, comme Jira, HTML, CSS, Java, Javascript, XML, etc.)
  5. Relancez sonar sudo service sonar restart

Installer les paquets nécessaires avec pear

  1. sudo apt-get install php-pear
  2. sudo pear upgrade pear
  3. sudo pear channel-discover pear.symfony-project.com
  4. sudo pear channel-discover pear.pdepend.org
  5. sudo pear channel-discover pear.phpmd.org
  6. sudo pear install pdepend/PHP_Depend-1.0.3
  7. sudo pear install –alldeps phpmd/PHP_PMD-1.3.2
  8. sudo pear install PHP_CodeSniffer­

Installer phpunit

Si vous avez une version de serveur inférieure à PHP5.6, préférez la version 4.8.

  1. sudo wget https://phar.phpunit.de/phpunit-old.phar
  2. sudo mv phpunit-old.phar phpunit.phar
  3. sudo chmod +x phpunit.phar
  4. sudo mv phpunit.phar /usr/local/bin/phpunit

Créer un profil qualité

Rendez-vous dans « Quality Profile », et cliquez sur « create ». Choisissez le langage que vous désirez, validez.

Puis cliquez sur ce profil et sur « Change parent ». Sélectionnez le profil « sonar way », qui correspond à des règles très intéressantes en plus de celles du PSR-2. Le but de créer un profil sera de pouvoir supprimer/rajouter des règles comme vous le désirerez.

Créer un fichier sonar-project.properties

Ce fichier doit être créé à la racine de votre projet. Vous pouvez, selon le langage, vous appuyez sur les modèles ici ou, pour un projet PHP, ici.

Pour un projet symfony2, je vais écrire ceci:

# Required metadata
sonar.projectKey=REST_BEHAT
sonar.projectName=REST BEHAT
sonar.projectVersion=1.0

# Comma-separated paths to directories with sources (required)
sonar.sources=src

# Language
sonar.language=php

# Encoding of the source files
sonar.sourceEncoding=UTF-8

# If I want to exclude files or directories
#sonar.exclusions=**/Tests/**,**/*Extension.php

Avec sonar.exclusions, je peux choisir d’exclure des répertoires entiers, ou seulement des fichiers dont le nom finit par Extension.php (par exemple)

Je me place à la racine de mon projet, et je lance sonar-runner.

Verdict

sonar-analyse

Ouch, 14 erreurs majeures et 8 mineures!

Voyons ça de plus près:

sonar-majeur

manager

Ok, une variable inutile. Je devais sûrement l’appeler au début, et ensuite j’ai retiré le code tout en laissant la variable en paramètre. Pas bien!

exception

Effectivement, les exceptions génériques, il vaut mieux éviter…

commented

Et le code commenté aussi!

duplication

En effet, le code dupliqué est toujours mauvais, il aurait mieux valu créer une fonction getManager() qui retourne ce service, plutôt que de l’appeler trois fois dans la classe. My bad!

contructeur

C’est Symfony qui l’a généré, mais en effet, de manière générale, si un constructeur ne fait qu’appeler son parent sans rien faire d’autre, il est simplement inutile.

Sachez que parfois, sonar trouve des erreurs curieuses. Il est possible de les déclarer comme étant des faux-positifs, et il les retire de l’analyse. J’espère que je vous ai donné envie de travailler avec sonar, un outil que je trouve complémentaire de sensio insight.

Rédigé par

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.