Rilaxx ta 'cppcheck 2.6, analizzatur tal-kodiċi statiku għal-lingwi C++ u C

Verżjoni ġdida tal-analizzatur tal-kodiċi statiku cppcheck 2.6 ġiet rilaxxata, li tippermettilek tidentifika diversi klassijiet ta 'żbalji fil-kodiċi fil-lingwi C u C++, inkluż meta tuża sintassi mhux standard, tipika għal sistemi inkorporati. Ġabra ta 'plugins hija pprovduta li permezz tagħha cppcheck huwa integrat ma' diversi sistemi ta 'żvilupp, integrazzjoni kontinwa u ttestjar, u jipprovdi wkoll karatteristiċi bħall-iċċekkjar tal-konformità tal-kodiċi mal-istil tal-kodiċi. Biex teżamina l-kodiċi, tista 'tuża jew parser tiegħek jew parser estern minn Clang. Jinkludi wkoll l-iskrittura donate-cpu.py biex jipprovdi riżorsi lokali biex isir xogħol kollaborattiv ta' reviżjoni tal-kodiċi għall-pakketti Debian. Il-kodiċi tas-sors tal-proġett huwa mqassam taħt il-liċenzja GPLv3.

L-iżvilupp ta 'cppcheck huwa ffokat fuq l-identifikazzjoni ta' problemi assoċjati ma 'imġieba mhux definita u l-użu ta' disinji li huma perikolużi mil-lat ta 'sikurezza. L-għan huwa wkoll li jiġu minimizzati l-pożittivi foloz. Fost il-problemi identifikati: indikaturi għal oġġetti ineżistenti, diviżjonijiet b'żero, overflows ta 'numri sħaħ, operazzjonijiet ta' shift tal-bit mhux korretti, konverżjonijiet mhux korretti, problemi meta taħdem bil-memorja, użu ħażin ta 'STL, dereferences null pointer, l-użu ta' kontrolli wara l-aċċess attwali għall-buffer, buffer overruns , użu ta 'varjabbli mhux inizjali.

Fil-verżjoni l-ġdida:

  • Il-kontrolli li ġejjin ġew miżjuda mal-qalba tal-analizzatur:
    • assenza ta' operatur tar-ritorn fil-korp tal-funzjoni;
    • jirreġistra data li tikkoinċidi, jiddetermina mġiba mhux definita;
    • il-valur li qed jitqabbel huwa barra r-rappreżentazzjoni tal-valur tat-tip;
    • l-ottimizzazzjoni tal-kopja ma tapplikax għar-ritorn std::move(local);
    • il-fajl ma jistax jinfetaħ simultanjament għall-qari u l-kitba fi flussi differenti (fluss);
  • għal pjattaformi Unix, appoġġ miżjud għall-wiri ta 'messaġġi dijanjostiċi f'kuluri differenti;
  • analiżi simbolika miżjuda għal ValueFlow. Juża delta sempliċi meta tikkalkula d-differenza bejn żewġ varjabbli mhux magħrufa;
  • ir-regoli użati għal-lista ta 'tokens "jiddefinixxu" jistgħu wkoll jaqblu #include;
  • tikketta tal-librerija issa jista' jkun fih tikketta , u għalhekk il-funzjonijiet ħielsa, li jistgħu jaċċettaw kontenituri bħal std::size, std::empty, std::begin, std::end, eċċ. jista 'jispeċifika yeld jew azzjoni għall-konnetturi;
  • tikketta tal-librerija issa jista' jkun fih tikketta għal pointers intelliġenti li għandhom sjieda unika. Issa tinħareġ twissija dwar referenzi dangling għal dawn it-tipi ta 'smart pointers;
  • ffissati problemi bl-ipproċessar tal-parametru —cppcheck-build-dir;
  • htmlreport issa jista' juri informazzjoni dwar l-awtur (bl-użu ta' git blame);
  • twissijiet estiżi dwar varjabbli li mhumiex kostanti, iżda jistgħu jkunu;
  • L-iżbalji u n-nuqqasijiet akkumulati tal-analizzatur ġew ikkoreġuti.

Barra minn hekk, il-kontrolli minn Misra C 2012, inklużi l-Emenda 1 u l-Emenda 2, ġew implimentati bis-sħiħ, ħlief għar-regoli 1.1, 1.2 u 17.3. Il-kontrolli 1.1 u 1.2 għandhom isiru mill-kompilatur. Il-verifika 17.3 tista' ssir minn kompilatur bħal GCC.

Sors: opennet.ru

Żid kumment