Izdanje cppcheck 2.6, statičkog analizatora koda za C++ i C jezike

Objavljena je nova verzija statičkog analizatora koda cppcheck 2.6, koja vam omogućuje prepoznavanje različitih klasa pogrešaka u kodu u jezicima C i C++, uključujući korištenje nestandardne sintakse, tipične za ugrađene sustave. Omogućena je kolekcija dodataka putem kojih se cppcheck integrira s različitim sustavima za razvoj, kontinuiranu integraciju i testiranje, a također pruža značajke kao što je provjera usklađenosti koda sa stilom koda. Za raščlanjivanje koda možete koristiti ili vlastiti raščlanjivač ili vanjski raščlanjivač tvrtke Clang. Također uključuje skriptu donate-cpu.py za pružanje lokalnih resursa za zajednički pregled koda za Debian pakete. Izvorni kod projekta distribuira se pod licencom GPLv3.

Razvoj cppchecka usmjeren je na prepoznavanje problema povezanih s nedefiniranim ponašanjem i korištenjem dizajna koji su opasni sa sigurnosne točke gledišta. Cilj je također minimizirati lažne pozitivne rezultate. Među identificiranim problemima: pokazivači na nepostojeće objekte, dijeljenja s nulom, prekoračenja cijelih brojeva, netočne operacije pomaka bitova, netočne konverzije, problemi pri radu s memorijom, netočna upotreba STL-a, dereferencije nultog pokazivača, korištenje provjera nakon stvarnog pristupa međuspremniku, prekoračenja međuspremnika, korištenje neinicijaliziranih varijabli.

U novoj verziji:

  • Sljedeće provjere dodane su jezgri analizatora:
    • nepostojanje operatora return u tijelu funkcije;
    • bilježi podatke koji se preklapaju, utvrđuje nedefinirano ponašanje;
    • vrijednost koja se uspoređuje je izvan prikaza vrijednosti tipa;
    • optimizacija kopiranja ne primjenjuje se na return std::move(local);
    • datoteka se ne može otvoriti istovremeno za čitanje i pisanje u različitim tokovima (stream);
  • za Unix platforme, dodana podrška za prikaz dijagnostičkih poruka u različitim bojama;
  • dodana simbolička analiza za ValueFlow. Koristi jednostavnu delta pri izračunavanju razlike između dvije nepoznate varijable;
  • pravila koja se koriste za popis tokena "define" također mogu odgovarati #include;
  • oznaka knjižnice sada može sadržavati oznaku , i sukladno tome besplatne funkcije, koje mogu prihvatiti spremnike kao što su std::size, std::empty, std::begin, std::end, itd. može odrediti yeld ili akciju za konektore;
  • oznaka knjižnice sada može sadržavati oznaku za pametne pokazivače koji imaju jedinstveno vlasništvo. Sada se izdaje upozorenje o visećim referencama na ove vrste pametnih pokazivača;
  • riješeni problemi s obradom parametra —cppcheck-build-dir;
  • htmlreport sada može prikazati informacije o autoru (koristeći git blame);
  • proširena upozorenja o varijablama koje nisu konstantne, ali bi mogle biti;
  • Nagomilane greške i nedostaci analizatora su ispravljeni.

Nadalje, provjere iz Misra C 2012, uključujući dopunu 1 i dopunu 2, u potpunosti su implementirane, osim pravila 1.1, 1.2 i 17.3. Provjere 1.1 i 1.2 mora izvršiti prevodilac. Provjeru 17.3 može izvesti kompilator kao što je GCC.

Izvor: opennet.ru

Dodajte komentar