Lëshimi i cppcheck 2.6, një analizues statik i kodit për gjuhët C++ dhe C

Doli një version i ri i analizatorit statik të kodit cppcheck 2.6, i cili mundëson identifikimin e klasave të ndryshme të gabimeve në kodin e gjuhëve C dhe C++, përfshirë përdorimin e sintaksës jo standarde, tipike për sistemet e integruara. Ofrohet një koleksion plugin-esh, përmes të cilave sigurohet integrimi i cppcheck me sisteme të ndryshme zhvillimi, integrimi të vazhdueshëm dhe testimi, si dhe mundësitë e kontrolleve të përputhshmërisë me stilin e kodimit. Për analizën e kodit mund të përdoret si parseri ynë, ashtu edhe një parser i jashtëm nga Clang. Në përbërje gjithashtu gjendet skripti donate-cpu.py për ofrimin e burimeve lokale për kryerjen e punës së shqyrtimit të përbashkët të kodit të paketave Debian. Kodet burimore të projektit shpërndahen nën licencën GPLv3.

Zhvillimi i cppcheck përqendrohet në identifikimin e problemeve që lidhen me sjelljen e paqartë dhe përdorimin e konstrukcioneve, që janë të rrezikshme nga pikëpamja e sigurisë. Qëllimi është gjithashtu minimizimi i alarminve të rreme. Disa nga problemet e identifikuara përfshijnë: tregues në objekte që nuk ekzistojnë, ndarja me zero, mbushje të numrave, operacione të gabuara të zhvendosjes së bitëve, konvertime të gabuara, probleme me menaxhimin e memories, përdorimi i gabuar i STL, dereferencimi i treguesve null, përdorimi i kontrolleve pas aksesit real në bufër, dalja përtej kufijve të bufërave, përdorimi i variablave të pa inicializuar.

Në këtë version të ri:

  • JanĂ« shtuar kontrollime tĂ« reja nĂ« thelbin e analizatorit:
    • mungesa e operatorit return nĂ« trupin e funksionit;
    • shkrimi i tĂ« dhĂ«nave tĂ« mbivendosura, definimi i sjelljes sĂ« paqartĂ«;
    • vlera e krahasueshme ndodhet jashtĂ« pĂ«rmasave tĂ« tipit;
    • optimizimi i kopjimit nuk zbatohet pĂ«r return std::move(local);
    • file nuk mund tĂ« hapet nĂ« tĂ« njĂ«jtĂ«n kohĂ« pĂ«r tĂ« lexuar dhe shkruar nĂ« rrjedha tĂ« ndryshme;
  • pĂ«r platforma Unix, Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r daljen e mesazheve diagnostikuese me ngjyra tĂ« ndryshme;
  • Ă«shtĂ« shtuar analiza simbolike pĂ«r ValueFlow. PĂ«rdoret njĂ« delta e thjeshtĂ« pĂ«r llogaritjen e diferencave ndĂ«rmjet dy variablave tĂ« panjohur;
  • rregullat e pĂ«rdorura pĂ«r listĂ«n e tokeneve "define" gjithashtu mund tĂ« pĂ«rputhen me #include;
  • tagu bibliotekar tani mund tĂ« pĂ«rmbajĂ« tagun , dhe pĂ«rkatĂ«sisht funksionet free, tĂ« cilat mund tĂ« pranojnĂ« kontejnerĂ« si std::size, std::empty, std::begin, std::end etj., mund tĂ« tregojnĂ« yeld ose action pĂ«r kontejnerĂ«t;
  • tagu bibliotekar tani mund tĂ« pĂ«rmbajĂ« tagun pĂ«r treguesit e zgjuar, tĂ« cilĂ«t kanĂ« pronĂ«si tĂ« veçantĂ« (unique ownership). Tani jepet njĂ« paralajmĂ«rim pĂ«r "treguesit" e tillĂ« tĂ« zgjuar;
  • janĂ« rregulluar problemet me trajtimin e parametrave —cppcheck-build-dir;
  • htmlreport tani mund tĂ« nxjerrĂ« informacionin pĂ«r autorin (pĂ«rmes git blame);
  • Ă«shtĂ« zgjeruar lĂ«shimi i paralajmĂ«rimeve pĂ«r variabla qĂ« nuk janĂ« konstante, por mund tĂ« ishin;
  • janĂ« rregulluar gabimet dhe dĂ«shtimet e akumuluara tĂ« analizatorit.

Për më tepër, janë realizuar plotësisht kontrollimet nga Misra C 2012, përfshirë Amendamentin 1 dhe Amendamentin 2, përveç rregullave 1.1, 1.2 dhe 17.3. Kontrollimet 1.1 dhe 1.2 duhet të kryhen nga kompajleri. Kontrollimi 17.3 mund të kryhet nga kompajleri, p.sh. GCC.

Burimi: opennet.ru

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster