[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 
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">
// <Name>Number of DependencyProperties</Name>
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">
// <Name>Number of Routed Events</Name>
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">
// <Name>Number of Binding</Name>
SELECT FIELDS WHERE IsOfType "OPTIONAL:System.Windows.Data.Binding"
</CQLQuery>
<CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">
// <Name>Number of ControlTemplate</Name>
SELECT FIELDS WHERE IsOfType "OPTIONAL:System.Windows.Controls.ControlTemplate"
</CQLQuery>
<CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">
// <Name>Number of DataTemplate</Name>
SELECT FIELDS WHERE IsOfType "OPTIONAL:System.Windows.DataTemplate"
</CQLQuery>
<CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">
// <Name>Number of Routed Commands</Name>
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):
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 
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 :