Bola vydaná nová verzia analyzátora statického kódu cppcheck 2.6, ktorá vám umožňuje identifikovať rôzne triedy chýb v kóde v jazykoch C a C++, a to aj pri použití neštandardnej syntaxe, ktorá je typická pre vstavané systémy. Poskytuje sa kolekcia pluginov, prostredníctvom ktorých je cppcheck integrovaný s rôznymi vývojovými, priebežnými integračnými a testovacími systémami a poskytuje aj také funkcie, ako je kontrola súladu kódu so štýlom kódu. Na analýzu kódu môžete použiť svoj vlastný analyzátor alebo externý analyzátor od Clang. Zahŕňa aj skript donate-cpu.py, ktorý poskytuje miestne zdroje na spoluprácu pri kontrole kódu pre balíky Debianu. Zdrojový kód projektu je šírený pod licenciou GPLv3.
Vývoj cppcheck je zameraný na identifikáciu problémov spojených s nedefinovaným správaním a používaním návrhov, ktoré sú nebezpečné z hľadiska bezpečnosti. Cieľom je tiež minimalizovať falošné poplachy. Medzi identifikované problémy: ukazovatele na neexistujúce objekty, delenie nulou, pretečenie celých čísel, nesprávne operácie bitového posunu, nesprávne prevody, problémy pri práci s pamäťou, nesprávne používanie STL, dereferences nulového ukazovateľa, používanie kontrol po skutočnom prístupe do vyrovnávacej pamäte, pretečenie vyrovnávacej pamäte, použitie neinicializovaných premenných.
V novej verzii:
- Do jadra analyzátora boli pridané nasledujúce kontroly:
- absencia návratového operátora v tele funkcie;
- zaznamenáva prekrývajúce sa údaje, určuje nedefinované správanie;
- porovnávaná hodnota je mimo hodnotovej reprezentácie typu;
- optimalizácia kopírovania sa nevzťahuje na návrat std::move(local);
- súbor nemožno otvoriť súčasne na čítanie a zápis v rôznych prúdoch (stream);
- pre platformy Unix pridaná podpora pre zobrazovanie diagnostických správ v rôznych farbách;
- pridaná symbolická analýza pre ValueFlow. Pri výpočte rozdielu medzi dvoma neznámymi premennými používa jednoduchú deltu;
- pravidlá používané pre zoznam tokenov „define“ sa môžu zhodovať aj s #include;
- knižnica tag teraz môže obsahovať značku a podľa toho aj bezplatné funkcie, ktoré môžu prijímať kontajnery ako std::size, std::empty, std::begin, std::end atď. môže špecifikovať Yeld alebo akciu pre konektory;
- knižnica tag teraz môže obsahovať značku pre inteligentné ukazovatele, ktoré majú jedinečné vlastníctvo. Teraz je vydané varovanie o visiacich odkazoch na tieto typy inteligentných ukazovateľov;
- opravené problémy so spracovaním parametra —cppcheck-build-dir;
- htmlreport môže teraz zobraziť informácie o autorovi (pomocou git obviňovania);
- rozšírené upozornenia na premenné, ktoré nie sú konštantné, ale môžu byť;
- Nahromadené chyby a nedostatky analyzátora boli opravené.
Okrem toho, kontroly z Misra C 2012 vrátane zmien 1 a 2 boli plne implementované, s výnimkou pravidiel 1.1, 1.2 a 17.3. Kontroly 1.1 a 1.2 musí vykonať kompilátor. Overenie 17.3 môže byť vykonané kompilátorom, ako je GCC.
Zdroj: opennet.ru