Vydanie cppcheck 2.6, statického analyzátora kódu pre jazyky C++ a C

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

Pridať komentár