Cppcheck 2.6, statiskā koda analizatora C++ un C valodām izlaišana

Ir izlaista jauna statiskā koda analizatora versija cppcheck 2.6, kas ļauj identificēt dažādas kļūdu klases kodā C un C++ valodās, tostarp izmantojot nestandarta sintaksi, kas raksturīga iegultajām sistēmām. Tiek nodrošināta spraudņu kolekcija, ar kuras palīdzību cppcheck ir integrēts ar dažādām izstrādes, nepārtrauktas integrācijas un testēšanas sistēmām, kā arī nodrošina tādas funkcijas kā koda atbilstības pārbaude koda stilam. Lai parsētu kodu, varat izmantot savu parsētāju vai ārēju parsētāju no Clang. Tas ietver arī skriptu donate-cpu.py, lai nodrošinātu vietējos resursus, lai veiktu kopīgu koda pārskatīšanas darbu Debian pakotnēm. Projekta pirmkods tiek izplatīts saskaņā ar GPLv3 licenci.

Cppcheck izstrāde ir vērsta uz tādu problēmu identificēšanu, kas saistītas ar nedefinētu uzvedību un tādu dizainu izmantošanu, kas ir bīstami no drošības viedokļa. Mērķis ir arī samazināt viltus pozitīvus rezultātus. Starp identificētajām problēmām: norādes uz neesošiem objektiem, dalīšana ar nulli, veselu skaitļu pārpildes, nepareizas bitu nobīdes darbības, nepareizas konvertācijas, problēmas darbā ar atmiņu, nepareiza STL izmantošana, nulles rādītāju novirzes, pārbaužu izmantošana pēc faktiskās piekļuves uz buferi, bufera pārtēriņi, neinicializētu mainīgo izmantošana.

Jaunajā versijā:

  • Analizatora kodolam ir pievienotas šādas pārbaudes:
    • atgriešanas operatora trūkums funkcijas korpusā;
    • reģistrē datus, kas pārklājas, nosaka nedefinētu uzvedību;
    • salīdzināmā vērtība ir ārpus veida vērtības attēlojuma;
    • kopēšanas optimizācija neattiecas uz atgriešanu std::move(local);
    • failu nevar atvērt vienlaikus lasīšanai un rakstīšanai dažādās plūsmās (straumē);
  • Unix platformām pievienots atbalsts diagnostikas ziņojumu attēlošanai dažādās krāsās;
  • pievienota simboliskā ValueFlow analīze. Aprēķinot atšķirību starp diviem nezināmiem mainīgajiem, izmanto vienkāršu delta;
  • noteikumi, kas tiek izmantoti marķieru sarakstam "define", var arī atbilst #include;
  • bibliotēkas tags tagad var saturēt atzīmi , un attiecīgi bezmaksas funkcijas, kas var pieņemt konteinerus, piemēram, std::size, std::empty, std::begin, std::end utt. var norādīt savienotāju saucienu vai darbību;
  • bibliotēkas tags tagad var saturēt atzīmi viedajām norādēm, kurām ir unikālas īpašumtiesības. Tagad tiek izdots brīdinājums par piekārtām atsaucēm uz šāda veida viedajām norādēm;
  • novērstas problēmas ar parametra —cppcheck-build-dir apstrādi;
  • htmlreport tagad var parādīt informāciju par autoru (izmantojot git blame);
  • paplašināti brīdinājumi par mainīgajiem, kas nav nemainīgi, bet varētu būt;
  • Izlabotas uzkrātās kļūdas un analizatora nepilnības.

Turklāt Misra C 2012 pārbaudes, tostarp 1. un 2. grozījums, ir pilnībā īstenotas, izņemot 1.1., 1.2. un 17.3. noteikumu. Pārbaudes 1.1 un 1.2 ir jāveic kompilatoram. Pārbaudi 17.3 var veikt kompilators, piemēram, GCC.

Avots: opennet.ru

Pievieno komentāru