cppcheck 2.6 väljaanne, staatiline koodianalüsaator C++ ja C keelte jaoks.

Välja uus versioon staatilisest koodianalüsaatorist cppcheck 2.6, mis tuvastab erinevate vigade klassid C ja C++ keeles, sealhulgas mittestandardses süntaksis, mis on iseloomulik sisseehitatud süsteemidele. Pakutakse pluginakogumit, mille abil on tagatud cppcheck'i integreerimine erinevate arendus-, pideva integreerimise ja testimise süsteemidega ning pakutakse ka võimalusi, nagu koodi vastavuse kontrollimise võimalused koodi vormindamise stiilile. Koodi analüüsimiseks võib kasutada nii omaenda parserit kui ka Clangi välist parserit. Koos projektiga on kaasas skript donate-cpu.py, et pakkuda kohalikke ressursse Debian pakettide ühiseks koodikontrolliks. Projekti allikakoodid levitatakse GPLv3 litsentsi tingimuste kohaselt.

cppcheck'i arendamine keskendub probleemide tuvastamisele, mis on seotud määratlemata käitumise ja turvalisusriski konstruktsioonide kasutamisega. Eesmärk on samuti valehäirete minimeerimine. Tuvastatavate probleemide hulka kuuluvad: viidatud mitteolevate objektide, nulliga jagamine, täisarvude ületäitumine, vigased bitshift operatsioonid, vale tüüpide konversioonid, mäluga seotud probleemid, STL'i vale kasutamine, nullviidete dereferentseerimine, kontrollide rakendamine pärast tegelikku pöördumist mälupuhvrisse, puhvrist väljapoole minek, mitteinihialiseeritud muutuja kasutamine.

Uues versioonis:

  • Analüsaatori tuuma on lisatud järgmised kontrollid:
    • puuduv return operaator funktsiooni kehas;
    • katkestavate andmete kirjutamine, määratlemata käitumise tuvastamine;
    • võrreldav väärtus on tüübiväärtuste vahemikust väljas;
    • kopeerimise optimeerimist ei rakendata return std::move(local); jaoks;
    • faili ei saa avada samaaegselt lugemiseks ja kirjutamiseks erinevates voogudes;
  • Unix platvormide jaoks on lisatud diagnostiliste sõnumite värvilise väljundi tugi;
  • ValueFlow jaoks on lisatud sümboli analüüs. Kaks tundmatut muutujat võrreldes kasutatakse lihtsat delta-d;
  • Loetletud reeglid, mida kasutatakse define'i tokenite jaoks, võivad kehtida ka #include'i kohta;
  • Raamatukogu silt <function> võib nüüd sisaldada silti <container>, ja seega funktsioonid free, mis võivad võtta selliseid konteinerid nagu std::size, std::empty, std::begin, std::end jne, võivad näidata yeld või action konteinerite jaoks;
  • Raamatukogu silt <smart-pointer> võib nüüd sisaldada silti <unique> nutikate näidikute jaoks, mis omavad ainulaadset omandit (unique ownership). Nüüd antakse hoiatusi selliste nutikate näidikute 'ripakile' jäävate viidete kohta;
  • Parandatud probleemid parameetri --cppcheck-build-dir töötlemisel;
  • htmlreport võib nüüd kasutada autori teabe väljastamiseks (git blame abil);
  • Hoiatuste väljastamine muutujate kohta, mis ei ole konstantsed, kuid võiksid seda olla, on laiendatud;
  • Parandatud akumuleerunud vead ja analyysi puudujäägid.

Lisaks on täielikult rakendatud Misra C 2012 kontrollid, sealhulgas Amendment 1 ja Amendment 2, välja arvatud reeglid 1.1, 1.2 ja 17.3. Kontrollid 1.1 ja 1.2 peavad olema teostatavad kompilaatori poolt. Kontrol 17.3 võib läbi viia kompilaator, näiteks GCC.

Allikas: opennet.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster