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

- [Silverlight] En attendant Silverlight 2 RTW par Blog Technique d'Audrey PETIT le 10-11-2008, 21:55

- Le nouveau Gojira, c’est pour lundi… par CoqBlog le 10-11-2008, 01:18

- SharePoint : nouvel article sur la mise en place des Scopes dans MOSS Searchs par Blog Technique de Romelard Fabrice le 10-10-2008, 17:52

- Hello CS par Le Blog de julz le 10-10-2008, 12:26

- MSDN/TechNet/Microsoft Days Tour 2008 à Lille les 13 et 14 Octobre ! par RedoBlog - The .NET Gentleman !!! le 10-10-2008, 09:35

- MVC Pratique #07 - Un projet concret et le transfert des objets avec les ModelBinders par #Rui le 10-09-2008, 23:39

- SQL Server 2008 : Certifié - TS Admin (70-432) par SQL Server vu par Christian Robert le 10-09-2008, 10:58

- [WPF] Comment changer la couleur utilisée pour sélectionner les éléments d’un ItemsControl ? par Thomas Lebrun le 10-09-2008, 10:49

- Hello World! par Hamid's Place le 10-08-2008, 23:38

- SQL Profiler - Configuration pour un développeur - tracer les requêtes SQL de votre application par Atteint de JavaScriptite Aiguë [Cyril Durand] le 10-08-2008, 15:52