Comme l'a souligné Jeff, l'outil NDepend peut aider à trouver les méthodes, champs et types inutilisés.
Pour développer un peu, NDepend propose d'écrire des règles de code sur des requêtes LINQ (CQLinq). Environ 200 règles de code par défaut sont proposées, dont 3 sont dédiées à la détection du code inutilisé/inactif.
Essentiellement, une règle pour détecter une méthode inutilisée ressemble à ceci :
// Dead Methods
warnif count > 0
from m in Application.Methods where !m.MethodsCallingMe.Any()
select m
Mais cette règle est naïve et renverra des faux positifs triviaux. Il existe de nombreuses situations où une méthode n'est jamais appelée mais n'est pas pour autant inutilisée (point d'entrée, constructeur de classe, finaliseur...) c'est pourquoi les 3 règles par défaut sont plus élaborées :
NDepend s'intègre à Visual Studio 2022, 2019, 2017, 2015, 2013, 2012, 2010, donc ces règles peuvent être vérifiées/naviguées/modifiées directement dans l'IDE. L'outil peut également être intégré à votre processus d'intégration continue et peut générer des rapports montrant les règles enfreintes et les éléments de code responsables. NDepend a également une extension pour les services de l'équipe VS.
Si vous cliquez sur ces 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. C'est parce qu'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 inutilisés (récursif).
Il s'agit d'une analyse statique, d'où le préfixe Potentiellement dans les noms des règles. Si un élément de code n'est utilisé que par 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 vous conseillerais de mesurer la couverture du code par les tests et de chercher à avoir une couverture complète. Souvent, vous verrez que le code qui ne peut pas être couvert par les tests est en réalité du code inutilisé/inactif qui peut être supprimé en toute sécurité. Cela est particulièrement utile dans le cadre d'algorithmes complexes où il n'est pas clair si une branche de code est accessible ou non.
Avis de non-responsabilité : Je travaille pour NDepend.
3 votes
Possible duplicate de Quels outils et techniques utilisez-vous pour trouver un code mort en .NET?
1 votes
Possible duplicate de Y a-t-il un outil pour trouver des fonctions non référencées (code mort, obsolète) dans une application C# ?
3 votes
Je suis surpris que cela soit étiqueté comme hors sujet, j'ai trouvé la question et les réponses utiles 11 ans après sa rédaction. Le lien hors sujet fourni dit que "... les outils logiciels couramment utilisés par les programmeurs; et est ..." sont certainement pertinents pour SO!.
0 votes
Encore utile 12 ans plus tard.