C++ ja C keelte staatilise koodianalüsaatori cppcheck 2.6 väljalase

Välja on antud uus versioon staatilisest koodianalüsaatorist cppcheck 2.6, mis võimaldab tuvastada C- ja C++-keelte koodis erinevaid veaklasse, sealhulgas manussüsteemidele omase mittestandardse süntaksi kasutamisel. Pakutakse pluginate kogu, mille kaudu cppcheck on integreeritud erinevate arendus-, pidevintegreerimis- ja testimissüsteemidega ning pakub ka selliseid funktsioone nagu koodi vastavuse kontrollimine koodistiilile. Koodi sõelumiseks võite kasutada kas oma parserit või Clangi välist parserit. See sisaldab ka skripti donate-cpu.py, et pakkuda kohalikke ressursse Debiani pakettide koodiülevaatuse koostöö tegemiseks. Projekti lähtekoodi levitatakse GPLv3 litsentsi all.

Cppchecki arendus on keskendunud määratlemata käitumisega seotud probleemide tuvastamisele ja ohutuse seisukohalt ohtlike disainilahenduste kasutamisele. Eesmärk on ka minimeerida valepositiivseid tulemusi. Tuvastatud probleemide hulgas: osutid olematutele objektidele, jagamine nulliga, täisarvude ületäitumine, valed biti nihketoimingud, valed teisendused, probleemid mäluga töötamisel, STL-i vale kasutamine, null-osuti viited, kontrollide kasutamine pärast tegelikku juurdepääsu puhvrile, puhvri ülekoormused, initsialiseerimata muutujate kasutamine.

Uues versioonis:

  • Analüsaatori tuumale on lisatud järgmised kontrollid:
    • tagastusoperaatori puudumine funktsiooni kehas;
    • salvestab kattuvaid andmeid, määrab määratlemata käitumise;
    • võrreldav väärtus on väljaspool tüübi väärtuse esitust;
    • koopia optimeerimine ei kehti tagastamise korral std::move(local);
    • faili ei saa korraga avada lugemiseks ja kirjutamiseks erinevates voogudes (voos);
  • Unixi platvormidele lisatud tugi erinevate värvidega diagnostikateadete kuvamiseks;
  • lisatud ValueFlow jaoks sümboolne analüüs. Kasutab kahe tundmatu muutuja erinevuse arvutamisel lihtsat deltat;
  • märkide loendi "define" jaoks kasutatavad reeglid võivad ka sobida #include;
  • raamatukogu silt võib nüüd sisaldada silti , ja vastavalt tasuta funktsioonid, mis võivad aktsepteerida selliseid konteinereid nagu std::size, std::empty, std::begin, std::end jne. saab määrata konnektorite hüüdlause või toimingu;
  • raamatukogu silt võib nüüd sisaldada silti nutikate näpunäidete jaoks, millel on kordumatu omandiõigus. Nüüd antakse hoiatus rippuvate viidete eest seda tüüpi nutikatele osutitele;
  • parandatud probleemid parameetri —cppcheck-build-dir töötlemisel;
  • htmlreport saab nüüd kuvada teavet autori kohta (kasutades git blame);
  • laiendatud hoiatused muutujate kohta, mis ei ole konstantsed, kuid võiksid olla;
  • Korrigeeritud on analüsaatori kogunenud vead ja puudused.

Lisaks on Misra C 2012 kontrollid, sealhulgas muudatused 1 ja 2, täielikult rakendatud, välja arvatud reeglid 1.1, 1.2 ja 17.3. Kontrollid 1.1 ja 1.2 peab tegema koostaja. Verifitseerimist 17.3 saab teostada kompilaator, näiteks GCC.

Allikas: opennet.ru

Lisa kommentaar