cppcheck 2.6 kiadása, statikus kódelemző C++ és C nyelvekhez

Megjelent a cppcheck 2.6 verziója, amely egy statikus kódanalizáló, és képes különböző hibaosztályokat kimutatni C és C++ nyelveken, beleértve a beágyazott rendszerekre jellemző nem szabványos szintaxist is. Kínál egy plugin gyűjteményt, amelyen keresztül integrálható a cppcheck különböző fejlesztési, folyamatos integrációs és tesztelési rendszerekbe, valamint lehetőségeket biztosít a kód stíluskövetelményekhez való illeszkedésének ellenőrzésére. A kód elemzésére használható saját parser, illetve a Clang külső parsera is. Tartalmaz egy donate-cpu.py szkriptet, amely helyi erőforrások nyújtására szolgál a Debian csomagok közös kódellenőrzéséhez. A projekt forráskódja GPLv3 licenc alatt érhető el.

A cppcheck fejlesztése a bizonytalan viselkedésből és a biztonsági szempontból veszélyes konstrukciók alkalmazásából eredő problémák azonosítására összpontosít. Célja a hamis riasztások minimalizálása is. Az észlelt problémák között szerepelnek: nem létező objektumokra mutató mutatók, nullával való osztás, egész számok túlcsordulása, hibás biteltolási műveletek, helytelen átalakítások, memóriahasználati problémák, a STL helytelen használata, null mutatók dereferálása, ellenőrzések végrehajtása a puffer tényleges elérése után, pufferhatárok túllépése, inicializálatlan változók használata.

Az új verzióban:

  • Az elemző magjába a következő ellenőrzések kerültek bevezetésre:
    • return operátor hiánya a függvény törzsében;
    • átfedő adatok írása, határozatlan viselkedés megállapítása;
    • az összehasonlított érték a típus értékeinek határain kívül található;
    • a másolás optimalizálása nem alkalmazható a return std::move(local); esetén;
    • fájl egyidejű megnyitása olvasásra és írásra különböző szálakban (stream) nem lehetséges;
  • Unix platformokhoz hozzáadva különböző színekkel kimeneti diagnosztikai üzenetek támogatása;
  • hozzáadva a szimbolikus elemzés a ValueFlow számára. Egyszerű delta használata a két ismeretlen változó közötti különbségek kiszámításakor;
  • a „define” tokenlista használatára vonatkozó szabályok az #include számára is alkalmazhatók;
  • A könyvtári címke most már tartalmazhat címkét, és ennek megfelelően a free függvények, amelyek ilyen tartályokat, mint a std::size, std::empty, std::begin, std::end stb. fogadhatnak el, yeld vagy action-t jelölhetnek meg a tartályok számára;
  • A könyvtári címke most már tartalmazhat címkét az okos mutatók számára, amelyek egyedi tulajdonlással rendelkeznek (unique ownership). Figyelmeztetés érkezik az ilyen típusú okos mutatókra való „lógó” hivatkozásokról;
  • Javítva lettek a —cppcheck-build-dir paraméter kezelésével kapcsolatos problémák;
  • Az htmlreport most képes megjeleníteni a szerző információját (git blame segítségével);
  • Kiterjesztették a figyelmeztetések kibocsátását az olyan változókra, amelyek nem állandók, de azok lehettek volna;
  • Javították a felhalmozódott hibákat és hiányosságokat az elemzőben.

Továbbiakban teljesen megvalósították a Misra C 2012 ellenőrzéseit, beleértve az 1. és 2. módosítást, kivéve az 1.1, 1.2 és 17.3 szabályokat. Az 1.1 és 1.2 ellenőrzéseket a fordítónak kell végrehajtania. A 17.3 ellenőrzést például a GCC fordítója is elvégezheti.

Forrás: opennet.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster