SonarQube : une autre vision de votre logiciel - 19 mars 2015 à Mons (Belgique)
Ce jeudi 19 mars 2015 à 19h se déroulera la 37e séance montoise des Jeudis du Libre de Belgique, avec Dimitri Durieux (CETIC), sur la thématique : Qualité / Développement / Outils / Visualisation, avec SonarQube. Séance tout public.
SonarQube (anciennement Sonar) est un projet qui permet de suivre la qualité des développements logiciels. La qualité d’un logiciel est un sujet qui divise : certains pensent qu’il s’agit d’un surcoût et la voient comme une contrainte, d’autres au contraire pensent qu’il s’agit d’une opportunité et voient la qualité comme un guide de travail.
La qualité en général c’est le fait de mettre en place les conditions (organisation, outils, règles, équipe) qui permettront de répondre aux besoins exprimés. Dans le cas d’un développement logiciel, il s’agit de développer les besoins fonctionnels et non-fonctionnels du client. Nous distinguons donc la qualité fonctionnelle (répondre aux besoins fonctionnels) et la qualité non-fonctionnelle (répondre aux besoins non-fonctionnels). On préfère donc opposer au surcoût induit par la qualité, le coût induit par le manque de qualité d’un logiciel. On appelle ce manque de qualité logicielle « la dette technique ».
La deuxième partie présente SonarQube et les détails de la séance.
Nouvelle version de Scub Foundation, usine logicielle Java libre
Nous sommes heureux de vous annoncer la sortie de la nouvelle version de Scub Foundation, notre solution libre (licence LGPL) d’industrialisation du développement et de la maintenance d’applications Java. Cette version standardise tous les aspects du développement jusqu'à la mise en place de l’intégration continue via Jenkins et de la gestion de la qualité via Sonar.
En plus des nombreuses améliorations sur les modèles de projets, d’une mise à niveau des bibliothèques et outils, nous avons aussi un nouveau site web avec une documentation plus complète, notamment sur des nouveaux sujets comme la gestion des logs avec Graylog.
note : Scub Foundation permet de standardiser le développement des applications en sélectionnant avec vous un ensemble d’outils pré-configurés, de frameworks, de conventions, de processus, de documentations et de modèles de projets qui structurent les développeurs et leurs développements.
Sonar 2.13 est disponible
Sonar, l'outil d'analyse de la qualité du code source que l'on ne présente (presque) plus désormais, vient de sortir sa nouvelle version, comme toutes les 6 semaines ou presque.
La version complètement Open Source (LGPL v3) permet d'analyser du Java, PHP, Groovy, C#, Flex/ActionScript et du Javascript et fournir les résultats détaillés et agrégés dans un portail web contenant des tableaux de bords essentiellement techniques. Il s'intègre assez naturellement avec les outils d'intégration continue.
Les nouveautés sont détaillées dans la seconde partie. Vous pouvez tester par vous même sur l'instance publique de Sonar.
Forum Programmation.autre programmation et qualité logicielle: mon blog
Sortie de la version 2.11 de Sonar
Sonar est une plate‐forme libre (sous licence LGPL v3) permettant d’analyser la qualité de code source Java, C#, PHP, ou bien encore Flex. Couplé à des outils de construction (build) ou d’intégration continue comme Maven ou Jenkins (fork de Hudson), Sonar devient alors un outil d’inspection continue (voir le billet en anglais sur le blog Sonar) et informe les développeurs de la qualité de leurs développements à tout moment du projet, à travers des tableaux de bord dédiés.
Sonar 2.11 est donc disponible, et comme mentionné dans une précédente dépêche sur la 2.10, l’outil arrive, entre autres, avec une fonctionnalité très attendue : la détection « inter‐projets » de code source dupliqué. Les autres nouveautés sont dans la seconde partie de la dépêche.
NdM : LinuxFr.org vous propose de réaliser un entretien avec des personnes de l’équipe derrière Sonar. Si vous avez des questions précises, posez‐les dans les commentaires, nous les transmettrons.
Sortie de la version 2.10 de Sonar
Sonar est une plate‐forme libre (sous licence LGPL v3) permettant de gérer la qualité du code source. Elle agrège et présente d’une manière digeste et utile les résultats de différents outils de qualité logicielle. D’abord limité à Java en utilisant les outils classiques (Findbugs, Cobertura, PMD, etc.), Sonar peut maintenant gérer la qualité de projets utilisant d’autres langages : PHP, C# et autres, grâce à des greffons libres ou propriétaires pour certains, comme Brrrr…, Cobol, VB6, C, PL/SQL, ou encore ABAP.
La version 2.10 de Sonar vient de sortir, et puisqu’il n’y a pas eu de dépêche depuis la 2.4, il y a pas mal de nouveautés à présenter (voir la seconde partie de la dépêche). À noter que la version 2.11 devrait voir la fonctionnalité que j’attends depuis longtemps : la détection du code dupliqué à travers différents projets. Précédemment, cette fonctionnalité était limitée à rechercher du code dupliqué à l’intérieur de chaque projet.
N’hésitez pas à tester la version live de Sonar, prénommée Nemo, qui recueille les informations de qualité pour différents projets open source. En outre, elle est maintenant en français si votre navigateur est paramétré pour privilégier le français face à l’anglais :). Je vous encourage à l’essayer, ce projet est vraiment prometteur.
Sortie de la version 2.4 de Sonar
La version 2.4 de Sonar vient de sortir. Parmi les améliorations et corrections de bogues se trouvent également plusieurs fonctionnalités majeures qui viennent enrichir la plate-forme :
- Possibilité de personnaliser les dashboards de projets
- Ajout d'un centre de mise à jour des greffons
- Ajout d'un moteur de règles d'architecture
- Support de Maven 3
NdM : comme dit par Francesco dans les commentaires de la dépêche précédente « Par défaut, Sonar permet de gérer la qualité de codes écrits en Java. D'autres langages peuvent être ajoutés via des greffons (libres et / ou commerciaux). »
Sortie de la version 2.3 de Sonar
La version 2.3 de Sonar vient de sortir. Parmi plus de soixante-dix améliorations et corrections de bogues se trouvent également plusieurs fonctionnalités majeures qui viennent enrichir la plate-forme :
- Il est maintenant possible d'activer plusieurs fois la même règle de codage, par exemple la règle Checkstyle "Illegal Regular Expression" avec différents paramètres et différentes sévérités. Il en est de même pour la règle PMD "XPath" avec des expressions XPath différentes. Ceci était un passage obligé pour ajouter à Sonar un moteur de règles d'architecture (ne pas accéder au package **.db.** depuis le package **.client.**, ne pas utiliser java.util.Vector...) ;
- Sauvegarde et restauration des profils qualité ;
- Développement d'une nouvelle API de règles plus simples et plus efficace ;
- Possibilité d'attacher des ressources statiques aux greffons ;
- Support des modèles qualité (par exemple le modèle ISO 9126) ;
- Nouvelles règles Findbugs.
Sortie de la version 2.1 de Sonar
La version 2.1 de Sonar vient de sortir. Parmi une cinquantaine d'améliorations et corrections de bogues se trouvent également trois fonctionnalités majeures qui viennent enrichir l'analyse de la conception et de l'architecture :
- La cartographie des bibliothèques : qui utilise quelle bibliothèque et en quelle version ?
- Détection des appels aux méthodes obsolètes ;
- Détection du code mort.
Cette version améliore également la gestion des langages dans la plate-forme. L'analyse de nouveaux langages est apparue par l'intermédiaire de greffons open source (pour PHP, Flex, .Net) ainsi que commerciaux (pour Cobol, Visual Basic, PL/SQL).
Sortie de la version 2.0 de Sonar
La version 2.0 amène dans Sonar la gestion du septième axe d'analyse de la qualité du code source. Pour rappel, les six axes déjà présents dans Sonar sont : couverture de code par les tests unitaires, vérification du respect des règles de codage, recherche de bugs potentiels, distribution de la complexité du code, recherche du code dupliqué et insuffisance de commentaires.
Le septième axe consiste à analyser le Design et l'Architecture d'une application ainsi qu'à faire ressortir des métriques orientées objet. Les fonctionnalités principales disponibles sont :
- Identifier les dépendances indésirables afin de couper les cycles entre packages ;
- Navigation dans les dépendances entre composants à l'aide d'une DSL (Dependency System Matrix) ;
- Permettre la chasse aux classes qui portent plusieurs responsabilités.
Journal Agréger des audits de code avec Sonar
Sortie de Sonar 1.9
La fonctionnalité phare de cette version est le remplacement du célèbre analyseur de code source JavaNCSS par un moteur maison : sonar-squid. L'intégration de sonar-squid permet à la fois de faire disparaître les problèmes de JavaNCSS à analyser le code utilisant les spécificités de Java 5, mais également de calculer un certain nombre de métriques de manière beaucoup plus précises (commentaires, lignes de code...) et surtout d'ouvrir de nouveaux axes d'analyse (documentation des API publiques, accesseurs...).
Sonar a pris le parti de séparer complètement les accesseurs (plus communément nommés getters et setters) des méthodes dans les mesures. Cela permet par exemple de réellement mesurer la complexité "fonctionnelle" en écartant le bruit généré par le code purement "technique" dans les applications.
Ceci a bien sûr un impact sur la manière dont doivent être interprétés les résultats ainsi que sur la continuité de l'historique des données et il est recommandé de lire l'article référencé ci-dessous "Pourquoi (ne) devriez-vous (pas) migrer à la version 1.9 ?" avant d'installer la nouvelle version. En plus de ces nouvelles fonctionnalités, la version 1.9 apporte une amélioration notable des performances ainsi qu'une compatibilité avec le moteur de base de données PostgreSQL.
La forge des plugins Sonar est opérationnelle
L'extensibilité est une qualité essentielle pour un logiciel open source qui a l'ambition d'être adopté massivement. En effet, cela permet à la communauté de contribuer en ajoutant de nouvelles fonctionnalités ou bien en améliorant l'existant et par conséquent de bénéficier d'un effet levier : c'est la magie de l'open source !
Sonar s'appuie sur un cœur qui est un mécanisme d'extension. Autour de ce cœur viennent se greffer des plugins qui contiennent les fonctionnalités de l'outil. Mais le fait d'avoir un tel mécanisme en place n'est pas suffisant pour se déclarer extensible. Il faut également répondre aux 4 points suivants :
- Une API simple d'utilisation ;
- Une forge ;
- Une communauté active ;
- Une documentation et des exemples permettant de mettre le pied à l'étrier.
Ces 4 conditions étant maintenant remplies par Sonar, tout un chacun peut se lancer dans l'écriture de plugins pour étendre l'outil.
NdM : la version 1.8 de Sonar est sortie il a 3 jours. Parmi les nouvelles fonctionnalités, on trouvera un récapitulatif des points chauds sur un projet, l'import/export des profils Findbugs et un changement concernant la publication des mesures sur les catégories ISO ; plus une ribambelle d'améliorations et de corrections par ailleurs.
Sortie de la version 1.7 de Sonar
- La possibilité d'exclure des classes ou des packages de l'analyse qualité ;
- L'élargissement du champ d'utilisation, en permettant d'injecter le résultat de la couverture de code et des tests unitaires depuis un build ant ;
- Extension du nuage de classes sur la couverture de code aux modules et packages ;
- Meilleure compatibilité avec IE6 ;
- Ajout d'une vue "résultats de tests unitaires" et d'une vue "code dupliqué" à l'outil de visualisation de code source.