• # Compléments d'info

    Posté par (site web personnel) . En réponse à la dépêche Gérer des seuils d'alerte qualité sur le code source avec Sonar 1.6. Évalué à 10.

    Sonar est un outil pour tracker la qualité du code source en Java. Il fonctionne fortement avec maven [1], et peut s'utiliser avec le serveur d'intégration Hudson [2].

    Si vous développez en Java et que vous êtes un peu habitués à maven (sinon, courez vous renseigner sur ce fabuleux outil), l'utilisation de sonar est aisée, pour ne pas dire simplissime. Vous définissez les éléments que vous souhaitez observer :
    - executions des tests unitaires
    - couverture de code testée par ceux-ci (avec cobertura[3] par exemple)
    - analyse statique (avec checkstyle [4] ou pmd [5])

    On peut accéder en ligne aux différents rapports générés par sonar, voir le code source et les portions couvertes, les violations de règles, la proportion de commentaires et la présence de javaodoc... Les valeurs de ces différents indicateurs sont stockées, donc on peut voir l'évolution de chacun d'entre eux.

    Au départ on peut être sceptique quant à l'intérêt d'un tel logiciel, mais en réalité on y prend très vite goût !
    Dans le projet sur lequel je bosse il a même apporté une émulation très positive ! Chacun d'entre nous essaie de couvrir son code au maximum. D'expérience nous nous sommes aperçus qu'une couverture de 85% de code est assez rapide à atteindre. Les 15 derniers sont plus difficiles, mais ce sont pourtant ceux-là qui contiennent les portions de code les plus bugogènes. En général ce sont certaines clauses catch (IOException, ...) mais en écrivant quelques objets bouchons pour les tests, on arrive à en simuler un certain nombre. Et c'est là qu'on s'aperçoit des faiblesses du code sur des cas non passants.

    Pour ma part je suis devenu un adepte de ce logiciel et je le conseille à quiconque veut un code propre, maintenable, qui cherche à éviter au maximum les régressions.
    Tout ceci à néanmoins un prix. Le temps consacré à l'écriture des classes de tests, même si à l'usage ça devient une habitude de commencer par écrire les méthodes de tests.

    [1] : http://maven.apache.org/
    [2] : https://hudson.dev.java.net/
    [3] : http://cobertura.sourceforge.net/
    [4] : http://checkstyle.sourceforge.net/
    [5] : http://pmd.sourceforge.net/