Domanda

Esiste un modo per identificare attributi / metodi inutilizzati in Visual C ++ 2008 Professional? Se non è possibile per impostazione predefinita, sono anche apprezzati i consigli di strumenti di terze parti.

Grazie,
Florian

Modifica: nDepend funziona solo per gli assembly .NET. Sto cercando qualcosa che possa essere utilizzato con applicazioni C ++ native.

È stato utile?

Soluzione

Prova PC-Lint . È abbastanza bravo a trovare codice ridondante. Non ho ancora provato la versione 9. La versione 8 richiede del tempo per la configurazione. Prova la demo interattiva online.

Altri suggerimenti

Non ho usato personalmente i loro strumenti di produttività (io uso la loro tuta di controllo di Windows), ma sembra che DevExpress abbia un refactor'er chiamato Refactor! per C ++ . Non ho individuato immediatamente le funzionalità che stai cercando, ma forse ce l'hanno?

Convalida copertura può mostrare il codice C ++ inutilizzato (ma non gli attributi). Lo fa in modo dinamico, quindi devi 'esagerare' l'app per ottenere i risultati: http://successfulsoftware.net/2008/03/10/coverage-validator/

Il trucco è che devono esistere molte funzioni in C ++, anche se non vengono chiamate. L'aumento in particolare causerà questo, ma anche il normale codice STL può farlo. E il tuo codice deve giocare insieme. È possibile definire un ctor copia perché std :: vector lo richiede formalmente. Ma se non crei un'istanza di alcun membro std :: vector che effettivamente copia una T, il tuo ctor copia rimarrà inutilizzato.

Anche se non devono, esistono spesso per sicurezza. Ad esempio, la dichiarazione di un costruttore di copie private può impedire a un oggetto di copiare involontariamente. Senza la dichiarazione privata, il compilatore definirebbe un ctor di copia pubblico e membro per te. Ora, questo è "inutilizzato" e vuoi essere avvisato di loro?

PC-Lint è molto potente, ma difficile da appoggiare. Naturalmente questo descrive abbastanza bene C e C ++, vero?

Un altro strumento che ritengo eccellente è il Visual Assist X di Whole Tomato che si integra perfettamente nell'IDE.

Ci sono alcuni grandi gotchas in C ++ durante la ricerca di codice senza riferimento: modelli, callback e gestori di messaggi possono essere fondamentali per il tuo progetto ma non vengono mai chiamati direttamente. Ad esempio, il gestore di un thread non viene chiamato direttamente, ma è un parametro quando si crea un nuovo thread. Il tasto "On_buttonpress" i messaggi di tipo nei progetti MFC o WTL verranno visualizzati anche come metodi non chiamati.

Una volta trovati, è possibile configurare PC-Lint per ignorarli, ma la prima volta è un sacco di lavoro.

nDepend lo farà, insieme a pulire la casa e portare a spasso il cane. C'è una versione di nagware disponibile gratuitamente.

La seguente istruzione del linguaggio di query del codice ti fornirà un elenco di metodi non utilizzati

 WARN IF Count > 0 IN SELECT TOP 10 METHODS WHERE MethodCa == 0 AND 
   !IsPublic AND !IsEntryPoint AND !IsExplicitInterfaceImpl AND 
   !IsClassConstructor AND !IsFinalizer
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top