Liberigo de cppcheck 2.6, senmova kodanalizilo por C++ kaj C lingvoj

Nova versio de la senmova kodanalizilo cppcheck 2.6 estis publikigita, kiu ebligas al vi identigi diversajn klasojn de eraroj en kodo en la lingvoj C kaj C++, inkluzive kiam vi uzas ne-norman sintakson, tipan por enigitaj sistemoj. Kolekto de kromaĵoj estas provizita per kiuj cppcheck estas integrita kun diversaj evoluaj, kontinua integriĝo kaj testaj sistemoj, kaj ankaŭ provizas tiajn funkciojn kiel kontroli kodkonformecon kun la kodstilo. Por analizi kodon, vi povas uzi aŭ vian propran analizilon aŭ eksteran analizilon de Clang. Ĝi ankaŭ inkluzivas la skripton donate-cpu.py por provizi lokajn rimedojn por fari kunlaboran kodan revizian laboron por Debianaj pakaĵoj. La fontkodo de la projekto estas distribuita sub la permesilo GPLv3.

La evoluo de cppcheck estas temigis identigado de problemoj asociitaj kun nedifinita konduto kaj la uzo de dezajnoj kiuj estas danĝeraj de sekureca vidpunkto. La celo ankaŭ estas minimumigi falsajn pozitivojn. Inter la identigitaj problemoj: montriloj al neekzistantaj objektoj, dividoj per nulo, entjeraj superfluoj, malĝustaj ŝanĝaj operacioj, malĝustaj konvertiĝoj, problemoj dum laboro kun memoro, malĝusta uzo de STL, nulaj montriloj dereferences, la uzo de ĉekoj post la reala aliro al la bufro, bufro superfluoj , uzo de nekomencigitaj variabloj.

En la nova versio:

  • La sekvaj kontroloj estis aldonitaj al la analizilkerno:
    • foresto de revena operatoro en la funkciokorpo;
    • registras interkovrajn datumojn, determinas nedifinitan konduton;
    • la valoro komparata estas ekster la valorreprezento de la tipo;
    • kopio-optimumigo ne validas por reveni std::move(loka);
    • la dosiero ne povas esti malfermita samtempe por legado kaj skribo en malsamaj fluoj (fluo);
  • por Unikso-similaj platformoj, aldonis subtenon por montri diagnozajn mesaĝojn en malsamaj koloroj;
  • aldonis simbolan analizon por ValueFlow. Uzas simplan delton kiam oni kalkulas la diferencon inter du nekonataj variabloj;
  • la reguloj uzataj por la listo de ĵetonoj "difini" ankaŭ povas kongrui kun #include;
  • etikedo de biblioteko nun povas enhavi etikedon , kaj sekve la liberajn funkciojn, kiuj povas akcepti ujojn kiel std::size, std::empty, std::begin, std::end, ktp. povas specifi rendimenton aŭ agon por konektiloj;
  • etikedo de biblioteko nun povas enhavi etikedon por inteligentaj montriloj, kiuj havas unikan posedon. Nun averto estas eligita pri pendantaj referencoj al ĉi tiuj specoj de inteligentaj montriloj;
  • riparis problemojn pri prilaborado de la parametro —cppcheck-build-dir;
  • htmlreport nun povas montri informojn pri la aŭtoro (uzante git blame);
  • etenditaj avertoj pri variabloj kiuj ne estas konstantaj, sed povus esti;
  • La akumulitaj eraroj kaj mankoj de la analizilo estis korektitaj.

Aldone, la ĉekoj de Misra C 2012, inkluzive de Amendo 1 kaj Amendo 2, estis plene efektivigitaj, krom reguloj 1.1, 1.2 kaj 17.3. Kontroloj 1.1 kaj 1.2 devas esti faritaj de la kompililo. Konfirmo 17.3 povas esti farita de kompililo kiel GCC.

fonto: opennet.ru

Aldoni komenton