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