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

Купить надежный хостинг для сайтов с защитой от DDoS, VPS VDS серверы 🔥 Купить надежный хостинг для сайтов с защитой от DDoS, VPS VDS серверы | ProHoster