51 votes

Visual Studio : Trouver le code inutilisé ?

Dans Visual Studio 2008, comment puis-je trouver facilement le code inutilisé dans un fichier source ?

J'ai un fichier source contenant plus de 2800 lignes de code, et faire une recherche individuelle de toutes les références serait un peu fastidieux.

49voto

Michael La Voie Points 12445

Resharper est la meilleure solution, mais en ce qui concerne les mécanismes intégrés, il en existe deux qui vous aideront un peu :

1) VS 2008 peut vous aider en suppression des déclarations d'utilisation non utilisées

2) Vous pouvez utiliser l'attribut [Obsolète]. pour marquer les fonctions obsolètes. Si elles ne sont vraiment plus utilisées, vous ne verrez pas d'avertissement du compilateur et vous saurez que vous pouvez les supprimer en toute sécurité.

[Obsolete("Because of reasons.")]
public void MyOldCSharpFunction() { }

11voto

L'outil NDepend peut aider à trouver du code inutilisé dans une base de code .NET. Clause de non-responsabilité : Je suis l'un des développeurs de cet outil.

NDepend propose d'écrire Règle de code sur les requêtes LINQ (CQLinq) . Autour de 200 règles de code par défaut sont proposées, 3 d'entre elles étant consacrées à code inutilisé/mort détection :

NDepend est intégré dans Visual Studio 2008/2010/2012/2013, ainsi ces règles peuvent être vérifiés/navigués/modifiés directement dans l'IDE . L'outil peut également être intégré dans votre processus de CI et il peut construire rapports qui montrera les règles violées et les éléments de code coupables.

Si vous cliquez sur les 3 liens ci-dessus vers le code source de ces règles, vous verrez que celles concernant les types et les méthodes sont un peu complexes. En effet, elles détectent non seulement les types et méthodes inutilisés, mais aussi les types et méthodes utilisés uniquement par des types et méthodes morts inutilisés (récursifs).

C'est analyse statique d'où le préfixe Potentiellement dans les noms des règles. Si un élément de code est utilisé uniquement après réflexion, ces règles pourraient le considérer comme inutilisé, ce qui n'est pas le cas.

En plus d'utiliser ces 3 règles, je conseillerais de mesurer la couverture du code par les tests et de s'efforcer d'avoir une couverture complète. Souvent, vous verrez que le code qui ne peut pas être couvert par des tests, est en réalité inutilisé/mort le code qui peut être écarté en toute sécurité. Ceci est particulièrement utile dans les algorithmes complexes où il n'est pas clair si une branche de code est atteignable ou non.

7voto

Frederik Gheysels Points 36354

Peut-être que Resharper peut vous aider. Lorsque vous avez une méthode qui n'est jamais utilisée, ou une variable qui est seulement déclarée et assignée, mais jamais utilisée, elles sont grisées.

En outre, vous pouvez également utiliser Fxcop pour effectuer une analyse statique du code. Il trouvera également de telles méthodes et variables.

5voto

dkackman Points 8131

FxCop (intégré dans vs.net 2008) a des règles pour trouver les méthodes privées ou internes non appelées, les types internes non stabilisés, les variables membres non utilisées, les paramètres non utilisés et les variables locales non utilisées. Il ne s'applique pas aux méthodes visibles en dehors d'une seule assemblée.

5voto

csharpforevermore Points 519

Caveat Lector !

Sachez que ReSharper nécessite une machine aux caractéristiques décentes. Je suis un contractuel qui a récemment pris un poste permanent (pour au moins survivre à la récession) mais j'ai oublié de demander des informations sur les environnements de développement. J'ai un patron qui croit aux machines virtuelles (bien) mais qui ne veut pas donner aux développeurs le contrôle des VMs elles-mêmes (très très mauvais). Cela signifie que chaque machine est en 32bit avec 4GB de ram. Je dirais que c'est un peu moins que ce qui est nécessaire à ReSharper pour ne pas être perceptible. Les performances sont meilleures avec ma machine 64 bits et 12 Go à la maison.

Il s'agit de l'une des meilleures fonctionnalités de ReSharper - mais de nombreux développeurs n'en ont encore jamais entendu parler. J'étais choqué par le nombre de collègues qui me demandaient "pourquoi ce mot a un gribouillis sous lui (autre que celui de Visual Studio)" et quand mon patron l'a découvert, il m'a demandé de le supprimer, malgré mes efforts et mes appels à la pitié. Quel culot !

Il existe littéralement des centaines de fonctions ajoutées à l'IDE avec R#. Je dirais qu'il devrait être sur la liste d'achats de tout le monde. Je déménage dans une entreprise avec des machines plus performantes dès que je sais que les choses vont bien.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X