Domanda

Mentre il refactoring di qualche vecchio codice mi sono accorto che un particolare file di intestazione era pieno di dichiarazioni di funzione per le funzioni da lungo tempo rimosso dal .file cpp.Qualcuno sa di uno strumento che potrebbe trovare (e striscia) questi automaticamente?

È stato utile?

Soluzione

Si potrebbe, se possibile, di fare un test.cpp file per chiamare tutti loro, il linker bandiera di quelli che non hanno il codice non risolti, in questo modo il codice di test, solo bisogno di compilare e di non preoccuparsi effettivamente in esecuzione.

Altri suggerimenti

PC-lint può essere ritoccata per la funzione specifica:

Ho provato il seguente codice di contro per la tua domanda:

void foo(int );

int main()
{
    return 0;
}
lint.bat test_unused.cpp

e ha ottenuto il seguente risultato:

============================================================

--- Module:   test_unused.cpp (C++)

    --- Wrap-up for Module: test_unused.cpp

Info 752: local declarator 'foo(int)' (line 2, file test_unused.cpp) not referenced
test_unused.cpp(2) : Info 830: Location cited in prior message

============================================================

Così è possibile passare il numero di avviso 752 per il tuo puropse:

lint.bat  -"e*"  +e752  test_unused.cpp

-e"*" per rimuovere tutte le avvertenze e +e752 si accende questo specifico

Se si indice per codice con Doxygen è possibile vedere da dove viene ogni funzione di riferimento.Tuttavia, è necessario navigare attraverso ogni classe (1 pagina HTML per ogni classe) e di scansione per coloro che non hanno nulla di puntamento per loro.

In alternativa, si potrebbe utilizzare ctags per generare un elenco di tutte le funzioni del codice, e quindi utilizzare objdump o qualche strumento simile per ottenere la lista di tutti in funzione .o file - e, quindi, di confrontare tali elenchi.Tuttavia, questo può essere problematico a causa di alterazione dei nomi.

Non credo che c'è una tale cosa, perché alcune funzioni non avere un corpo in la vera fonte albero potrebbe essere definito in qualche libreria esterna.Questo può essere fatto solo attraverso la creazione di uno script che fa un elenco di le funzioni dichiarate in un header e verifica se essi sono a volte chiamati.

Ho un C++ ftplugin per vim che è in grado di controllare e segnalare senza eguali funzioni -- vimmers, il ftplugin suite non è ancora semplice da installare.Il ftplugin è basato su ctags risultati (di qui la sua euristica potrebbe essere facilmente adattato ad altri ambienti), a volte ci sono dei falsi positivi in caso di funzioni inline.

HTH,

Inoltre Doxygen (@Milano Babuskov), si può vedere se ci sono avvisi per questo nel compilatore.E. g.gcc è -Wunused-funzione per le funzioni statiche;-fdump-ipa-cgraph.

Ho sentito buone cose su di PC-Lint, ma immagino che è probabilmente eccessivo per le tue esigenze.

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