Java Sortie de la version 2.0 de Sonar

Posté par (page perso) . Modéré par Florent Zara.
18
18
mar.
2010
Java
Sonar est une plate-forme libre (LGPL v3) permettant de gérer la qualité du code source Java

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.
En plus de ces nouvelles fonctionnalités, la nouvelle version contient près de cinquante améliorations et corrections.
  • # Maven nécessaire ?

    Posté par . Évalué à  4 .

    Je fais erreur, ou sonar nécessite que le projet à analyser soit gérer avec Maven ? Si c'est bien le cas, ça limite un peu l'utilisation de l'outil : retour donc à du fait maison avec Hudson / Ant / etc.
    • [^] # Re: Maven nécessaire ?

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

      Effectivement, sonar fonctionne avec Maven.

      C'est d'ailleurs une bonne raison pour passer à Maven :)
      • [^] # Re: Maven nécessaire ?

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

        C'est d'ailleurs une bonne raison pour passer à Maven :)

        C'est vrai, Maven a des bugs, des comportements parfois étranges, une certaine complexité et un grand manque de documentation. Toutefois il y a quelques semaines j'ai du écrire un script ant pour compiler un projet et, malgré ses défauts, j'ai regretté à chaque ligne de ne pas pouvoir utiliser maven :o)
        • [^] # Re: Maven nécessaire ?

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

          Niveau, je trouve perso qu'on en trouve pas mal. Entre le livre de sonatype en ligne, et la doc systématique, rationnelle et bien foutue pour chaque plugins, je me suis rarement trouvé à sec.

          Après, il faut un peu de temps pour tout appréhender, mais ça se fait bien finalement (j'étais aussi un peu refroidi au départ)
          • [^] # Re: Maven nécessaire ?

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

            Désolé J'aurais du être plus précis. Je suis d'accord, la documentation d'utilisation de maven est plutôt complète et claire. Dans mon commentaire Je parlais de la documentation des API de maven et de Plexus (le framework qui est derrière) nécessaires pour écrire des plugins et là c'est un peu la misère.
          • [^] # Re: Maven nécessaire ?

            Posté par . Évalué à  1 .

            Et as-tu eu l'occasion de porter un projet déjà existant (avec un build.xml qui va bien) vers Maven ? A lire la doc, ça ne semble pas du tout évident... A moins que j'aie loupé un tuto sympa ?
            • [^] # Re: Maven nécessaire ?

              Posté par . Évalué à  1 .

              Je l'ai déjà fait sur un bon gros projet monolithique que l'on essayait de séparer en plusieurs projets en même temps et je peux te garantir que c'est pas sis simple que ça.

              Je suis tombe sur des cas bien tordus et Maven n'a jamais rendu la chose simple. La philosophie Maven est super tant que tu restes dans les clous. Gare à toi si tu en sors, tu va devoir faire des bidouilles immondes pour t'en sortir. Et Google va être ton seul ami dans ce cas.

              D'ailleurs il y a pas mal de monde qui n'apprécie pas bien Maven:
              http://kent.spillner.org/blog/work/2009/11/14/java-build-too(...)

              Un petit résumé sur mon opinion sur Maven. Un outil super pour commencer un projet simple, ou les différents composants et JAR sont déjà bien définis et où les versions des différents JARs est bien faite. Super si tu restes dans les clous de Maven.
              Si ton build est un peu compliqué je conseillerais d'éviter Maven.

              Je pense cependant que l'on gère mal un certain nombres de choses, mais tout n'est pas de notre faute. Au final, on se pose la question de retourner vers Ant.
            • [^] # Re: Maven nécessaire ?

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

              Oui une fois, sur projet perso mais c'était un petit projet et je commence à avoir une bonne connaissance de maven ce qui peut biaiser mon opinion. Il y a quelques années dans ma boîte on a porté la totalité de notre code de ant vers maven 1 ; mais il y a un gouffre entre maven 1 et maven 2.

              En fait je pense que c'est plus fastidieux que compliqué. Il faut souvent (re)découper son projet en module, chercher les bons plugins à utiliser, parfois mettre en place un dépot local pour les artéfacts produits par maven... Sur des gros projet ça peut être long.

              Je suis d'avis que ce genre de migration n'est nécessaire que quand le projet est suffisamment gros pour que des problèmes de gestion de dépendances apparaissent. C'est là je crois le plus gros point fort de maven sur ant.

              Finalement il est clair que maven simplifie pas mal la vie de celui qui gère le projet (automatisation des tests, des rapports avec Sonar, de la javadoc sur tout un ensemble de modules) mais je n'ai pas une assez longue expérience de ant, il est possible qu'un spécialiste soit capable de factoriser/appeler récursivement/... les scripts de build.
            • [^] # Re: Maven nécessaire ?

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

              Oui, j'ai passé ce projet (www.sat4j.org) de ant à maven il y a 2 ans.

              2 solutions :
              - adapter maven a ton projet (changer l'emplacement par défaut des sources, tests, etc)
              - adapter ton projet à maven

              La première solution est sans doute plus simple à court terme, mais le risque est de ne pas pouvoir utiliser facilement tous les plugins disponibles ni la documentation (qui supposent une organisation spécifique du code).

              La seconde solution demande une réorganisation complète des sources. Mais ensuite, pas de soucis, il suffit de prendre les exemples des plugins pour les faire fonctionner.

              Gros problème de cette solution : cohabitation avec l'IDE, et les autres scripts qui utilisent la base de code.

              Si le projet est du simple Java, je pense que cela ne pose pas trop de problème. Si on entre dans le cadre de JEE, il faut sans doute analyser un peu plus la situation.
              • [^] # Re: Maven nécessaire ?

                Posté par . Évalué à  2 .

                Certains plugins ont la facheuse habitude d'utiliser des chemins en durs au lieu d'utiliser les variables définies dans le pom (les meta données du projet), comme dans le cas de ta premiere solution.

                La seconde solution nous a posé des problemes avec Eclipse, mais c'est parce que l'on n'a pas pu finir la décomposition complete du projet avec une base de code non modulaire.
                J'ajouterais que cette solution présente un inconvénient majeur dans le cas de branches de maintenance ou tout merge du code des branches anciennes vers le trunk n'est pas aisée.

                Voila mon petit retour d'expérience.
    • [^] # Re: Maven nécessaire ?

      Posté par . Évalué à  1 .

      Maven et Hudson fonctionnent très bien ensemble. Tout dans ma boîte est buildé avec ce système.
    • [^] # Re: Maven nécessaire ?

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

      Sonar nécessite que Maven soit installé sur la machine afin de lancer les analyses de code, mais ne nécessite absolument pas que le projet à analyser soit géré avec Maven. Non seulement Sonar peut fonctionner en mode "light" dans lequel il n'a besoin que du code source, mais en plus il existe des connecteurs permettant de récupérer le résultat de builds venant d'autres systèmes comme ant et de les injecter dans Sonar (résultat des tests unitaires et couverture de code par exemple).
      • [^] # Re: Maven nécessaire ?

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

        Si le projet est géré par maven, utiliser sonar fonctionne en deux commandes :

        - lancer sonar
        - mvn sonar:sonar

        On peut difficilement faire plus simple :)

        J'imagine qu'il est plus difficile de remplir sonar à partir d'un projet non maven ?
        • [^] # Re: Maven nécessaire ?

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

          C'est quasi aussi simple pour tout autre projet, il faut juste le petit fichier pom nécessaire pour "nommer" le projet.
  • # Paquet debian ?

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

    Super outil ce sonar.

    Sauf erreur de ma part, il n'existe pas de paquets pour Debian. Est-c prévu par quelqu'un dans un futur proche ?
    Car c'est ce qui m'a empêché de l'installer pour l'instant. J'ai déjà installé hudson par paquets, et c'est vraiment efficace. Mais l'idée d'installer un service sonar à la mimine … je préfère attendre encore un peu :-)

    Merci aux développeurs, contributeurs, et éventuels financeurs.
  • # Bravo

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

    Bravo pour la sortie de la v2.

    Vous faites vraiment un super outil, bien foutu, joli, et simple.
    Et la boite derrière (SonarSource) semble d'un bon esprit vis à vis de la communauté et du projet.

    Dommage qu'on n'est pas eu de démo à SolutionsLinux, ca aurait été l'occaz ....

Suivre le flux des commentaires

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