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

S'ha publicat una nova versió de l'analitzador de codi estàtic cppcheck 2.6. Detecta diverses classes d'errors en codi C i C++, inclosos els que utilitzen una sintaxi no estàndard típica dels sistemes encastats. Hi ha disponible una col·lecció de complements que permeten la integració de cppcheck amb diversos sistemes de desenvolupament, integració contínua i proves, així com funcions com la comprovació d'estil de codi. Tant l'analitzador natiu com l'analitzador extern Clang es poden utilitzar per a l'anàlisi de codi. El paquet també inclou l'script donate-cpu.py per proporcionar recursos locals per a la comprovació col·laborativa de codi de paquets. DebianEl 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

Compreu allotjament fiable per a llocs amb protecció DDoS, servidors VPS VDS 🔥 Compra allotjament web fiable amb protecció DDoS, servidors VPS VDS | ProHoster