Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Thomas Lebrun

Tout sur WPF, LINQ, C# et .NET en général !

[WPF] Des requêtes NDepend pour analyser vos projets WPF

Je ne vais pas vous reparler de NDepend, l'outil développé par Patrick Smacchia, car c'est un outil vraiment très précieux pour tous les développeurs/architectes qui souhaitent avoir des métriques sur le code de leur application.

Si vous ne connaissez pas NDepend, je ne saurais que tro vous conseillé ce lien, en anglais, ou celui-ci, en français.

Depuis quelque temps, je manipule cet outil et je me demandais comment pouvoir profiter de ses possibilités dans le cadre d'un développement WPF. J'en suis arriver à la conclusion que pouvoir disposer de requêtes CQL propres à WPF ne serait pas un mal Smile

Ainsi, j'ai écrit 6 requêtes que je souhaiterais vous faire partager:

<CQLGroup Name="WPF Queries" Active="True">

  <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">

    // &lt;Name&gt;Number of DependencyProperties&lt;/Name&gt;

    SELECT FIELDS WHERE IsStatic AND IsPublic AND IsOfType "OPTIONAL:System.Windows.DependencyProperty" AND NameLike "Property$"

  </CQLQuery>

  <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">

    // &lt;Name&gt;Number of Routed Events&lt;/Name&gt;

    SELECT FIELDS WHERE IsStatic AND IsPublic AND IsOfType "OPTIONAL:System.Windows.RoutedEvent" AND NameLike "Event$"

  </CQLQuery>

  <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">

    // &lt;Name&gt;Number of Binding&lt;/Name&gt;

    SELECT FIELDS WHERE IsOfType "OPTIONAL:System.Windows.Data.Binding"

  </CQLQuery>

  <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">

    // &lt;Name&gt;Number of ControlTemplate&lt;/Name&gt;

    SELECT FIELDS WHERE IsOfType "OPTIONAL:System.Windows.Controls.ControlTemplate"

  </CQLQuery>

  <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">

    // &lt;Name&gt;Number of DataTemplate&lt;/Name&gt;

    SELECT FIELDS WHERE IsOfType "OPTIONAL:System.Windows.DataTemplate"

 

  </CQLQuery>

  <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">

    // &lt;Name&gt;Number of Routed Commands&lt;/Name&gt;

    SELECT FIELDS WHERE IsStatic AND IsPublic AND IsOfType "OPTIONAL:System.Windows.Input.RoutedUICommand" AND NameLike "Command$"

  </CQLQuery>

</CQLGroup>

Ces requêtes vous permettent de savoir combien de Dependency Properties, Routed Events, Binding, etc... vous avez déclaré dans votre code, à condition que ceux-ci respectent les conventions de nommage (les Dependency Properties doivent finir par Property, les Routed Events doivent se terminer par Event, etc....).

Pour les plus curieux, voici un aperçu du résultat (testé sur un projet de démo):

image

C'est simple, rapide à mettre en place et cela vous permettra d'avoir des métriques vraiment précises quand au type de projet sur lequel vous travaillé (WPF en l'occurence dans notre cas).

Il est cependant à noter que NDepend ne permet pas, à l'heure actuelle, d'analyser les ressources d'une application. Ainsi, dans le cas de WPF, tout le code XAML n'est pas analysé: les requêtes montrées juste avant ne fonctionnent que pour le code behind. Autant, pour le binding, cela peut paraitre génant autant pour les Dependency Properties ou Routed Events, pas de soucis étant donné que l'on ne peut pas les déclarer en XAML Wink

En espérant que cela plaise/serve à certains d'entre vous !

 

A+

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :
Posted: lundi 21 juillet 2008 09:27 par Thomas LEBRUN
Classé sous : ,

Commentaires

Pas de commentaires

Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- [Refactoring] ReSharper pour Visual Studio 2010 (Preview) par Thomas Jaskula le il y a 2 heures et 58 minutes

- [Refactoring] Analyser vos exceptions avec ReSharper Exceptional par Thomas Jaskula le il y a 4 heures et 12 minutes

- SharePoint 2007 : patterns & practices SharePoint Guidance par Philippe Sentenac [MVP SharePoint] le il y a 17 heures et 52 minutes

- [Visual Studio 2010] Les tests cases c’est bien, mais je vais devoir tout réécrire ? par Etienne Margraff le il y a 18 heures et 48 minutes

- MVP[Gribouillon].AddYear par The Grib's Lair [Sébastien PICAMELOT - MVP SharePoint] le il y a 19 heures et 3 minutes

- Clinique INSIA - Projet de fin d’Etudes (Silverlight 3 MVVM et OutOfBrowser, WCF, TFS) - Part 1 par David REI le 07-02-2009, 23:38

- C’est la crise ? Bah pourquoi cramer du budget pub alors ? par Nix's Blog le 07-02-2009, 15:31

- Soyons MVP ! par TheSaib .NET blog le 07-02-2009, 12:15

- SharePoint : Gestion des Erreurs 6398, 7076 et 6482 par Blog Technique de Romelard Fabrice le 07-02-2009, 11:53

- EF avec WPF par Matthieu MEZIL le 07-02-2009, 10:18