cppcheck 2.6-ի թողարկում՝ ստատիկ կոդերի անալիզատոր C++ և C լեզուների համար

Թողարկվել է cppcheck 2.6 ստատիկ կոդերի անալիզատորի նոր տարբերակը, որը թույլ է տալիս բացահայտել C և C++ լեզուներով կոդի տարբեր դասերի սխալները, այդ թվում՝ ներկառուցված համակարգերին բնորոշ ոչ ստանդարտ շարահյուսություն օգտագործելիս: Տրամադրվում է պլագինների հավաքածու, որի միջոցով cppcheck-ը ինտեգրված է տարբեր զարգացման, շարունակական ինտեգրման և թեստավորման համակարգերի հետ, ինչպես նաև ապահովում է այնպիսի հնարավորություններ, ինչպիսիք են կոդի համապատասխանության ստուգումը կոդի ոճին: Կոդը վերլուծելու համար կարող եք օգտագործել կամ ձեր սեփական վերլուծիչը կամ Clang-ի արտաքին վերլուծիչը: Այն նաև ներառում է donate-cpu.py սկրիպտը, որը տրամադրում է տեղական ռեսուրսներ՝ Debian փաթեթների համար կոդի համատեղ վերանայման աշխատանք կատարելու համար: Նախագծի սկզբնական կոդը բաշխվում է GPLv3 լիցենզիայի ներքո:

Cppcheck-ի մշակումը կենտրոնացած է չսահմանված վարքագծի հետ կապված խնդիրների բացահայտման և անվտանգության տեսանկյունից վտանգավոր նմուշների օգտագործման վրա: Նպատակը նաև կեղծ պոզիտիվները նվազագույնի հասցնելն է: Հայտնաբերված խնդիրներից՝ գոյություն չունեցող օբյեկտների ցուցիչներ, զրոյով բաժանումներ, ամբողջ թվերի արտահոսք, սխալ բիթային հերթափոխի գործողություններ, սխալ փոխարկումներ, խնդիրներ հիշողության հետ աշխատելիս, STL-ի սխալ օգտագործում, զրո ցուցիչի անհասանելի հղումներ, փաստացի մուտքից հետո ստուգումների օգտագործում։ դեպի բուֆեր, բուֆերի գերազանցումներ, չնախապատրաստված փոփոխականների օգտագործում:

Նոր տարբերակում.

  • Հետևյալ ստուգումները ավելացվել են անալիզատորի միջուկին.
    • ֆունկցիայի մարմնում վերադարձի օպերատորի բացակայություն.
    • գրանցում է համընկնող տվյալները, որոշում է չսահմանված վարքագիծը.
    • համեմատվող արժեքը դուրս է տիպի արժեքային ներկայացումից.
    • պատճենահանման օպտիմիզացումը չի կիրառվում վերադարձի համար std::move(local);
    • ֆայլը չի ​​կարող միաժամանակ բացվել տարբեր հոսքերում կարդալու և գրելու համար (հոսք);
  • Unix հարթակների համար ավելացվել է տարբեր գույներով ախտորոշիչ հաղորդագրությունների ցուցադրման աջակցություն.
  • ավելացրել է խորհրդանշական վերլուծություն ValueFlow-ի համար: Երկու անհայտ փոփոխականների տարբերությունը հաշվարկելիս օգտագործում է պարզ դելտա;
  • «սահմանել» նշանների ցանկի համար օգտագործվող կանոնները նույնպես կարող են համընկնել #include;
  • գրադարանի պիտակ այժմ կարող է պիտակ պարունակել , և համապատասխանաբար անվճար գործառույթները, որոնք կարող են ընդունել այնպիսի կոնտեյներներ, ինչպիսիք են std::size, std::empty, std::begin, std::end և այլն: կարող է սահմանել ելք կամ գործողություն միակցիչների համար;
  • գրադարանի պիտակ այժմ կարող է պիտակ պարունակել խելացի ցուցիչների համար, որոնք ունեն յուրահատուկ սեփականություն: Այժմ նախազգուշացում է տրվել այս տեսակի խելացի ցուցիչների կախովի հղումների մասին.
  • շտկվել են —cppcheck-build-dir պարամետրի մշակման հետ կապված խնդիրները;
  • htmlreport-ն այժմ կարող է տեղեկատվություն ցուցադրել հեղինակի մասին (օգտագործելով git blame);
  • ընդլայնված նախազգուշացումներ փոփոխականների մասին, որոնք հաստատուն չեն, բայց կարող են լինել.
  • Անալիզատորի կուտակված սխալներն ու թերությունները շտկվել են։

Բացի այդ, Misra C 2012-ի ստուգումները, ներառյալ Փոփոխությունները 1-ը և Փոփոխությունները 2-ը, ամբողջությամբ իրականացվել են, բացառությամբ 1.1, 1.2 և 17.3 կանոնների: 1.1 և 1.2 ստուգումները պետք է կատարվեն կազմողի կողմից: Ստուգումը 17.3-ը կարող է իրականացվել այնպիսի կոմպիլյատորի կողմից, ինչպիսին է GCC:

Source: opennet.ru

Добавить комментарий