web-dev-qa-db-fra.com

Obtenir la liste des codes de référence zéro dans Visual Studio

Dans visual studio 2013, le nombre de références d'un code spécial (méthode, propriété, champ, ...) est indiqué par Code Lens. Je veux être inutilisé (référence zéro) Codes dans Visual Studio. Est-il possible de les obtenir?

Je veux dire ci-dessous la référence:

enter image description here

105
Nima Rostami

Le moyen le plus simple et le plus simple d’atteindre ce que vous recherchez est d’utiliser l’outil d’analyse de code intégré à Visual Studio pour rechercher et vous amener directement au code mort et aux membres inutilisés.

À cet effet, j'ai simplement créé un nouveau fichier de règles d'analyse de code (Via Fichier-> Nouveau-> Fichier, en vous assurant que Général dans le volet de gauche a été sélectionné et que vous avez fait défiler l'écran vers le bas. find Ensemble de règles d'analyse de code, en lui donnant un nom de fichier, puis en recherchant et en sélectionnant les règles ci-dessous). Voir ci-dessous le contenu du fichier de règles que vous pouvez simplement copier et coller dans un nouveau fichier portant l'extension .ruleset à utiliser.

Avec un fichier de règles, vous pouvez cliquer avec le bouton droit de la souris sur un fichier de projet dans le panneau Explorateur de solutions, puis sélectionner Propriétés. Dans les fenêtres des propriétés du projet, cliquez sur l'onglet Analyse du code dans le panneau de gauche, puis cliquez sur Ouvrir pour rechercher l'emplacement du fichier .ruleset. Si vous accédez aux propriétés d'un fichier de solution (par opposition à un fichier de projet), vous pouvez définir le fichier d'analyse de code pour chaque projet de la solution à un seul endroit (sous Paramètres d'analyse de code, et en utilisant la liste déroulante permet de sélectionner le fichier de règles REMARQUE: vous devez avoir déjà consulté le fichier de règles pour qu'il s'affiche dans la liste déroulante de cette fenêtre de propriétés, cependant).

Ensuite, vous exécutez simplement l’analyse de code sur les projets/solutions (via Analyse -> Exécuter l’analyse de code sur la solution -OR- Alt + F11) et elle reviendra sous forme d’avertissements. , toutes les méthodes non référencées ou les membres inutilisés trouvés. Il trouvera même des méthodes référencées par une méthode, qui elle-même ne possède aucune référence ailleurs.

Cependant, soyez prudent, car l'un des moyens par lesquels l'analyse de code mort peut vous tromper est que si la référence est "cachée" en appelant uniquement la méthode via des délégués et, bien sûr, en réfléchissant. .

Les règles pour détecter le code mort, en particulier, sont les suivantes:

  • Méthodes privées qui ne sont appelées à partir d'aucun autre code (CA1811)
  • Variables locales non utilisées (CA1804)
  • Champs privés non utilisés (CA1823)
  • Paramètres non utilisés (CA1801)
  • Les classes internes qui ne sont instanciées à partir d'aucun autre code (CA1812).
  • Code mort dans le commutateur binaire OU limité (C6259)

Vous trouverez ci-dessous le contenu du fichier .ruleset que vous pouvez obtenir en suivant les étapes ci-dessus, pour votre conveinence. Vous pouvez simplement copier le code XML ci-dessous, le coller dans le bloc-notes ++, l'enregistrer quelque part avec l'extension . Ruleset, rechercher et utiliser comme expliqué ci-dessus:

<?xml version="1.0" encoding="utf-8"?>
<RuleSet Name="Dead Code Rules" Description=" " ToolsVersion="12.0">
  <Rules AnalyzerId="Microsoft.Analyzers.ManagedCodeAnalysis" RuleNamespace="Microsoft.Rules.Managed">
    <Rule Id="CA1801" Action="Warning" />
    <Rule Id="CA1804" Action="Warning" />
    <Rule Id="CA1811" Action="Warning" />
    <Rule Id="CA1812" Action="Warning" />
    <Rule Id="CA1823" Action="Warning" />
  </Rules>
  <Rules AnalyzerId="Microsoft.Analyzers.NativeCodeAnalysis" RuleNamespace="Microsoft.Rules.Native">
    <Rule Id="C6259" Action="Warning" />
  </Rules>
</RuleSet>

J'espère que cela vous aide et n'oubliez pas de choisir la meilleure réponse.

144
Adam White

Voici une méthode manuelle utilisée à cette fin que j'ai utilisée pour trouver les classes inutilisées qui sont marquées comme publiques.

  1. Recherchez et remplacez toutes les "classes publiques" par "classes privées" pour un projet de votre solution. Il peut également être nécessaire de remplacer "classe statique publique" et/ou "classe abstraite publique".
  2. Construire pour trouver toutes les erreurs
  3. Pour chaque erreur dans la construction, utilisez votre contrôle source pour restaurer le fichier pour la classe référencée.
  4. Répétez l'opération pour chaque erreur jusqu'à ce que la construction réussisse.
  5. Tous les fichiers restants qui n'ont pas été restaurés sont susceptibles d'être supprimés.
  6. (facultatif) Renommez les classes dans les fichiers ci-dessus et effectuez une nouvelle construction pour rechercher les erreurs.
  7. Effectuez une dernière recherche sur le nom de la classe que vous souhaitez supprimer pour vérifier qu’elle n’est pas utilisée dans des chaînes de réflexion ou des chaînes magiques.
  8. Supprimez les fichiers de classe inutilisés identifiés.
  9. Répétez cette opération pour chaque projet de solution à nettoyer.

Remarque: Si vous ne suivez pas la règle de classe par fichier, cela nécessitera beaucoup plus de travail. En outre, tous les points de terminaison de service d'API dont vous aurez besoin pour vérifier qu'il n'est pas utilisé par des projets externes.

2
Ulfius