La scelta di uno strumento di analisi statica del codice

voti
54

Sto lavorando su un progetto in cui sto codifica in C in un ambiente UNIX. Sto usando lo strumento non peloso per controllare il mio codice sorgente. Lint è stato intorno a un lungo periodo di tempo (dal 1979), qualcuno può suggerire un più recente strumento di analisi del codice potrei usare? Preferibilmente uno strumento che è libero.

È pubblicato 05/08/2008 alle 22:19
fonte dall'utente
In altre lingue...                            


15 risposte

voti
14

Per il codice C, è sicuramente dovrebbe assolutamente utilizzare FlexeLint . L'ho usato per quasi 15 anni e giuro da essa. Una delle caratteristiche davvero grande che ha è che gli avvisi possono essere attivati in modo selettivo e spegnendo tramite commenti nel codice ( "/ * pelucchi -e123 * /"). Questo si è rivelato essere un potente strumento di documentazione quando si voleva qualcosa di fuori dal comune. "Mi rivolgo off warning X, quindi, c'è qualche buona ragione che sto facendo X."

Per chiunque in interessanti / C ++ domande C, un'occhiata ad alcuni dei loro esempi sul loro sito e vedere se si riesce a capire gli insetti senza guardare i suggerimenti.

Risposto il 05/08/2008 a 22:42
fonte dall'utente

voti
30

Da non trascurare il compilatore stesso.

Leggere la documentazione del compilatore e trovare tutti gli avvisi e gli errori che può fornire, e quindi attivare il maggior numero ha senso per voi.

Assicuratevi anche di informi il compilatore per il trattamento di avvertimenti come errori così si è costretti a risolvere subito. ( "-Werror" su gcc)

Inoltre: "-Wall" il GCC non non abilitare tutte le avvertenze, non lasciatevi ingannare.

Inoltre anche: controllare valgrind - è "rilevare automaticamente [s] molti bug di gestione della memoria e di threading, e profilo [s] i programmi nel dettaglio." (Gratis!)

Valgrind non è un correttore statica, ma è un grande strumento! http://valgrind.org

Risposto il 05/08/2008 a 23:17
fonte dall'utente

voti
12

Ho sentito parlare bene di analizzatore statico clang , che IIRC utilizza LLVM come è backend. Se questo è implementata sul sistema, che potrebbe essere una buona scelta.

Da quello che ho capito, che fa un po 'più di analisi solo sintassi. "Alla ricerca di bug automatico", per esempio.

Risposto il 06/08/2008 a 01:40
fonte dall'utente

voti
5

Stiamo usando Coverity Prevent di controllare codice sorgente C ++.

Non è uno strumento gratuito (anche se credo che offrono scansione gratuita per progetti open source), ma è uno dei migliori strumenti di analisi statica che troverete. Ho sentito che è ancora più impressionante su C che su C ++, ma ha aiutato a evitare un certo numero di bug finora.

Risposto il 15/08/2008 a 18:47
fonte dall'utente

voti
0

C'è un "-Weffc ++" opzione per il gcc che secondo la pagina man Mac OS X:

Mettere in guardia circa le violazioni delle seguenti linee guida dello stile da Scott Meyers' Effective C ++ libro:

[Omissis]

So che hai chiesto di C, ma questo è il più vicino che conosco ..

Risposto il 15/08/2008 a 23:03
fonte dall'utente

voti
1

Si potrebbe trovare lo strumento Uno utile. E 'una delle poche opzioni non-giocattolo liberi. Si differenzia dalla lanugine, FlexeLint, ecc concentrandosi su un piccolo numero di errori "semantici" (derefs puntatore nullo, indici di array fuori dal campo, e l'uso di variabili non inizializzate). Consente inoltre controlli definiti dall'utente, come disciplina di blocco-sblocco.

Sto lavorando verso una release pubblica di uno strumento successore, Orion ( CONTENUTI non più disponibile )

Risposto il 15/08/2008 a 23:39
fonte dall'utente

voti
0

lint è costantemente aggiornato ... e allora perché si vorrebbe uno più recente.

BTW FlexeLint è lint

Risposto il 23/08/2008 a 12:42
fonte dall'utente

voti
1

strumenti Lint-come in genere soffrono di un problema di "falso allarme": riportano molto più problemi di quanto esiste veramente. Se la percentuale di avvisi genuinamente-utili è troppo basso, l'utente impara a ignorare solo lo strumento. Altri strumenti moderni spendere qualche sforzo per concentrarsi sulle più probabili avvertenze / interessanti.

Risposto il 23/08/2008 a 15:29
fonte dall'utente

voti
0

Buongiorno,

Sono completamente d'accordo con i suggerimenti per leggere e digerire ciò che il compilatore ti dice dopo aver impostato -Wall.

Un buon strumento di analisi statica per la sicurezza è FLAWFINDER scritto da David Wheeler. Si fa un buon lavoro alla ricerca di vari exploit di sicurezza,

Tuttavia, non sostituisce avere una persona competente letto attraverso il codice. Come David dice sulla sua pagina web, "Un pazzo con uno strumento è ancora un pazzo!"

Saluti,

rapinare

Risposto il 26/08/2008 a 16:21
fonte dall'utente

voti
5

Recentemente ho compilato una lista di tutti gli strumenti di analisi statica che ho avuto a mia disposizione, sono ancora in fase di valutazione di tutti loro. Si noti, questi sono per lo più gli strumenti di analisi di sicurezza.

Risposto il 03/09/2008 a 23:11
fonte dall'utente

voti
1

PC-lint / FlexeLint sono molto potenti e utili strumenti di analisi statica, e altamente configurabile, anche se purtroppo non è gratuito.

Al primo utilizzo di uno strumento come questo, possono produrre un gran numero di avvertimenti, che può rendere difficile distinguere tra quelli maggiori e minori. Pertanto, è meglio iniziare a utilizzare questo strumento nell'ambito del codice come nelle prime fasi del progetto il più possibile, e quindi di eseguire sul vostro codice il più spesso possibile, in modo da poter affrontare le nuove avvertenze come si presentano.

Con un uso continuo in questo modo, presto imparare a scrivere il codice in un modo che conferma alle norme applicate dallo strumento.

A causa di questo, preferisco strumenti come Lint che corrono in tempi relativamente brevi, e quindi incoraggiare l'uso continuo, piuttosto che gli strumenti più ingombranti che si può finire con meno spesso, se non del tutto.

Risposto il 20/12/2008 a 00:29
fonte dall'utente

voti
0

Ho scoperto che in genere è meglio usare più strumenti di analisi statica per trovare bug. Ogni strumento è stato progettato in modo diverso, e possono trovare cose molto diverse l'una dall'altra.

Ci sono alcune buone discussioni in alcuni dei colloqui qui . E 'da una conferenza tenuta da parte del US Department of Homeland Security sull'analisi statica.

Risposto il 15/06/2011 a 07:53
fonte dall'utente

voti
0

Sparse è uno strumento software per computer, già disponibile su Linux, progettato per trovare eventuali errori di codifica nel kernel di Linux.

Ci sono due progetti attivi di Linux Centro di verifica finalizzati a migliorare la qualità dei moduli del kernel caricabili.

  1. Linux Driver di verifica (LDV) - un set di strumenti completo per codice di verifica statica fonte di driver di periferica Linux.
  2. KEDR quadro - un framework estensibile per l'analisi dinamica e la verifica dei moduli del kernel.
  3. Un altro progetto in corso è Linux file di verifica del sistema che mira a sviluppare una serie di strumenti dedicati per la verifica delle implementazioni Linux file system.
Risposto il 20/12/2012 a 08:36
fonte dall'utente

voti
4

È possibile utilizzare cppcheck . Si tratta di un facile da usare strumento di analisi statica del codice.
Per esempio:
cppcheck --enable=all .
controllerà tutti i file C / C ++ nella cartella corrente.

Risposto il 25/06/2015 a 15:54
fonte dall'utente

voti
1

Si può provare CppDepend , un analizzatore statico abbastanza completa disponibile su Windows e Linux, throught VS Plugin, IDE o riga comandi, ed è gratuito per i contributori open source

Risposto il 26/06/2015 a 12:01
fonte dall'utente

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more