Release fan cppcheck 2.6, in statyske koadeanalysator foar C ++ en C-talen

In nije ferzje fan 'e statyske koadeanalysator cppcheck 2.6 is frijlitten, wêrtroch jo ferskate klassen fan flaters yn' e koade kinne identifisearje yn 'e C- en C ++-talen, ynklusyf by it brûken fan net-standertsyntaksis, typysk foar ynbêde systemen. In kolleksje fan plugins wurdt levere troch hokker cppcheck wurdt yntegrearre mei ferskate ûntwikkeling, trochgeande yntegraasje en testen systemen, en ek jout sokke funksjes as kontrolearjen koade konformiteit mei de koade styl. Om koade te parsearjen kinne jo jo eigen parser brûke as in eksterne parser fan Clang. It omfettet ek it donate-cpu.py-skript om lokale boarnen te leverjen om gearwurkjend koadebeoardielingswurk te dwaan foar Debian-pakketten. De boarnekoade fan it projekt wurdt ferspraat ûnder de GPLv3-lisinsje.

De ûntwikkeling fan cppcheck is rjochte op it identifisearjen fan problemen ferbûn mei undefinieare gedrach en it brûken fan ûntwerpen dy't gefaarlik binne út in feiligenspunt. It doel is ek om falske positiven te minimalisearjen. Under de identifisearre problemen: oanwizers nei net-besteande objekten, divyzjes ​​​​troch nul, oerstreamingen fan heule getal, ferkearde bitferskowingsoperaasjes, ferkearde konversaasjes, problemen by it wurkjen mei ûnthâld, ferkeard gebrûk fan STL, nul-oanwizer dereferences, it brûken fan kontrôles nei de werklike tagong oan de buffer, buffer oerrin, gebrûk fan uninitialized fariabelen.

Yn de nije ferzje:

  • De folgjende kontrôles binne tafoege oan 'e analysatorkearn:
    • ôfwêzigens fan in weromkommende operator yn it funksje lichem;
    • records oerlappende gegevens, bepaalt undefined gedrach;
    • de wearde dy't fergelike is bûten de weardefertsjintwurdiging fan it type;
    • kopyoptimalisaasje jildt net foar werom std :: move (lokaal);
    • de triem kin net tagelyk iepene wurde foar lêzen en skriuwen yn ferskate streamen (stream);
  • foar Unix-platfoarms, tafoege stipe foar it werjaan fan diagnostyske berjochten yn ferskate kleuren;
  • tafoege symboalyske analyze foar ValueFlow. Brûkt ienfâldige delta by it berekkenjen fan it ferskil tusken twa ûnbekende fariabelen;
  • de regels dy't brûkt wurde foar de list mei tokens "define" kinne ek oerienkomme mei #include;
  • biblioteek tag kin no in tag befetsje , en dêrmei de fergese funksjes, dy't konteners kinne akseptearje lykas std :: grutte, std :: leech, std :: begjinne, std :: ein, ensfh. kin opjaan yeld of aksje foar Anschlüsse;
  • biblioteek tag kin no in tag befetsje foar tûke oanwizers dy't unyk eigendom hawwe. In warskôging wurdt no útjûn oer dangling ferwizings nei dit soarte fan smart pointers;
  • fêste problemen mei it ferwurkjen fan de parameter —cppcheck-build-dir;
  • htmlreport kin no ynformaasje oer de auteur werjaan (mei git blame);
  • útwreide warskôgings oer fariabelen dy't net konstant binne, mar kinne wêze;
  • De accumulearre flaters en tekortkomingen fan 'e analysator binne korrizjearre.

Derneist binne de kontrôles fan Misra C 2012, ynklusyf amendemint 1 en amendemint 2, folslein útfierd, útsein regels 1.1, 1.2 en 17.3. Kontroles 1.1 en 1.2 moatte wurde útfierd troch de kompilator. Ferifikaasje 17.3 kin wurde útfierd troch in kompilator lykas GCC.

Boarne: opennet.ru

Add a comment