Megjelent a cppcheck 2.6, egy statikus kódelemző C++ és C nyelvekhez

Megjelent a cppcheck 2.6 statikus kódelemző új verziója, amely lehetővé teszi a C és C++ nyelvű kódban előforduló különféle hibaosztályok azonosítását, beleértve a beágyazott rendszerekre jellemző, nem szabványos szintaxist is. Beépülő modulok gyűjteménye, amelyen keresztül a cppcheck integrálva van különféle fejlesztési, folyamatos integrációs és tesztelési rendszerekkel, és olyan funkciókat is biztosít, mint a kód megfelelőségének ellenőrzése a kódstílussal. A kód elemzéséhez használhatja a saját értelmezőjét vagy a Clang külső értelmezőjét. Tartalmazza a donate-cpu.py szkriptet is, amely helyi erőforrásokat biztosít a Debian csomagok együttműködési kódellenőrzéséhez. A projekt forráskódja a GPLv3 licenc alatt kerül terjesztésre.

A cppcheck fejlesztése a meghatározatlan viselkedéssel és a biztonsági szempontból veszélyes tervek használatával kapcsolatos problémák azonosítására összpontosít. A cél az is, hogy minimálisra csökkentsük a hamis pozitív eredményeket. Az azonosított problémák között szerepel: nem létező objektumokra mutatók, nullával való osztás, egész szám túlcsordulás, hibás biteltolási műveletek, hibás konverziók, problémák a memóriával való munka során, STL helytelen használata, null pointer hivatkozások, ellenőrzések használata a tényleges hozzáférés után pufferhez, puffertúllépések, inicializálatlan változók használata.

Az új verzióban:

  • A következő ellenőrzéseket adták hozzá az analizátor magjához:
    • visszatérési operátor hiánya a függvénytörzsben;
    • átfedő adatokat rögzít, meghatározatlan viselkedést határoz meg;
    • az összehasonlított érték kívül esik a típus értékreprezentációján;
    • a másolásoptimalizálás nem vonatkozik az std::move(local) visszatérésre;
    • a fájl nem nyitható meg egyszerre olvasásra és írásra különböző folyamokban (folyamban);
  • Unix platformokhoz hozzáadott támogatás a diagnosztikai üzenetek különböző színekben történő megjelenítéséhez;
  • hozzáadott szimbolikus elemzés a ValueFlow számára. Egyszerű delta értéket használ két ismeretlen változó közötti különbség kiszámításakor;
  • a "define" tokenek listájához használt szabályok az #include-nak is megfelelhetnek;
  • könyvtár címke most már tartalmazhat címkét , és ennek megfelelően az ingyenes függvények, amelyek fogadhatnak olyan konténereket, mint std::size, std::empty, std::begin, std::end stb. megadhatja a csatlakozók kiáltását vagy műveletét;
  • könyvtár címke most már tartalmazhat címkét intelligens mutatókhoz, amelyek egyedi tulajdonjoggal rendelkeznek. Figyelmeztetés jelent meg az ilyen típusú intelligens mutatókra való lógó hivatkozásokról;
  • javított problémák a —cppcheck-build-dir paraméter feldolgozásával kapcsolatban;
  • A htmlreport mostantól információkat jeleníthet meg a szerzőről (a git blame használatával);
  • kiterjesztett figyelmeztetések azokra a változókra, amelyek nem állandóak, de lehetnek;
  • Az analizátor felhalmozódott hibáit és hiányosságait kijavították.

Ezenkívül a Misra C 2012 ellenőrzéseit, beleértve az 1. és 2. módosítást is, teljes mértékben végrehajtották, kivéve az 1.1., 1.2. és 17.3. szabályt. Az 1.1 és 1.2 ellenőrzéseket a fordítónak kell elvégeznie. A 17.3 ellenőrzést egy fordító, például a GCC is végrehajthatja.

Forrás: opennet.ru

Hozzászólás