È stata rilasciata una nuova versione dell'analizzatore statico del codice cppcheck 2.7, che consente di rilevare vari tipi di errori nel codice scritto nei linguaggi C e C++, anche quando si utilizza una sintassi non standard, tipica dei sistemi embedded. È fornita una collezione di plugin, attraverso i quali viene garantita l'integrazione di cppcheck con vari sistemi di sviluppo, integrazione continua e testing, oltre a fornire funzionalità come il controllo della conformità del codice allo stile di codifica. Per l'analisi del codice può essere utilizzato sia il parser interno che quello esterno di Clang. Include anche lo script donate-cpu.py per fornire risorse locali per l'esecuzione di controlli collaborativi del codice dei pacchetti Debian. I testi sorgenti del progetto sono distribuiti sotto licenza GPLv3.
Lo sviluppo di cppcheck è focalizzato sull'individuazione di problemi legati a comportamenti indeterminati e all'uso di costrutti pericolosi dal punto di vista della sicurezza. L'obiettivo è anche minimizzare i falsi positivi. Tra i problemi rilevati ci sono: puntatori a oggetti non esistenti, divisioni per zero, overflow interi, operazioni di shift bit scorrette, conversioni errate, problemi di gestione della memoria, uso non corretto di STL, dereferenziazione di puntatori nulli, controlli effettuati dopo l'accesso effettivo al buffer, accessi al di fuori dei limiti dei buffer, utilizzo di variabili non inizializzate.
Parallelamente, la società svedese Cppcheck Solutions AB sta sviluppando una versione avanzata di Cppcheck Premium, che fornisce un'analisi della presenza di cicli infiniti, una ricerca migliorata delle variabili non inizializzate e un'analisi estesa dell'overflow dei buffer.
Nella nuova versione:
- Aggiunta il supporto per le viste (view) dei contenitori: nel tag della libreria è stato aggiunto un attributo view, che indica che la classe rappresenta una vista. Il codice di analisi del ciclo di vita è stato aggiornato per utilizzare questo attributo nella ricerca dei contenitori 'penzolanti';
- Migliorati i controlli;
- Corrette varie anomalie e risolti i bug accumulati dell'analizzatore.
Fonte: opennet.ru
