7

Ho bisogno di uno strumento di analisi statico per i driver di dispositivo Linux che scrivo per schede basate su ARM. Sto considerando alcuni strumenti come indicato di seguito:Strumento di analisi statica per moduli del kernel Linux e driver di dispositivo

  1. Sparse è uno strumento software per computer, già disponibile su Linux, progettato per trovare eventuali errori di codifica nel kernel di Linux.
  2. Esistono due progetti attivi di Linux Verification Center finalizzati a migliorare la qualità dei moduli del kernel caricabili.

    • Linux Driver Verification (LDV) - un set di strumenti completo per la verifica del codice sorgente statico dei driver di dispositivo Linux.
    • KEDR Framework - un framework estendibile per l'analisi dinamica e la verifica dei moduli del kernel.
    • Un altro progetto in corso è Linux File System Verification che mira a sviluppare un set di strumenti dedicato per la verifica delle implementazioni del file system Linux.
  3. Abilita -Werror, -Wextra e -Wall su GCC, e correre con Valgrind.

L'ultima volta che ho giocato con Sparse ho trovato le uscite confuse e non ho trovato una buona documentazione per interpretare l'output. Qualcuno ha una buona documentazione sullo strumento Sparse? Quali sono gli altri strumenti di analisi statica gratuiti che posso utilizzare per la verifica del mio driver Linux? Conosco lo strumento LINT ma è autorizzato.

+0

Provare la stecca. È gratis. Un altro suggerimento sarebbe compilare con -Wall e -Wextra. Lo splint – Kenneth

+0

è per il normale codice C. Ho bisogno di uno strumento che possa controllare il codice del kernel di Linux. Un esempio comune è l'uso di una funzione che potrebbe dormire (o, in genere, potrebbe causare una riprogrammazione) in un contesto atomico, ovvero in gestori di interruzioni, in sezioni critiche protette da spinlock e simili. –

+1

Sembra che tu stia mescolando molti concetti diversi qui. Il kernel di Linux è scritto in C, quindi splint è uno strumento di analisi _static valido. – Kenneth

risposta

4

Smatch è uno strumento di analisi statico per C utilizzato nel kernel. Ha portato a centinaia di patch. Alcuni sono stati correlati alla sicurezza o erano abbastanza significativi per il kernel stabile.

+2

C'è un altro strumento di analisi statica, [Coccinelle] (http://coccinelle.lip6.fr/) che è stato usato per trovare bug nel kernel. Vedi anche http://lwn.net/Articles/412750/. Non ho provato me stesso però. – Eugene

3

Se si desidera scrivere le proprie regole, Coccinelle è probabilmente appropriato. Se si desidera utilizzare regole scritte da altri, è possibile utilizzare i vari strumenti integrati nel kernel. Controllare la sezione 4.2: CODICE CHE CONTROLLA GLI STRUMENTI di Documentazione/processo di sviluppo/4.Codifica per alcuni suggerimenti.