Gérer des seuils d'alerte qualité sur le code source avec Sonar 1.6

Posté par (page perso) . Modéré par tuiu pol.
Tags : aucun
9
12
fév.
2009
Java
Sonar est une plate-forme libre (LGPL v3) permettant de gérer la qualité du code source (exécution de tests unitaires, analyse de la couverture du code par ces tests, vérifications du respect des règles de codage, etc.).

La version 1.6 de Sonar vient de sortir. Cette version met particulièrement l'accent sur la gestion des profils qualité en permettant notamment d'utiliser des profils différents en fonction de la typologie du projet et en fournissant un mécanisme d'alertes basé sur la gestion de seuils (par exemple déclenchement d'une alerte si la couverture de code est inférieure à 35%...). Cette gestion avancée des profils permet désormais de classer l'outil comme un outil de gouvernance qualité et non plus seulement comme un outil de reporting des métriques qualité.

Pour essayer ces nouvelles fonctionnalités, il suffit de télécharger la version 1.6 et de suivre le "2 minutes tutorial".
  • # Langage ?!

    Posté par . Évalué à 7.

    Impossible de savoir sur quel langage cela fonctionne !

    (ps: j'aime beaucoup la voie anglaise avec un super accent français :)

    "La première sécurité est la liberté"

    • [^] # Re: Langage ?!

      Posté par . Évalué à 4.

      Non, pas impossible. Apparemment, il est documenté avec Javadoc, je te laisse en tirer les conclusions qui s'imposent.
      • [^] # Re: Langage ?!

        Posté par (page perso) . Évalué à 2.

        Apparemment, il est documenté avec Javadoc, je te laisse en tirer les conclusions qui s'imposent.

        Ruby ? :D
        http://www.ohloh.net/p/sonar/analyses/latest
      • [^] # Re: Langage ?!

        Posté par (page perso) . Évalué à 3.

        Il y a la tasse de café, mais c'est pas évident non plus.

        Envoyé depuis mon lapin.

        • [^] # Re: Langage ?!

          Posté par . Évalué à 1.

          À survoler les sources, c'est quand même beaucoup du Java.
          • [^] # Re: Langage ?!

            Posté par (page perso) . Évalué à 3.

            ah ?
            va falloir le dire à ohloh alors qui trouve :
            60% Ruby 178,226 lignes
            11% Java 33,024 lignes
            • [^] # Re: Langage ?!

              Posté par . Évalué à 1.

              Oui, c'est au départ basé sur maven et les outils de couverture de tests et d'analyse du code Java (Cobertura, Clover, FindBugs...).

              Cela fonctionne avec Maven, mais il est possible de l'utiliser pour des projets non-maven.

              Un projet doit permettre de l'utiliser pour php, mais je n'ai pas le lien sous la main (lu sous la user-list).
    • [^] # Re: Langage ?!

      Posté par (page perso) . Évalué à 2.

      De ce que je connais du produit, c'est exclusivement du Java pour des projets utilisant Maven comme outil de build.

      Sonar n'est pas le seul sur le sujet. Il existe d'autres projets (en libre bien sûr) sur le sujet de la collection et agrégation de métriques, visant aussi la "gouvernance qualité" sur un périmètre plus large que simplement le java.
      • [^] # Re: Langage ?!

        Posté par . Évalué à 4.

        Comme par exemple ? (pour du c++ )

        "La première sécurité est la liberté"

        • [^] # Re: Langage ?!

          Posté par (page perso) . Évalué à 4.

          Le projet Squale http://www.squale.org

          Attention, là aussi ce n'est pas un outil pour calculer les métriques, mais bien pour les collecter et les agréger intelligemment pour produire un tableau de bord qualité et faire de la "gouvernance"
          • [^] # Re: Langage ?!

            Posté par . Évalué à 2.

            il n'existe pas d'outil qui gèrent les tests unitaires, leur lancement, les taux de couverture et autre métrique en plus, etc... ?

            "La première sécurité est la liberté"

  • # Compléments d'info

    Posté par (page perso) . É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/

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.