Udgivelse af cppcheck 2.6, en statisk kodeanalysator til C++ og C-sprog.

Den nye version af statisk kodeanalysator cppcheck 2.6 er udgivet. Den gør det muligt at identificere forskellige klasser af fejl i C og C++-kode, herunder ved brug af ikke-standard syntaks, typisk for indlejrede systemer. Der tilbydes en samling af plugins, der sikrer integration af cppcheck med forskellige udviklingssystemer, kontinuerlig integration og testning, samt muligheder som tjek af kode for overholdelse af kodestil. Både en intern parser og en ekstern parser fra Clang kan anvendes til kodeanalysen. Desuden er der inkluderet et script donate-cpu.py til at tilbyde lokale ressourcer til udførelse af fælles kodegennemgang af Debian-pakker. Kildekoden til projektet distribueres under GPLv3-licensen.

Udviklingen af cppcheck er fokuseret på at identificere problemer relateret til usikkert adfærd og anvendelse af konstruktioner, der er farlige i sikkerhedsmæssig forstand. Målet er også at minimere falske positiver. Blandt de identificerede problemer er: pegere på ikke-eksisterende objekter, division med nul, heltalsoverløb, ukorrekte bit-shift-operationer, ukorrekte konverteringer, problemer med hukommelse, forkerte anvendelser af STL, dereferencering af nul-pegere, anvendelse af tjek efter faktisk adgang til buffer, buffer-overløb og brug af uinitialiserede variabler.

I den nye version:

  • Følgende tjek er blevet tilføjet til analysemotoren:
    • mangel på return-sætning i funktionen;
    • skrivning af overlappende data, identifikation af usikker adfærd;
    • den sammenlignede værdi ligger uden for repræsentationen af værditypen;
    • optimering af kopiering anvendes ikke for return std::move(local);
    • filen kan ikke åbnes samtidig for læsning og skrivning i forskellige strømme;
  • der er tilføjet support til udskrivning af diagnostiske meddelelser med forskellige farver til Unix-platforme;
  • der er tilføjet symbolanalyse for ValueFlow. En simpel delta anvendes til at beregne forskellene mellem to ukendte variable;
  • reglerne, der bruges til tokenlisten 'define', kan også gælde for #include;
  • Bibliotek tag kan nu indeholde tag , og de tilsvarende funktioner free, som kan tage sådanne containere som std::size, std::empty, std::begin, std::end osv., kan angive yield eller action for containerne;
  • Bibliotek tag kan nu indeholde tag til smarte pointere, der har unik ejerskab (unique ownership). Der udstedes nu en advarsel om 'hængende' referencer til sådanne smarte pointere;
  • Problemer med parameteren —cppcheck-build-dir er blevet rettet;
  • htmlreport kan nu udskrive information om forfatteren (ved hjælp af git blame);
  • Advarsler om variabler, der ikke er konstante, men kunne være det, er blevet udvidet;
  • Akkumulerede fejl og mangler i analysatoren er blevet rettet.

Kontrollerne fra Misra C 2012, inklusiv Amendment 1 og Amendment 2, er blevet fuldt implementeret, undtagen reglerne 1.1, 1.2 og 17.3. Kontrollerne 1.1 og 1.2 skal udføres af compileren. Kontrol 17.3 kan udføres af compileren, for eksempel GCC.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster