Liberazione di cppcheck 2.6, un analizzatore di codice staticu per i linguaggi C++ è C

Una nova versione di l'analizzatore di codice staticu cppcheck 2.6 hè stata liberata, chì permette di identificà diverse classi d'errore in u codice in i linguaggi C è C++, cumpresu quandu si usa una sintassi non standard, tipica per i sistemi incrustati. Una cullizzioni di plugins hè furnita per mezu di quale cppcheck hè integratu cù diversi sistemi di sviluppu, integrazione cuntinua è teste, è furnisce ancu funzioni cum'è a verificazione di u rispettu di u codice cù u stile di codice. Per analizà u codice, pudete aduprà u vostru propiu parser o un parser esternu da Clang. Include ancu u script donate-cpu.py per furnisce risorse lucali per fà u travagliu di cullaburazione di revisione di codice per i pacchetti Debian. U codice fonte di u prugettu hè distribuitu sottu a licenza GPLv3.

U sviluppu di cppcheck hè focu annantu à l'identificazione di prublemi assuciati cù un cumpurtamentu indefinitu è ​​l'usu di disinni chì sò periculosi da un puntu di vista di sicurezza. U scopu hè ancu di minimizzà i falsi pusitivi. Trà i prublemi identificati: punters à l'uggetti inesistenti, divisioni per zero, overflows integer, operazioni sbagliate di shift bit, cunversione incorrecte, prublemi à travaglià cù memoria, usu incorrecte di STL, dereferences di puntatore nulla, l'usu di cuntrolli dopu l'accessu propiu. à u buffer, buffer overruns , usu di variàbili uninitialized.

In a nova versione:

  • I seguenti cuntrolli sò stati aghjuntu à u core di l'analizzatore:
    • assenza di un operatore di ritornu in u corpu di a funzione;
    • registra dati sovrapposti, determina un cumpurtamentu indefinitu;
    • u valore paragunatu hè fora di a rapprisintazioni di u valore di u tipu;
    • l'optimizazione di copia ùn hè micca applicata à u ritornu std::move (local);
    • u schedariu ùn pò esse apertu simultaneamente per leghje è scrive in diversi flussi (stream);
  • per i plataformi Unix, aghjustatu supportu per a visualizazione di messagi di diagnostichi in diversi culori;
  • analisi simbolica aghjuntu per ValueFlow. Aduprà un delta simplice quandu calcula a diffarenza trà duie variàbili scunnisciute;
  • i reguli utilizati per a lista di i tokens "definisce" ponu ancu currisponde à #include;
  • tag di biblioteca avà pò cuntene un tag , è dunque e funzioni libere, chì ponu accettà cuntenituri cum'è std::size, std::empty, std::begin, std::end, etc. pò specificà u rendiment o l'azzione per i connettori;
  • tag di biblioteca avà pò cuntene un tag per puntatori intelligenti chì anu una pruprietà unica. Un avvirtimentu hè avà emessu annantu à i riferimenti dangling à questi tipi di puntatori intelligenti;
  • risolve i prublemi cù u processu di u paràmetru -cppcheck-build-dir;
  • htmlreport pò avà vede infurmazione nantu à l'autore (usendu git blame);
  • avvirtimenti estesi nantu à variàbili chì ùn sò micca custanti, ma puderanu esse;
  • L'errori accumulati è i difetti di l'analizzatore sò stati curretti.

Inoltre, i cuntrolli di Misra C 2012, cumprese l'Amendamentu 1 è l'Amendamentu 2, sò stati cumpletamente implementati, eccettu per e regule 1.1, 1.2 è 17.3. I cuntrolli 1.1 è 1.2 deve esse realizatu da u compilatore. A verificazione 17.3 pò esse realizata da un compilatore cum'è GCC.

Source: opennet.ru

Add a comment