Llançament de cppcheck 2.6, un analitzador de codi estàtic per a llenguatges C++ i C

S'ha llançat una nova versió de l'analitzador de codi estàtic cppcheck 2.6, que us permet identificar diverses classes d'errors en el codi en els llenguatges C i C++, inclòs quan s'utilitza una sintaxi no estàndard, típica dels sistemes incrustats. Es proporciona una col·lecció de connectors mitjançant els quals cppcheck s'integra amb diversos sistemes de desenvolupament, integració contínua i proves, i també ofereix funcions com ara comprovar el compliment del codi amb l'estil de codi. Per analitzar el codi, podeu utilitzar el vostre propi analitzador o un analitzador extern de Clang. També inclou l'script donate-cpu.py per proporcionar recursos locals per fer treballs col·laboratius de revisió de codi per als paquets de Debian. El codi font del projecte es distribueix sota la llicència GPLv3.

El desenvolupament de cppcheck se centra a identificar problemes associats amb un comportament no definit i l'ús de dissenys perillosos des del punt de vista de la seguretat. L'objectiu també és minimitzar els falsos positius. Entre els problemes identificats: punters a objectes inexistents, divisions per zero, desbordaments d'enters, operacions incorrectes de canvi de bits, conversions incorrectes, problemes en treballar amb memòria, ús incorrecte de STL, desreferències de punter nul, ús de comprovacions després de l'accés real. al buffer, desbordaments del buffer, ús de variables no inicialitzades.

En la nova versió:

  • S'han afegit les comprovacions següents al nucli de l'analitzador:
    • absència d'un operador de retorn al cos de la funció;
    • enregistrar dades superposades, definint un comportament no definit;
    • el valor que es compara està fora de la representació del valor del tipus;
    • L'optimització de còpia no s'aplica a retornar std::move(local);
    • el fitxer no es pot obrir simultàniament per llegir i escriure en diferents fluxos (stream);
  • per a plataformes Unix, suport afegit per mostrar missatges de diagnòstic en diferents colors;
  • anàlisi simbòlica afegit per a ValueFlow. Utilitza delta simple quan calcula la diferència entre dues variables desconegudes;
  • les regles utilitzades per a la llista de fitxes "definir" també poden coincidir amb #include;
  • etiqueta de la biblioteca ara pot contenir una etiqueta , i en conseqüència les funcions lliures, que poden acceptar contenidors com ara std::size, std::empty, std::begin, std::end, etc. pot especificar el rendiment o l'acció per als connectors;
  • etiqueta de la biblioteca ara pot contenir una etiqueta per a punters intel·ligents que tenen propietat única. Ara s'emet un avís sobre les referències penjants a aquest tipus de punters intel·ligents;
  • problemes solucionats amb el processament del paràmetre —cppcheck-build-dir;
  • htmlreport ara pot mostrar informació sobre l'autor (utilitzant git blame);
  • advertències ampliades sobre variables que no són constants, però que podrien ser-ho;
  • S'han corregit els errors i les mancances acumulades de l'analitzador.

A més, les comprovacions de Misra C 2012, incloses l'esmena 1 i l'esmena 2, s'han implementat completament, excepte les regles 1.1, 1.2 i 17.3. Les comprovacions 1.1 i 1.2 les ha de fer el compilador. La verificació 17.3 la pot realitzar un compilador com GCC.

Font: opennet.ru

Afegeix comentari