Pagpagawas sa cppcheck 2.6, usa ka static code analyzer alang sa C++ ug C nga mga pinulongan

Usa ka bag-ong bersyon sa static code analyzer cppcheck 2.6 ang gipagawas, nga nagtugot kanimo sa pag-ila sa lainlaing mga klase sa mga sayup sa code sa C ug C ++ nga mga pinulongan, lakip na kung gamiton ang dili standard nga syntax, kasagaran alang sa mga naka-embed nga sistema. Gihatag ang usa ka koleksyon sa mga plugins diin ang cppcheck gisagol sa lainlaing mga pag-uswag, padayon nga paghiusa ug mga sistema sa pagsulay, ug naghatag usab mga bahin sama sa pagsusi sa pagsunod sa code sa istilo sa code. Aron ma-parse ang code, mahimo nimong gamiton ang imong kaugalingon nga parser o usa ka eksternal nga parser gikan sa Clang. Naglakip usab kini sa donate-cpu.py nga script aron mahatagan ang lokal nga mga kapanguhaan aron mahimo ang kolaborasyon nga pagrepaso sa code alang sa mga pakete sa Debian. Ang source code sa proyekto giapod-apod ubos sa lisensya sa GPLv3.

Ang pag-uswag sa cppcheck naka-focus sa pag-ila sa mga problema nga nalangkit sa dili matino nga kinaiya ug ang paggamit sa mga disenyo nga delikado gikan sa usa ka safety point of view. Ang katuyoan mao usab ang pagminus sa mga sayup nga positibo. Lakip sa mga nahibal-an nga mga problema: mga punto sa wala nga mga butang, mga dibisyon sa zero, integer nga pag-awas, dili husto nga paglihok sa bit shift, dili husto nga mga pagkakabig, mga problema kung nagtrabaho uban ang memorya, dili husto nga paggamit sa STL, null pointer dereferences, ang paggamit sa mga tseke human sa aktwal nga pag-access sa buffer, buffer overruns , paggamit sa uninitialized variables.

Sa bag-ong bersyon:

  • Ang mosunod nga mga tseke gidugang sa analisador nga kinauyokan:
    • pagkawala sa usa ka return operator sa function body;
    • nagrekord sa nagsapaw-sapaw nga datos, nagtino sa dili matino nga kinaiya;
    • ang bili nga gitandi kay gawas sa representasyon sa bili sa matang;
    • copy optimization dili magamit sa pagbalik std::move(lokal);
    • ang file dili maablihan nga dungan alang sa pagbasa ug pagsulat sa lainlaing mga sapa (sapa);
  • alang sa Unix nga mga plataporma, dugang suporta sa pagpakita sa diagnostic nga mga mensahe sa lain-laing mga kolor;
  • gidugang simbolikong pagtuki alang sa ValueFlow. Naggamit ug simple nga delta sa pagkuwenta sa kalainan tali sa duha ka wala mailhi nga mga baryable;
  • ang mga lagda nga gigamit alang sa lista sa mga token nga "gihubit" mahimo usab nga motakdo sa #include;
  • ang library tag mahimo na nga adunay tag , ug sa ingon libre nga mga function, nga makadawat mga sulud sama sa std:: size, std::empty, std::begin, std::end, etc. mahimong magtino sa yeld o aksyon alang sa mga konektor;
  • Ang nga tag sa library mahimo na nga adunay usa ka nga tag alang sa mga smart pointer nga adunay talagsaon nga pagpanag-iya. Usa ka pasidaan ang gi-isyu karon bahin sa nagbitay nga mga pakisayran sa kini nga mga matang sa maalamon nga mga punto;
  • naayo nga mga problema sa pagproseso sa β€”cppcheck-build-dir parameter;
  • Ang htmlreport mahimo nang magpakita sa kasayuran bahin sa tagsulat (gamit ang git blame);
  • gipalapdan nga mga pasidaan bahin sa mga variable nga dili kanunay, apan mahimo;
  • Ang natipon nga mga sayup ug mga kakulangan sa analisador gitul-id.

Dugang pa, ang mga tseke gikan sa Misra C 2012, lakip ang Amendment 1 ug Amendment 2, hingpit nga gipatuman, gawas sa mga lagda 1.1, 1.2 ug 17.3. Ang mga tseke nga 1.1 ug 1.2 kinahanglang himoon sa compiler. Ang verification 17.3 mahimong ipahigayon sa usa ka compiler sama sa GCC.

Source: opennet.ru

Idugang sa usa ka comment