Dot.Blog

C#, XAML, Xamarin, UWP/Android/iOS

NDepend 6 est arrivé !

[new:30/09/2015]NDepend est un outil d’analyse du code absolument indispensable. La version 6 le rend encore plus précis et puissant. Coder sans NDepend c’est comme descendre à la mine sans prendre une lanterne vous allez comprendre pourquoi !

Un produit stable qui évolue sans cesse

Ndepend est un produit stable, il existe depuis plusieurs années, et c’est un produit en constante évolution. Pas le genre d’évolution sapin de Noël pour dire qu’on a fait une version n+1 mais des évolutions intelligentes qui le rendent toujours plus agréable à utiliser et toujours plus fins dans ces analyses et conseils.

Des articles Dot.Blog pour mieux comprendre

A generated graph of dependencies between some classes of System.Collections.GenericDéjà en 2009 je vous parlais de cet outil d’analyse de code original et puissant. Je ne vais pas faire de redite et je vous invite à lire cet ancien billet. J’abordais déjà de façon élogieuse les fantastiques capacités d’analyse du code qu’offrait le langage CQL qui permet d’interroger le code comme le SQL permet d’interroger une base de données.

D’ailleurs c’est sur cet aspect là que j’insistais en 2010 à l’occasion de la sortie de NDepend 3 “votre code est une base de données en or…”. Là encore j’invite le lecteur à ouvrir le lien pour y découvrir comment NDepend et son langage d’interrogation du code permet de créer des règles puis de tester leur bonne application. Complexité, erreurs sournoises non détectées par le compilateur car d’ordre logiques, non détectées aussi par Resharper pourtant très efficace, NDepend est un outil d’une dimension supérieure, il offre une véritable cartographie de votre code et de sa santé. Ses nombreux graphiques et rapports sont des aides précieuses, une sorte d’audit permanent du code, de l’évolution de sa stabilité au fil des releases, etc…

Plus récemment en 2013, à l’occasion cette fois-ci de la sortie de la version 5, je vous proposais un billet plus long et plus détaillé “L’arme fatale : NDepend 5”. Bien entendu plutôt que me répéter je vous invite à lire cet article qui montre pourquoi NDepend est un outil d’audit de code indispensable et en même temps un compagnon de refactoring bien plus fin que les aides de Resharper (excellent produit qui reste complémentaire par ailleurs et qui offre d’autres services aussi).

Parmi les faits notables la V5 remplaçait le CQL pourtant déjà puissant par CQLinq, une version LINQ de CQL ce qui rendait le langage d’interrogation encore plus puissant et versatile. Quand je vous disais plus haut que chaque version apporte de vraies améliorations ce n’était pas juste par gentillesse parce que j’aime NDpend. C’est vrai, tout simplement.

NDepend : vous en avez besoin !

Je n’essaye pas d’utiliser une veille méthode de Jedi pour vous influencer, quoi que… NDepend est un outilSelection by Metrics and display the set of methods selected on the Metrics View complet, puissant qui ne peut se discuter rapidement. L’essayer reste encore le moyen le plus simple de comprendre à quel point on a besoin (la version d’essai de 14 jours est là pour çà, suivez le lien !). Même pour celui qui comme moi connait plutôt bien le langage les méthodes et le reste NDepend offre une vision sans concession et juste de nombreux aspects à creuser, à vérifier ou corriger qui auraient échappé à la vigilance. Parfois aussi certaines violations de règles n’en sont pas dans un projet donné, mais cela force à justifier de tels choix, à savoir pourquoi on fait “mal” et pourquoi on l’assume … ou pas !

Si j’en ai besoin, raisonnablement pourquoi pas vous …

NDepend ne coute pas très cher (299€ pour une personne) et évite de laisser trainer du code mal ficelé, de savoir où il est nécessaire de refactorer d’urgence, etc. Il s’intègre à merveille dans Visual Studio et devient vite indispensable. Tous les développeurs devraient passer leur code sous l’œil impitoyable de NDepend, tout chef de projet devrait contrôler le code de ses développeurs avec cet outil, tout auditeur devrait commencer par une analyse de NDepend pour savoir comment guider son audit de façon efficace.

La version 6 ?

Je ne l’oublie pas ! Même si l’essentiel a été dit et si vous devez télécharger la version d’évaluation il reste des choses à dire (arrivez ici et si vous n’êtes pas un Toydarien, sur qui les trucs mentaux de Jedi ne marchent  pas, vous devriez déjà être sur le site de NDepend !).

 

La version 6 s’intègre bien entendu avec Visual Studio 2015, si vous ne l’utilisez pas encore cela ne devrait pas tarder, la RTM de Windows 10 vient d’être signée ce qui veut dire qu’elle va arriver dans très très peu de temps… Et VS2015 vous sera aussi indispensable que NDepend !

Cette version permet aussi d’attacher le projet NDepend à la Solution VS, idée simple mais dont a du mal à se passer ensuite. C’est un peu comme les règles partageables. Quand on utilise NDepend sur plusieurs machines, quand on l’utilise au sein d’une équipe, il est généralement intéressant de pouvoir partager les mêmes jeux de règles. La V6 simplifie grandement un tel partage.

Des explications ! NDepend savait détecter des tas de situations à problème. Grâce à son langage il permettait même à chacun de créer ses propres règles ce qui en étend à l’infini les possibilités. La version 6 apporte un vrai “plus” : les explications. Les règles sont désormais accompagnées d’une fiche détaillant le pourquoi de la chose mais aussi des indications sur comment corriger la situation en cas de violation. C’est précieux.

Toujours soucieux des détails Patrick Smacchia, auteur de NDepend, a réécrit plus de 30% des règles fournies pour qu’elles soient encore plus pertinentes et qu’elles produisent moins de “faux positifs”.

Pour ceux qui utilisent TFS (Version Control ou Git) l’intégration offerte par la V6 sera un avantage de taille d’autant qu’il est possible de définir des seuils d’avertissements en fonction du nombre de règles violées par exemple. Tout comme il est possible d’ouvrir les rapports depuis l’UI Web de TFS grâce à une extension fournie.

L’intégration avec SonarQube (une plateforme ouverte pour gérer la qualité du code) ravira les plus tatillons qui veulent avoir l’œil sur tout depuis un point central (les violations de règles de NDepend et leur localisation dans le code sont par exemple visibles depuis l’UI de SonarQube).

Dans le même esprit la V6 ajoute l’intégration avec TeamCity un outil d’intégration continue (gratuit) produit par JetBrains (les concepteurs de Resharper mais aussi de IntelliJ IDEA, RubyMine…).

Tout aussi essentiel la V6 gère correctement le code Async. Mieux il est possible d’utiliser la nouvelle propriété Method.IsAsync dans des requêtes (ou des règles) pour filtrer les méthodes de ce type. La suppression du code généré par le compilateur (Lambda, types anonymes, méthodes async…) renforce aussi la qualité des analyses et des métriques fournies.

La colorisation de vue des métriques en fonction de l’importance d’un critère choisi librement, un affichage clair du pourcentage de couverture du code par les tests, etc… Parti d’une bonne idée, NDepend a su devenir un produit mature. Et c’est tout à l’honneur de son créateur. Des idées on voit partout (CodePlex en est plein par exemple), mais des idées qui aboutissent et se concrétisent en véritables produits utilisables, ce n’est pas si commun…

Conclusion

La V6 est une version majeure qui amplifie à la fois l’utilité de NDepend et le plaisir de s’en servir.

Gérer la complexité de son code, et pire celui des autres, est un chalenge perpétuel même pour le développeur aguerri. Repérer d’un coup d’œil les zones à risques, les erreurs potentielles, comparer la fiabilité des builds successifs, l’amélioration ou la détérioration de la maintenabilité, savoir où le refactoring est essentiel, rechercher des structures de code pour évaluer l’impact d’une modification, et milles autres choses indispensables à la fourniture d’un code de qualité, tout cela trouve réponse dans NDepend.

Il faut saluer une nouvelle fois les efforts réels fournis par Patrick pour délivrer un outil à la fois intelligent et pratique de mieux en mieux intégré à l’environnement de travail (VS, TFS…), toujours plus précis et à chaque fois plus facile à piloter.

NDepend tout comme Resharper dans une autre catégorie est un must have, un outil de travail indispensable. Testez-le et achetez-le !

this tool is the tool you’re looking for… (j’aurai essayé jusque bout !)

Stay Tuned et que la force soit avec vous Sourire !

blog comments powered by Disqus