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

Është lëshuar një version i ri i analizuesit statik të kodit cppcheck 2.6, i cili ju lejon të identifikoni klasa të ndryshme gabimesh në kod në gjuhët C dhe C++, duke përfshirë përdorimin e sintaksës jo standarde, tipike për sistemet e ngulitura. Ofrohet një koleksion shtojcash përmes të cilave cppcheck integrohet me sisteme të ndryshme zhvillimi, integrimi të vazhdueshëm dhe testimi, si dhe ofron veçori të tilla si kontrollimi i përputhshmërisë së kodit me stilin e kodit. Për të analizuar kodin, mund të përdorni ose analizuesin tuaj ose një analizues të jashtëm nga Clang. Ai gjithashtu përfshin skriptin donate-cpu.py për të ofruar burime lokale për të bërë punën e përbashkët të shqyrtimit të kodit për paketat Debian. Kodi burimor i projektit shpërndahet nën licencën GPLv3.

Zhvillimi i cppcheck fokusohet në identifikimin e problemeve që lidhen me sjelljen e papërcaktuar dhe përdorimin e modeleve që janë të rrezikshme nga pikëpamja e sigurisë. Qëllimi është gjithashtu të minimizohen pozitivet e rreme. Ndër problemet e identifikuara: treguesit e objekteve joekzistente, ndarjet me zero, tejkalimet e numrave të plotë, operacionet e pasakta të zhvendosjes së biteve, konvertimet e pasakta, problemet gjatë punës me memorien, përdorimi i gabuar i STL, mosreferencat e treguesit null, përdorimi i kontrolleve pas aksesit aktual. te buffer, tejkalimet e tamponit , përdorimi i variablave të painitializuar.

Në versionin e ri:

  • Kontrollet e mëposhtme janë shtuar në bërthamën e analizuesit:
    • mungesa e një operatori kthimi në trupin e funksionit;
    • regjistron të dhëna të mbivendosura, përcakton sjelljen e papërcaktuar;
    • vlera që krahasohet është jashtë paraqitjes së vlerës së llojit;
    • optimizimi i kopjes nuk zbatohet për kthimin std::move(local);
    • skedari nuk mund të hapet njëkohësisht për lexim dhe shkrim në rrjedha të ndryshme (stream);
  • për platformat Unix, shtoi mbështetje për shfaqjen e mesazheve diagnostikuese me ngjyra të ndryshme;
  • shtoi analizën simbolike për ValueFlow. Përdor deltën e thjeshtë kur llogarit diferencën midis dy ndryshoreve të panjohura;
  • rregullat e përdorura për listën e shenjave "define" gjithashtu mund të përputhen me #include;
  • etiketa e bibliotekës tani mund të përmbajë një etiketë , dhe në përputhje me rrethanat funksione të lira, të cilat mund të pranojnë kontejnerë të tillë si std::size, std::empty, std::fillim, std::end, etj. mund të specifikojë yeld ose veprim për lidhësit;
  • Etiketa e bibliotekës tani mund të përmbajë një etiketë për treguesit inteligjentë që kanë pronësi unike. Tani është lëshuar një paralajmërim në lidhje me referencat e varura ndaj këtyre llojeve të treguesve inteligjentë;
  • rregulloi problemet me përpunimin e parametrit —cppcheck-build-dir;
  • htmlreport tani mund të shfaq informacione rreth autorit (duke përdorur git blame);
  • paralajmërime të zgjeruara për variablat që nuk janë konstante, por mund të jenë;
  • Gabimet dhe mangësitë e grumbulluara të analizatorit janë korrigjuar.

Përveç kësaj, kontrollet nga Misra C 2012, duke përfshirë Amendamentin 1 dhe Amendamentin 2, janë zbatuar plotësisht, përveç rregullave 1.1, 1.2 dhe 17.3. Kontrollet 1.1 dhe 1.2 duhet të kryhen nga përpiluesi. Verifikimi 17.3 mund të kryhet nga një përpilues si GCC.

Burimi: opennet.ru

Shto një koment