Liberasyon cppcheck 2.6, yon analizè kòd estatik pou lang C++ ak C

Yo te pibliye yon nouvo vèsyon nan analizè kòd estatik cppcheck 2.6, ki pèmèt ou idantifye divès klas erè nan kòd nan lang C ak C++, ki gen ladan lè w ap itilize sentaks ki pa estanda, tipik pou sistèm entegre. Yo bay yon koleksyon grefon nan ki cppcheck entegre ak divès kalite devlopman, entegrasyon kontinyèl ak sistèm tès, epi tou li bay karakteristik tankou tcheke konfòmite kòd ak style kòd la. Pou analize kòd, ou ka itilize swa pwòp parser ou oswa yon analizeur ekstèn soti nan Clang. Li gen ladan tou script donate-cpu.py pou bay resous lokal yo pou fè travay kolaborasyon revizyon kòd pou pakè Debian. Kòd sous pwojè a distribye anba lisans GPLv3.

Devlopman cppcheck konsantre sou idantifye pwoblèm ki asosye ak konpòtman ki pa defini ak itilizasyon desen ki danjere nan yon pwennvi sekirite. Objektif la se tou pou minimize fo pozitif. Pami pwoblèm yo idantifye: endikasyon objè ki pa egziste, divizyon pa zewo, debòde nonb antye relatif, move operasyon chanjman bit, konvèsyon kòrèk, pwoblèm lè w ap travay ak memwa, itilizasyon kòrèk STL, dereferans pointeur nil, itilizasyon chèk apre aksè aktyèl la. nan tanpon an, depase tanpon, itilizasyon varyab ki pa inisyalize.

Nan nouvo vèsyon an:

  • Chèk sa yo te ajoute nan nwayo analizè a:
    • absans yon operatè retounen nan kò fonksyon an;
    • anrejistre done ki sipèpoze, detèmine konpòtman ki pa defini;
    • valè ke yo te konpare se andeyò reprezantasyon valè kalite a;
    • optimize kopi pa aplike pou retounen std::move(lokal);
    • dosye a pa ka louvri ansanm pou li ak ekri nan diferan kouran (kouran);
  • pou platfòm Unix, te ajoute sipò pou montre mesaj dyagnostik nan diferan koulè;
  • te ajoute analiz senbolik pou ValueFlow. Sèvi ak delta senp lè w ap kalkile diferans ki genyen ant de varyab enkoni;
  • règ yo itilize pou lis jeton "defini" kapab tou matche ak #include;
  • tag bibliyotèk kounye a kapab genyen yon tag , ak kòmsadwa fonksyon yo gratis, ki ka aksepte resipyan tankou std::size, std::vid, std::begin, std::end, elatriye. ka presize yeld oswa aksyon pou konektè;
  • tag bibliyotèk kounye a kapab genyen yon tag pou konsèy entelijan ki gen pwopriyete inik. Kounye a gen yon avètisman sou referans ki pandye sou kalite endikasyon entelijan sa yo;
  • rezoud pwoblèm ak trete paramèt —cppcheck-build-dir;
  • htmlreport kapab kounye a montre enfòmasyon sou otè a (itilize git blame);
  • avètisman pwolonje sou varyab ki pa konstan, men ki kapab;
  • Yo te korije erè akimile ak enpèfeksyon analizè a.

Anplis de sa, chèk Misra C 2012 yo, ki gen ladan Amannman 1 ak Amannman 2, yo te konplètman aplike, eksepte règ 1.1, 1.2 ak 17.3. Chèk 1.1 ak 1.2 dwe fèt pa du a. Verifikasyon 17.3 ka fèt pa yon du tankou GCC.

Sous: opennet.ru

Add nouvo kòmantè