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
