Ilmus uus versioon staatilisest koodianalĂŒsaatorist cppcheck 2.6, mis vĂ”imaldab tuvastada erinevaid veaklasse C ja C++ keeles, sealhulgas mitte-standardsete sĂŒntaksite kasutamise korral, mis on iseloomulik sisseehitatud sĂŒsteemidele. Pakutakse pluginakogumit, mille kaudu on tagatud cppcheck integreerimine erinevate arendus-, pideva integreerimise ja testimise sĂŒsteemidega, samuti sellised vĂ”imalused nagu koodi vormindamisstiili kontrollimine. Koodi analĂŒĂŒsimiseks vĂ”ib kasutada nii enda parserit kui ka vĂ€lise Clangi parserit. Samuti on kaasas skript donate-cpu.py, et pakkuda kohalikke ressursse Debian paketihalduse koodi koostöökontrolli teostamiseks. Projekti lĂ€htekoodid on levitatud GPLv3 litsentsi alusel.
Cppchecki areng keskendub probleemide tuvastamisele, mis on seotud mÀÀramatute kĂ€itumiste ja turvariskide konstruktsioonide kasutamisega. EesmĂ€rgiks on ka valehĂ€irete minimeerimine. Tuvastatavad probleemid hĂ”lmavad: nĂ€itajaid, mis viitavad mitteeksisteerivatele objektidele, nulliga jagamisi, tĂ€isarvude ĂŒlevoolu, vale bitisiirdeoperatsiooni, vale tĂŒĂŒpide konversiooni, mĂ€lu kasutamisega seotud probleeme, STL-i vale kasutuse, nullindikaatorite dereferentseerimise, kontrollide tegemise pĂ€rast tegelikku juurdepÀÀsu puhvri, puhvri piiridest vĂ€ljajĂ”udmise ja mitte-initsialiseeritud muutujate kasutamise.
Uues versioonis:
- AnalĂŒsaatori tuumale on lisatud jĂ€rgmised kontrollid:
- funktsiooni kehas puuduv return operaator;
- katkestava andmete kirjutamise, mÀÀramatuse kÀitumise tuvastamine;
- vĂ”rdlemine on vĂ€ljaspool tĂŒĂŒbi vÀÀrtuste esitamist;
- return std::move(local) ei rakenda kopeerimise optimeerimist;
- faili ei saa avada samaaegselt lugemiseks ja kirjutamiseks erinevates voogudes;
- Unix platvormidele on lisatud mitme vÀrvi diagnostiliste sÔnumite vÀljastamise tugi;
- lisatud sĂŒmboolne analĂŒĂŒs ValueFlow jaoks. Kasutatakse lihtsat delta kahe tundmatu muutuja erinevuste arvutamiseks;
- reeglid, mida kasutatakse tokenite nimekirjas "define", vÔivad samuti vastata #include-le;
- Raamatukogu silt vĂ”ib nĂŒĂŒd sisaldada silda , ja vastavalt saavad funktsioonid free, mis vĂ”ivad vĂ”tta selliseid konteineritena nagu std::size, std::empty, std::begin, std::end jne, nĂ€idata yeld vĂ”i action konteineritele;
- Raamatukogu silt vĂ”ib nĂŒĂŒd sisaldada silda nutikatele nĂ€itajatele, mis omavad ainulaadset valdust (unique ownership). NĂŒĂŒd antakse hoiatust ârippuvateâ viidete kohta sellistele nutikatele nĂ€itajatele;
- Parandatud probleemid parameetri töötlemisega âcppcheck-build-dir;
- Htmlreport vĂ”ib nĂŒĂŒd vĂ€ljastada autori teavet (git blame'i abil);
- Keerukate muutuja hoiatuste vÀljundit on laiendatud, et need ei ole konstantsete, kuid vÔiksid olla;
- Parandatud kogunenud vead ja puudused analĂŒsaatoris.
Lisaks on tÀielikult rakendatud kontrolle, mis pÔhinevad Misra C 2012-l, sealhulgas lisamised 1 ja 2, vÀlja arvatud reeglid 1.1, 1.2 ja 17.3. Kontrollid 1.1 ja 1.2 tuleb tÀita kompilaatori poolt. Kontrolli 17.3 vÔib tÀita kompilaator, nÀiteks GCC.
Allikas: opennet.ru
