Lëshimi i cppcheck 2.6, 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 lejon identifikimin e klasave të ndryshme të gabimeve në kodin e gjuhëve C dhe C++, përfshirë kur përdoret sintaksa jo-standard, tipike për sistemet e integruara. Ofron 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 ofrohen mundësitë, si verifikimi i përputhshmërisë së kodit me stilin e formatimit të kodit. Për analizën e kodit mund të përdoret si parseri i vet, ashtu edhe parseri i jashtëm nga Clang. Përfshihet gjithashtu një skenari donate-cpu.py për ofrimin e burimeve lokale për realizimin e punës së verifikimit 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 të lidhura me sjelljen e pasigurt dhe përdorimin e konstrukcioneve që janë të rrezikshme nga pikëpamja e sigurisë. Qëllimi është gjithashtu minimizimi i sinjaleve të rreme. Disa nga problemet e identifikuara përfshijnë: tregues të objekteve të paekzistueshme, ndarjet me zero, tejkalimet e numrave të plotë, operacionet e gabuara të zhvendosjes bitore, konvertimet e gabuara, problemet me menaxhimin e memories, përdorimi i gabuar i STL, zhbllokimi i treguesve me vlerë zero, përdorimi i kontrolleve pas referimit në buffer, daljen përtej kufijve të bufferëve, përdorimin e variablave të papërcaktuar.

NĂ« versionin e ri:

  • Kontrolli i analizatorit pĂ«rfshin verifikimet e mĂ«poshtme:
    • mungesa e operatorit return nĂ« trupin e funksionit;
    • shkrimi i tĂ« dhĂ«nave qĂ« mbivendosen, identifikimi i sjelljes sĂ« pasigurt;
    • vlera e krahasueshme ndodhet jashtĂ« kufijve tĂ« pĂ«rfytyrueshmĂ«risĂ« sĂ« tipeve;
    • optimizimi i kopjimit nuk aplikohet pĂ«r return std::move(local);
    • file nuk mund tĂ« hapet njĂ«kohĂ«sisht pĂ«r lexim dhe pĂ«r shkrim nĂ« rrjedha tĂ« ndryshme;
  • pĂ«r platformat Unix Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r dĂ«rgimin e mesazheve diagnostike me ngjyra tĂ« ndryshme;
  • Ă«shtĂ« shtuar analiza simbolike pĂ«r ValueFlow. PĂ«rdoret njĂ« delta e thjeshtĂ« pĂ«r llogaritjen e ndryshimeve midis dy variablave tĂ« panjohura;
  • rregullat e pĂ«rdorura pĂ«r listĂ«n e tokenave «define» mund tĂ« korrespondojnĂ« gjithashtu me #include;
  • Tegu bibliotekar tani mund tĂ« pĂ«rmbajĂ« tegun , dhe pĂ«rkatĂ«sisht funksionet free, tĂ« cilat mund tĂ« pranojnĂ« kĂ«to kontejnerĂ« si std::size, std::empty, std::begin, std::end etj., mund tĂ« tregojnĂ« yeld ose action pĂ«r kontejnerĂ«t;
  • Tegu bibliotekar tani mund tĂ« pĂ«rmbajĂ« tegun pĂ«r treguesit inteligjentĂ«, tĂ« cilĂ«t kanĂ« pronĂ«si ekskluzive (unique ownership). Tani jepet njĂ« paralajmĂ«rim pĂ«r "nĂ« ngacmim" nĂ« lidhje me kĂ«ta lloj treguesish inteligjentĂ«;
  • JanĂ« rregulluar problemet me pĂ«rpunimin e parametrave —cppcheck-build-dir;
  • htmlreport tani mund tĂ« nxjerrĂ« informacion rreth autorit (nĂ«pĂ«rmjet git blame);
  • Ă«shtĂ« zgjeruar shfaqja e paralajmĂ«rimeve pĂ«r variablat qĂ« nuk janĂ« konstante, por mund tĂ« ishin;
  • JanĂ« rregulluar gabimet e akumuluara dhe tĂ« pastruar analizatori.

Për më tepër, janë realizuar plotësisht kontrollet nga Misra C 2012, duke përfshirë Amendment 1 dhe Amendment 2, përveç rregullave 1.1, 1.2 dhe 17.3. Kontrollet 1.1 dhe 1.2 duhet të ekzekutohen nga kompajleri. Kontrolli 17.3 mund të ekzekutohet nga kompajleri, për shembull GCC.

Burimi: opennet.ru

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