Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Thomas Lebrun

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

Actualités

[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

- Monitoring et Patron de méthode par Le blog de Marc Ranchin le il y a 1 heure et 16 minutes

- ADO.NET Data Services Hooking POC v2 par Matthieu MEZIL le il y a 1 heure et 30 minutes

- Back from NYC ! par .net is good... C# is better ;) le il y a 2 heures et 8 minutes

- Hello World! par Le blog de hamid le il y a 10 heures et 16 minutes

- MSBuild Extension Pack sur codeplex par Michel Perfetti [Miiitch] le il y a 11 heures et 35 minutes

- TCB : Travailler en équipe sans réseau par The Mit's Blog le il y a 14 heures et 46 minutes

- Accès anonyme et les pages Forms / viewlsts.aspx... par Nicolas Humann le il y a 18 heures et 39 minutes

- l'Atelier 4 du coach C# est disponible par Bernard Fedotoff le il y a 20 heures et 14 minutes

- [WPF] Formatter l’affichage lors d’un binding, via StringFormat par Thomas Lebrun le 10-07-2008, 10:22

- WSC08 : Le bilan, Les Photos, Les Webcasts à voir ou à revoir par Blog de Daniel TIZON [daniel] le 10-07-2008, 01:14