Kutolewa kwa cppcheck 2.6, kichanganuzi cha msimbo tuli cha lugha za C++ na C

Toleo jipya la kichanganuzi tuli cha msimbo cppcheck 2.6 limetolewa, ambalo hukuruhusu kutambua aina mbalimbali za makosa katika msimbo katika lugha za C na C++, ikiwa ni pamoja na wakati wa kutumia sintaksia isiyo ya kawaida, ya kawaida kwa mifumo iliyopachikwa. Mkusanyiko wa programu-jalizi hutolewa kwa njia ambayo cppcheck inaunganishwa na maendeleo mbalimbali, ushirikiano unaoendelea na mifumo ya kupima, na pia hutoa vipengele kama vile kuangalia kufuata kanuni na mtindo wa kanuni. Ili kuchanganua msimbo, unaweza kutumia kichanganuzi chako mwenyewe au kichanganuzi cha nje kutoka kwa Clang. Inajumuisha pia hati ya donate-cpu.py ili kutoa rasilimali za ndani kufanya kazi ya uhakiki wa msimbo shirikishi kwa vifurushi vya Debian. Msimbo wa chanzo wa mradi unasambazwa chini ya leseni ya GPLv3.

Ukuzaji wa cppcheck unalenga katika kutambua matatizo yanayohusiana na tabia isiyojulikana na matumizi ya miundo ambayo ni hatari kutoka kwa mtazamo wa usalama. Lengo pia ni kupunguza chanya za uwongo. Miongoni mwa shida zilizoainishwa: viashiria kwa vitu visivyopo, mgawanyiko kwa sifuri, kufurika kwa nambari, shughuli zisizo sahihi za mabadiliko kidogo, ubadilishaji usio sahihi, shida wakati wa kufanya kazi na kumbukumbu, utumiaji sahihi wa STL, upotezaji wa alama za null, utumiaji wa hundi baada ya ufikiaji halisi. kwa bafa, bafa overruns , matumizi ya viambajengo ambavyo havijaanzishwa.

Katika toleo jipya:

  • Cheki zifuatazo zimeongezwa kwenye msingi wa kichanganuzi:
    • kutokuwepo kwa operator wa kurudi katika mwili wa kazi;
    • rekodi data zinazoingiliana, huamua tabia isiyojulikana;
    • thamani inayolinganishwa iko nje ya uwakilishi wa thamani wa aina;
    • uboreshaji wa nakala hautumiki kurudisha std::move(local);
    • faili haiwezi kufunguliwa wakati huo huo kwa kusoma na kuandika katika mito tofauti (mkondo);
  • kwa mifumo ya Unix, imeongeza usaidizi wa kuonyesha ujumbe wa uchunguzi katika rangi tofauti;
  • aliongeza uchambuzi wa ishara kwa ValueFlow. Hutumia delta rahisi wakati wa kuhesabu tofauti kati ya vigezo viwili visivyojulikana;
  • sheria kutumika kwa ajili ya orodha ya ishara "define" inaweza pia mechi #include;
  • lebo ya maktaba sasa inaweza kuwa na lebo , na ipasavyo vitendakazi visivyolipishwa, ambavyo vinaweza kukubali vyombo kama vile std::size, std::tupu, std::anza, std::end, nk. inaweza kutaja yeld au hatua kwa viunganishi;
  • lebo ya maktaba sasa inaweza kuwa na lebo kwa viashiria mahiri ambavyo vina umiliki wa kipekee. Onyo sasa limetolewa kuhusu marejeleo yanayoning'inia kwa aina hizi za viashiria mahiri;
  • matatizo yasiyobadilika na usindikaji wa kigezo cha -cppcheck-build-dir;
  • htmlreport sasa inaweza kuonyesha habari kuhusu mwandishi (kwa kutumia git blame);
  • maonyo yaliyopanuliwa juu ya vigeuzo ambavyo si vya mara kwa mara, lakini vinaweza kuwa;
  • Makosa na mapungufu yaliyokusanywa ya analyzer yamerekebishwa.

Zaidi ya hayo, hundi kutoka Misra C 2012, ikijumuisha Marekebisho ya 1 na Marekebisho ya 2, yametekelezwa kikamilifu, isipokuwa kwa kanuni za 1.1, 1.2 na 17.3. Hundi 1.1 na 1.2 lazima zifanywe na mkusanyaji. Uthibitishaji 17.3 unaweza kufanywa na mkusanyaji kama vile GCC.

Chanzo: opennet.ru

Kuongeza maoni