Esiste uno strumento per trovare funzioni senza riferimenti (codice morto e obsoleto) in un'app C#?[Chiuso]

StackOverflow https://stackoverflow.com/questions/65585

  •  09-06-2019
  •  | 
  •  

Domanda

Voglio eliminare foo() se foo() non viene chiamato da nessuna parte.

È stato utile?

Soluzione

Gendarme rileverà i metodi privati ​​senza chiamanti upstream.È disponibile multipiattaforma e l'ultima versione gestisce "Evita UncalledPrivateCodeRule".

FxCop rileverà metodi pubblici/protetti senza chiamanti upstream.Tuttavia, FxCop non rileva tutti i metodi senza chiamanti upstream, poiché ha lo scopo di verificare nel caso in cui il codice faccia parte di una libreria, quindi i membri pubblici vengono esclusi. Puoi utilizzare NDepend per eseguire una ricerca di membri pubblici senza chiamanti upstream, che descrivo in dettaglio qui in quest'altra risposta StackOverflow.

(modificare:aggiunte informazioni su Gendarme che effettivamente fa ciò che ha chiesto l'interrogante)

Altri suggerimenti

NDipende riporterà anche il codice potenzialmente inutilizzato.

Tieni presente che Resharper (e probabilmente anche altri strumenti simili) non evidenzierà i metodi inutilizzati se i metodi sono contrassegnati public.Non è possibile che uno strumento di analisi del codice statico sia in grado di verificare se i metodi dell'assembly vengono utilizzati da altri assembly esterni alla soluzione.Quindi il primo passo per eliminare i metodi inutilizzati è ridurne la visibilità private O internal.

Sì, il Strumenti MZ il componente aggiuntivo ha una funzione di revisione del codice morto.

Riaffilatore fa questo, e non solo con i metodi.Lo fa anche utilizzando istruzioni, variabili ecc.

Lo strumento NDipende può aiutare a trovare il codice inutilizzato in una codebase .NET. Disclaimer:Sono uno degli sviluppatori di questo strumento.

NDepend propone di scrivere Regola codice su query LINQ (CQLinq).In giro 200 regole di codice predefinite vengono proposti, di cui 3 dedicati codice non utilizzato/morto rilevamento:

NDepend è integrato in Visual Studio, quindi queste regole possono esserlo controllato/navigato/modificato direttamente all'interno dell'IDE.Lo strumento può anche essere integrato nel processo CI e può essere creato rapporti che mostrerà le regole violate e gli elementi di codice colpevoli.

Se fai clic su questi 3 collegamenti verso il codice sorgente di queste regole, vedrai che quelli riguardanti tipi e metodi sono un po' complessi.Questo perché rilevano non solo i tipi e i metodi non utilizzati, ma anche i tipi e i metodi utilizzati soltanto da tipi e metodi morti non utilizzati (ricorsivi).

Questo è analisi statica, da qui il prefisso Potenzialmente nei nomi delle regole.Se viene utilizzato un elemento di codice soltanto attraverso la riflessione, queste regole potrebbero considerarlo inutilizzato, il che non è il caso.

Oltre a utilizzare queste 3 regole, consiglierei di misurare la copertura del codice mediante test e di sforzarsi di avere una copertura completa.Spesso vedrai che il codice che non può essere coperto dai test, in realtà lo è inutilizzato/morto codice che può essere tranquillamente scartato.Ciò è particolarmente utile negli algoritmi complessi in cui non è chiaro se un ramo di codice sia raggiungibile o meno.

Bene, se VS non lo fa in modo nativo, un metodo semplice è fare clic con il pulsante destro del mouse sul metodo e selezionare "trova tutti i riferimenti".Se c'è solo 1 riferimento (dove è dichiarato) molto probabilmente non verrà utilizzato da nessun'altra parte.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top