[VS2010] Configurer l'analyse de code pour toute la solution

This article is available in english.

Avec Visual Studio 2008, configurer l’analyse de code n’est pas simple. Si vous avez plus de 10 projets, cela peut prendre un bon moment pour gérer et appliquer un seul jeu de règles pour toute la solution. Il fallait donc mettre à jour tous les projets à la main, ou utiliser un outil qui éditerait les fichiers csproj pour appliquer le même jeu de règles.

Ce n’est pas vraiment plaisant à faire, ni efficace. En particulier lorsqu’il s’agit d’une centaine de projets.

Dans Visual Studio 2010, l’équipe du produit a ajouté deux choses :

  1. Les règles sont maintenant dans des fichiers externes, et ne sont plus intégrées dans le fichier de projet. Cela permet de réutiliser les règles dans les autres projets de la solution. Cool.
  2. Il y a une nouvelle section dans les propriétés de la solution, nommée “Code Analysis Settings”, qui permet d’appliquer un fichier de règles à un projet ou mieux, à tous les projets ! Très cool.

Cette option est aussi disponible via le menu “Analyze”, avec “Configure Code Analysis for Solution”.

Un petit truc à savoir cela dit : pour être capable de sélectionner tous les projets, Ctrl+A ne fonctionne pas. Il faut sélectionner le premier, puis maintenir Ctrl et sélectionner le dernier. Peut-être que l’équipe produit corrigera cela pour la version finale...

Migrer les règles depuis VS2008

Si vous migrez une solution depuis VS2008, et que vous utilisiez l’analyse de code, vous remarquerez probablement que le convertisseur de projet génère un fichier nommé “Migrated rules for MyProject.ruleset” pour chacun des projets de la solution. C’est intéressant si tous les projets n’ont pas les mêmes règles. Mais si elles sont toutes les mêmes, il faudrait toutes les gérer...

Comme tous les programmeurs, je suis paresseux, et j’ai écrit une petite macro qui enlève tous les fichiers “ruleset” générés pour la solution courante. Ma solution n’utilise alors plus qu’un seul jeu de règles.

Ce n'est pas une macro très efficace, mais puisqu'elle ne va pas être beaucoup utilisée... Vous arriverez certainement à vivre avec performance médiocre et un mauvais code VB.NET :)

La voici :

Sub RemoveAllRuleset()

    For Each project As Project In DTE.Solution.Projects

        FindRuleSets(project)

    Next

End Sub

Sub FindRuleSets(ByVal project As Project)

    For Each item As ProjectItem In project.ProjectItems

        If Not item.SubProject Is Nothing Then

            If Not item.SubProject.ProjectItems Is Nothing Then

                FindRuleSets(item.SubProject)

            End If

        End If

        If Not item.SubProject Is Nothing Then

            If Not item.SubProject.ProjectItems Is Nothing Then

                Dim ruleSets As List(Of ProjectItem) = New List(Of ProjectItem)

                For Each subItem In item.SubProject.ProjectItems

                    If subItem.Name.StartsWith("Migrated rules for ") Then

                        ruleSets.Add(subItem)

                    End If

                Next

                For Each ruleset In ruleSets

                    ruleset.Remove()

                Next

            End If

        End If

    Next

End Sub


Publié samedi 6 mars 2010 19:23 par jay
Classé sous ,
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 :

Commentaires


Les 10 derniers blogs postés

- WP7 5K Belgium Challenge par Le Blog (Vert) d'Arnaud JUND le il y a 8 heures et 28 minutes

- Les Monades pour les Nuls par Hello World :-) le il y a 9 heures et 10 minutes

- [WP7] Ajouter des images dans la Media Library d'un Windows Phone 7 par Blog Technique d'Audrey PETIT le 07-29-2010, 14:00

- Vive les mocks et les POCOs par Le Blog de Vincent Labatut le 07-28-2010, 22:30

- [WF4] Workflow and Custom Activities - Best Practices (4/5) par Blog de Jérémy Jeanson le 07-28-2010, 15:09

- Développement mobile : .NET Compact Framework & Limitations par Le Blog de Pi-R (Pierre Cambier) le 07-28-2010, 15:06

- IPhone versus WP7 Coding par Nicolas Humann le 07-27-2010, 23:48

- SharePoint : Optimisation des performances de sites sous MOSS – Le Blob Cache par Blog Technique de Romelard Fabrice le 07-27-2010, 17:01

- [WF4] Réaliser une activité i++ en respectant les bonnes pratiques par Blog de Jérémy Jeanson le 07-27-2010, 15:20

- [WF4] La galère du designer d’activités générique avec arguments génériques par Blog de Jérémy Jeanson le 07-27-2010, 12:04