Domanda

Qualcuno ha fatto qualsiasi confronto su strumenti di analisi statica del codice a disposizione di Linux? Quali sono i punti di forza e di debolezza dei seguenti strumenti:

  • Lintian,
  • Stile minimalista,
  • Splint,
  • RATS,
  • Utilizzando l'opzione -Wall.

Vuoi prendere in considerazione che l'utilizzo di un solo di questi strumenti è adeguata?

Non sto cercando le raccomandazioni (che posso trovare un sacco di quelli) ma i confronti diretti tra gli strumenti disponibili.

È stato utile?

Soluzione

Non è ovviamente il wikipedia lista . Tale elenco è proprio questo, un elenco, e non un confronto, ma uno dei i link sulla pagina sembra rispondere, almeno parzialmente, la tua domanda e (molto brevemente) parla di un paio di programmi che hai elencato.

Altri suggerimenti

Utilizzando -Wall dovrebbe essere una questione di corso per ogni c sviluppatore. Inoltre, in aggiunta utilizzando -Wextra potrebbe essere una buona idea.

Splint può trovare altri punti deboli potenziali nella vostra applicazione, ma nella maggior parte dei casi (!) La stampa falsi avvisi in modo da avere per capire veramente cosa stecca significa con ciò che di avvertimento e la maggior parte delle volte è necessario inserire annotazioni come / out / o / non utilizzato / nel codice in modo stecca non urlare su di voi. Con la stecca, si dovrebbe filtrare gli avvertimenti che non sono importanti per voi, altrimenti hai speso troppo tempo in analisi e lo scorrimento attraverso un sacco di messaggi.

Si noti che questi strumenti fanno verifica solo codice statico. Si consiglia di utilizzare Valgrind per trovare le perdite di memoria di esecuzione.

Ho usato stecca un paio di volte e l'ho trovato troppo prolisso: I disattivato la maggior parte degli avvisi. Credo che questo strumento può fornire risultati interessanti se si annotare correttamente il codice. senza il codice annotazione, questo strumento non è molto utile.

a volte uso rada e considero come uno strumento prezioso. Fornisce un wrapper per gcc, chiamato "CGCC". Di conseguenza, è semplice da eseguire sparse su un programma, anche se contiene molti file sorgente (export CC=cgcc e voilà). Questo programma funziona meglio se si sta analizzando Kernel codice sorgente.

Come sidenote, Io uso anche pmccabe su base regolare. pmccabe non è un analizzatore statico: calcola complessità ciclomatica. Essa può aiutare trovare le più complesse funzioni nel programma. Queste funzioni sono rischia di essere soggetto a errori e difficile da provare.

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