Julkaistiin cppcheck 2.6, staattinen koodianalysaattori C++- ja C-kielille

Staattisen koodin analysaattorin cppcheck 2.6 on julkaistu uusi versio, jonka avulla voit tunnistaa erilaisia ​​virheluokkia C- ja C++-kielissä, myös käytettäessä sulautetuille järjestelmille tyypillistä epästandardista syntaksia. Tarjolla on kokoelma laajennuksia, joiden kautta cppcheck on integroitu erilaisiin kehitys-, jatkuvaan integrointi- ja testausjärjestelmiin ja tarjoaa myös sellaisia ​​ominaisuuksia kuin koodin yhteensopivuuden tarkistaminen koodityylin kanssa. Voit jäsentää koodia joko omalla jäsentimelläsi tai ulkoisella Clangin jäsentimellä. Se sisältää myös komentosarjan donate-cpu.py, joka tarjoaa paikallisia resursseja Debian-pakettien yhteiskäyttöön tarkoitetun koodintarkistustyön tekemiseen. Projektin lähdekoodia jaetaan GPLv3-lisenssillä.

cppcheckin kehitystyössä keskitytään määrittelemättömään käyttäytymiseen liittyvien ongelmien tunnistamiseen ja turvallisuuden kannalta vaarallisten mallien käyttöön. Tavoitteena on myös minimoida vääriä positiivisia. Tunnistettujen ongelmien joukossa: osoittimet olemattomiin objekteihin, jako nollalla, kokonaislukujen ylivuoto, virheelliset bitinsiirtotoiminnot, väärät muunnokset, muistin kanssa työskentelyn ongelmat, virheellinen STL:n käyttö, nollaosoittimen viittaukset, varsinaisen käytön jälkeisten tarkistusten käyttö puskuriin, puskurin ylitykset, alustamattomien muuttujien käyttö.

Uudessa versiossa:

  • Seuraavat tarkistukset on lisätty analysaattorin ytimeen:
    • paluuoperaattorin puuttuminen funktion rungosta;
    • tallentaa päällekkäisiä tietoja, määrittää määrittelemättömän käyttäytymisen;
    • verrattava arvo on tyypin arvoesityksen ulkopuolella;
    • kopioinnin optimointi ei koske paluuta std::move(local);
    • tiedostoa ei voi avata samanaikaisesti lukemista ja kirjoittamista varten eri virroissa (stream);
  • Unix-alustoille lisätty tuki diagnostisten viestien näyttämiseen eri väreissä;
  • lisätty symbolinen analyysi ValueFlow'lle. Käyttää yksinkertaista deltaa laskettaessa kahden tuntemattoman muuttujan välistä eroa;
  • "define" -merkkiluettelossa käytetyt säännöt voivat myös vastata #include;
  • kirjaston tunniste voi nyt sisältää tunnisteen , ja vastaavasti ilmaiset toiminnot, jotka voivat hyväksyä säiliöitä, kuten std::size, std::empty, std::begin, std::end jne. voi määrittää liittimien huudon tai toiminnon;
  • kirjaston tunniste voi nyt sisältää tunnisteen älykkäille osoittimille, joilla on ainutlaatuinen omistusoikeus. Nyt on annettu varoitus roikkuvista viittauksista tämäntyyppisiin älykkäisiin osoittimiin;
  • korjatut ongelmat parametrin —cppcheck-build-dir käsittelyssä;
  • htmlreport voi nyt näyttää tietoja tekijästä (käyttäen git blame);
  • laajennetut varoitukset muuttujista, jotka eivät ole vakioita, mutta voivat olla;
  • Analysaattorin kertyneet virheet ja puutteet on korjattu.

Lisäksi Misra C 2012 -tarkastukset, mukaan lukien tarkistukset 1 ja 2, on pantu kokonaisuudessaan täytäntöön sääntöjä 1.1, 1.2 ja 17.3 lukuun ottamatta. Kääntäjän on suoritettava tarkistukset 1.1 ja 1.2. Varmennus 17.3 voidaan suorittaa kääntäjällä, kuten GCC.

Lähde: opennet.ru

Lisää kommentti