VĂ€ljalaskmine cppcheck 2.6, staatiline koodianalĂŒsaator C++ ja C keelte jaoks

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

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster