Uso LINT del sistema incorporato


8

Attualmente sviluppo sistemi incorporati utilizzando diversi compilatori, i più comuni provenienti da sistemi IAR.

Il mio amore per l'hardware è ciò che guida facendo sistemi e firmware integrati. Sembra tuttavia che manchi un bel po 'di ingegneria del software.

Ho letto molte volte che un buon Lint è prezioso per il codice. Vorrei sapere se qualcuno qui usa un Lint, quale Lint è, e quanto aiuta a rilevare gli errori.

Risposte:


4

Ho usato lanugine in passato e l'ho trovato utile. Tuttavia, ho dovuto smettere di usarlo mentre passavo a un progetto più ampio che non lo stava usando. Ciò ha reso difficile l'uso di lanugine, a causa della interconnessione del codice. Il problema più grande con lint è configurarlo per rimuovere i falsi positivi e non preoccuparsene. Potrebbe essere meglio ora che hanno fatto un'altra uscita nell'ultimo anno.

Una società con cui lavoro ha preso quel grande progetto e lo ha passato attraverso l'analizzatore statico di Coverity. Tuttavia, questo è un grosso pezzo di denaro da utilizzare, quindi non è raccomandato per le piccole aziende.


Ho letto un devo aspettarmi di passare il tempo in anticipo per farlo smettere di lanciare falsi positivi. Quale filaccia hai scelto di usare in quel momento?
Kortuk,

All'epoca era la versione 8.0.
Jay Atkinson,

Sai quale azienda l'ha creata, ci sono molti programmi Lint diversi là fuori. Mi è stato detto che si chiama lanugine a causa dei pezzetti di lanugine che trova mancare al compilatore.
Kortuk,

1
Spiacente, PC-LINT di Gimpel. La cosa bella è che almeno ti aiutano a domare l'output con alcuni set di regole predefiniti basati sul compilatore e sull'editor che usi. Sono disponibili per il download sul loro sito: gimpel.com
Jay Atkinson,

Se la tua nuova base di codice sorgente sta sputando molti "falsi positivi", è tristemente, di solito rotto.
Tim Williscroft,

6

Non ho usato lanugine, ma trovo che gli avvisi di GCC possano rilevare molti errori di programmazione.

Ecco i miei CFLAG preferiti

CFLAGS + = -Werror -W -Wall -ansi -pedantic -Wformat-nonliteral -Wcast-align -Wpointer-arith -Wbad-function-cast -Wmissing-prototypes -Wstrict-prototypes -Wmissing-dichiarazioni -Winline -Wundef -Wnested- externs -Wshadow -Wconversion -Wwrite-stringhe -Wno-conversion -Wextra -Wstrict-aliasing -Wcast-qual

Ho anche provato con Sparse di Linus Torvalds per analisi statiche. Ma penso che questo tipo di strumenti sia più utile per i grandi sistemi.


la maggior parte dei sistemi con cui lavoro sono nelle 50k linee di intervallo di codice.
Kortuk,

3

Devo ammettere che non ho avuto molta utilità con un pizzico di qualche tipo su un progetto di microcontrollore / microprocessore.

Nel mio attuale progetto incorporato, che utilizza C ++ su un PC / 104 SBC basato su Linux, abbiamo usato cppcheck (funziona anche con C!). Funziona abbastanza bene, anche se ha problemi con alberi ereditari di classe complicati. E ha fornito un certo valore: è utile per verificare potenziali posizioni in cui potrebbero verificarsi perdite di memoria. Ma la maggior parte delle cose che ha notato erano stilistiche - usa il preincremento invece del postincremento nei cicli a forchetta, quel genere di cose.

Ho anche usato un filone online per Javascript durante lo sviluppo di applicazioni per un sistema software aziendale. È stato assolutamente prezioso lì, poiché non c'erano strumenti di debug per verificare la presenza di errori di sintassi in quella configurazione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.