Dot.Blog

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

Debug d’applications WinRT sur Surface

[new:31/12/2012]Si je reste circonspect sur l’intérêt de Surface Pro vu le prix annoncé et la faible autonomie (qui était prévisible avec de l’Intel), si je reste dubitatif sur Modern UI sur PC (un PC n’est pas une grosse tablette!), je continue d’être un fan de Windows 8 particulièrement sur Surface RT. Deboguer des applications pour Surface sur Surface est impératif pour se rendre compte des temps de réponse par exemple. Mais comment cela se passe ? Plus...

Silverlight : Debug du Binding Xaml

[new:30/08/2012]Ajouté dans Silverlight 5 le debug des bindings en Xaml est une possibilité encore peu utilisée alors qu’elle simplifie beaucoup la recherche et la résolution de bugs. Une bonne raison d’en parler un peu avec un petit exemple.Plus...

Les events : le talon d'Achille de .NET...

[new:31/01/2011]Les events (gestion d’évènements) sont d’une grande puissance et existent dans presque tous les langages récents (et même quelques un plus anciens). Ils autorisent un modèle de programmation évènementiel qui se calque bien sur la façon dont sont gérées les IHM des OS modernes (pilotés par l’utilisateur et ses clics souris). Hélas ce concept réutilisé par le Framework .NET ne lui va pas très bien. Pire, dans un environnement managé (avec Garbage Collector) les évènements sont une source inépuisable de pertes mémoire !Plus...

LogViewer pour Log4Net : Le lien

Un paragraphe a sauté dans le billet précédent et je me suis aperçu que le lien vers le projet avait été zappé... Donc c'est ici : http://yourlog4netviewer.codeplex.com/ ne vous laissez pas abuser par les imitations ! :-) J'ai eu du mal à trouver rapidement un nom pour le site CodePlex, LogViewer et autres noms du même type étaient pris. Alors ne confondez pas les projets. Celui-là c'est YOUR Log4Net viewer. Sorry pour cet oubli dans le billet précédent...

Visual NDepend un outil d'analyse de code original et puissant

A partir d'une certaine taille le code d'une application devient difficile à maintenir même s'il est bien conçu. De même, la maintenance évolutive oblige souvent à mettre les mains dans un code écrit par d'autres (si ce code est assez ancien, on peut s'y perdre même en en étant l'auteur d'ailleurs !). Auditer un code est ainsi un besoin fréquent dans le travail de tous les jours d'un développeur. Si on effectue des missions d'audit ce besoin devient alors impérieux car il est nécessaire d'entrer rapidement dans un code "étranger" et toujours complexe (je n'ai jamais été appelé en audit pour des logiciels de 20 lignes...).

Les outils d'analyse de code sont ainsi des compagnons indispensables. Hélas ils ne sont pas si nombreux que ça et comme tout ce qui touche la qualité, ils sont un peu "oubliés".

Je voulais ainsi vous présenter un excellent outil : Visual NDepend.

NDepend est puissant, il permet de construire et visualiser des comparaisons, d'auditer la qualité du code, et surtout de mieux visualiser la structure d'une application. Le tout quantitavement (métriques), qualitativement (l'information est pertinente) et graphiquement (le logiciel propose de nombreux diagrammes et schémas permettant de visualiser ce qui est invisible en lisant le code source : structures, dépendances, ...).

NDepend ne se limite pas seulement à l'audit de code, c'est aussi un excellent outil de refactoring.

On notera aussi, côté puissance, l'intégration d'un langage d'interrogation, le CQL (Code Query Language), permettant à la façon de SQL de "questionner" un projet et son code comme s'il s'agissait d'une base de données. La comparaison s'arrête là avec SQL car CQL "comprend" le code alors que SQL ne comprend pas le sens des données qu'il manipule. Cette grande différence confère à NDepend une très grande souplesse et beaucoup d'intelligence.

Par exemple il est très simple de faire des requêtes du type "montre moi toutes les méthodes privées dont le nombre de lignes de code est supérieur à 20", très utile pour repérer rapidement dans un projet les lourdeurs ou la nécessité de refactoring. Une telle interrogation se formule en la requête CQL suivante "SELECT METHODS WHERE NbLinesOfCode > 20 AND IsPrivate".
On peut bien entendu créer des requêtes plus sophistiquées comme rechercher toutes les types qui sont une définition de classe et qui implémentent telle ou telle autre interface !

NDepend est ainsi un outil de grande qualité dont on ne peut que conseiller l'utilisation. Réalisé par Patrick Smacchia, un acteur connu de la scène .NET et Microsoft MVP C#, NDepend est vendu 299 euros en licence 1 utilisateur, c'est à dire pas grand chose au regard des immenses services qu'il peut rendre.

Il y a beaucoup de choses à dire sur cet outil et surtout à voir. Le mieux si vous êtes intéressés est de vous rendre sur le site du logiciel www.ndepend.com où vous pourrez visionner de nombreuses petites vidéos qui vaudront mieux que de longs discours.

Bon refactoring !