Corsi on-line
Chiudi
Newsletter:
  • Seguici su Facebook
  • Seguici su Twitter
  • Seguici su Google+
  • Seguici via RSS
  • Seguici col tuo Smartphone

Verifica statica del codice in C++

Articolo scritto da Damiano Verda
Pagina 1 di 2

Possiamo definire il processo di analisi statica del codice sorgente come un procedimento tramite il quale vengono individuate porzioni insicure di codice senza procedere all'effettiva esecuzione del programma.

L'analisi statica può essere svolta in modo automatico, cioè tramite specifici tool utili proprio per supportare il processo di testing. Osserviamo come la fase di testing del software, nella sua totalità, sia un procedimento molto complesso e in genere svolto da programmatori che decidono di specializzarsi proprio in tale ambito. Strumenti software dedicati all'analisi statica del codice aiutano quindi a ridurre tempi e costi, fornendo un primo suggerimento su quali sezioni di codice sia necesssario controllare con maggiore attenzione.

(L'articolo continua più sotto...)

Le tipologie di errori individuati dagli strumenti indicati sono molteplici e in continuo aggiornamento, lo svilupppo di questo genere di software procede infatti a grande ritmo ormai da lungo tempo.

Importante a questo proposito il valore storico di un programma come Lint, rilasciato nel 1979, eseguibile in ambiente Linux e dedicato al linguaggio di programmazione C. Lint è un vero e proprio punto di riferimento per software di verifica statica del codice, talvolta addirittura identificati come "lint-like tool", ovvero "strumenti simili a lint".

Gli analizzatori statici più moderni sono anche in grado di verificare il codice studiato per essere eseguito in modo parallelo, fornendo suggerimenti specifici per questo tipo di applicazioni.

Nel seguito dell'articolo, ci focalizzeremo proprio su questo tipo di strumenti, cercando di offrire una sintetica panoramica delle possibilità nell'ambito della verifica statica del codice per programmi in esecuzione parallela in linguaggio C++ (tra i più diffusi e versatili in assoluto). Per cominciare, esaminiamo un software generico e flessibile come PC-Lint.

PC-Lint

PC-Lint è studiato per fornire prestazioni ottimali nell'analisi di programmi che si servono dei POSIX thread, ma può essere efficacemente utilizzato anche in un caso generico. Non si può però affermare che l'analisi realizzata da tale software sia in tutto e per tutto automatica.

Risulta infatti necessario specificare manualmente le funzioni in cui il programma verrà eseguito in modo parallelo (o anche concorrente), così che PC-Lint possa procedere all'analisi statica di correttezza (questa sì, automatica) proprio di tali sezioni. Per ottenere tale scopo, è necessario utilizzare l'opzione -sem all'atto dell'esecuzione di PC-Lint da linea di comando. Ad esempio l'istruzione:

lint -sem(func, thread)
comunica a PC-Lint che è necessario analizzare la funzione func, dato che verrà eseguita in modo concorrente. A questo punto verranno visualizzati messaggi di errore relativi a tale funzione tenendo conto che è necessario gestire anche un'esecuzione parallela della stessa, segnalando quindi, ad esempio, se una variabile condivisa viene utilizzata o modificata senza un'opportuna definizione di una sezione critica.

Proprio a questo proposito, se la mutua esclusione e la sincronizzazione vengono realizzate tramite le primitive tipiche del formalismo POSIX thread, ovvero, ad esempio, pthread_mutex_lock e pthread_mutex_unlock, non sarà necessario specificare nulla a questo proposito da linea di comando. In caso contrario, dovranno essere utilizzate le direttive:

-sem(access, thread_lock)
-sem(release, thread_unlock)
per indicare che l'accesso alla sezione critica viene effettuato tramite una funzione di nome access e il rilascio di tale sezione avviene servendosi della funzione release.

Se, per ottenere un'analisi statica del nostro codice desiderassimo invece avere a disposizione un tool leggermente più potente e autonomo rispetto a PC-Lint, VivaMP potrebbe essere un'ottima scelta.

Corsi
Corso JavascriptCorso Javascript
Guida completa allo scripting lato client. A partire da 39 €.
Corso Masterizzare CD e DVDCorso Masterizzare CD e DVD
Guida per masterizzare CD e DVD con programmi freeware. A soli 25 €.
Corso PHPCorso PHP
Corso completo per la creazione di siti Web dinamici. A partire da 49 €.
Vedi anche...
Annunci

Mr.Webmaster

Pubblicità
Chi Siamo
Contattaci
Collabora
Note Legali
© 2003 - 2012 Mr.Webmaster - Il portale dei Webmaster Italiani - Tutti i diritti riservati | Powered by IKIweb Internet Media S.r.l. - PIVA 02848390122