Ngaleupaskeun cppcheck 2.6, analisa kode statik pikeun basa C ++ sareng C

Versi anyar tina analisa kode statik cppcheck 2.6 parantos dileupaskeun, anu ngamungkinkeun anjeun pikeun ngaidentipikasi sababaraha kelas kasalahan dina kode dina basa C sareng C ++, kalebet nalika nganggo sintaksis non-standar, khas pikeun sistem anu dipasang. Kumpulan plugins disayogikeun dimana cppcheck diintegrasikeun sareng sagala rupa pamekaran, integrasi kontinyu sareng sistem uji, sareng ogé nyayogikeun fitur sapertos mariksa patuh kode sareng gaya kode. Pikeun parse kode, Anjeun bisa make parser sorangan atawa parser éksternal ti Clang. Éta ogé kalebet skrip donate-cpu.py pikeun nyayogikeun sumber daya lokal pikeun ngalakukeun ulasan kode kolaborasi pikeun bungkusan Debian. Kodeu sumber proyék disebarkeun dina lisénsi GPLv3.

Ngembangkeun cppcheck fokus kana ngaidentipikasi masalah anu aya hubunganana sareng paripolah anu teu jelas sareng panggunaan desain anu bahaya tina sudut pandang kaamanan. Tujuanana ogé pikeun ngaminimalkeun positip palsu. Diantara masalah anu diidentipikasi: pointers ka objék non-existent, division ku enol, overflows integer, operasi shift bit lepat, conversions lepat, masalah nalika gawé bareng memori, pamakéan lepat tina STL, null pointer dereferences, pamakéan cék sanggeus aksés sabenerna. mun panyangga, panyangga overruns , pamakéan variabel uninitialized.

Dina versi anyar:

  • Cék di handap ieu parantos ditambah kana inti analis:
    • henteuna operator mulang dina awak fungsi;
    • rékaman data tumpang tindihna, nangtukeun kabiasaan undefined;
    • nilai keur dibandingkeun téh di luar ngagambarkeun nilai tipe;
    • optimasi salinan teu dilarapkeun ka mulang std :: move (lokal);
    • file teu bisa dibuka sakaligus pikeun maca jeung nulis dina aliran béda (stream);
  • pikeun platform Unix, ditambahkeun rojongan pikeun mintonkeun pesen diagnostik dina kelir béda;
  • ditambahkeun analisis simbolis pikeun ValueFlow. Ngagunakeun délta basajan nalika ngitung bédana antara dua variabel kanyahoan;
  • aturan dipaké pikeun daptar tokens "nangtukeun" ogé bisa cocog #include;
  • tag perpustakaan ayeuna tiasa ngandung tag , sareng sasuai fungsi gratis, anu tiasa nampi wadah sapertos std :: size, std :: kosong, std :: begin, std :: end, jsb. bisa nangtukeun yeld atawa aksi pikeun panyambungna;
  • tag perpustakaan ayeuna tiasa ngandung tag pikeun pointers pinter nu boga kapamilikan unik. A warning ayeuna dikaluarkeun ngeunaan dangling rujukan pikeun jenis ieu pointers pinter;
  • ngalereskeun masalah sareng ngolah parameter -cppcheck-build-dir;
  • htmlreport ayeuna tiasa nampilkeun inpormasi ngeunaan panulis (nganggo git blame);
  • warnings nambahan ngeunaan variabel nu teu konstan, tapi bisa jadi;
  • Kasalahan akumulasi sareng kakurangan analis parantos dilereskeun.

Salaku tambahan, cék tina Misra C 2012, kalebet Amandemen 1 sareng Amandemen 2, parantos dilaksanakeun sapinuhna, kecuali aturan 1.1, 1.2 sareng 17.3. Cék 1.1 sareng 1.2 kedah dilakukeun ku kompiler. Verifikasi 17.3 tiasa dilakukeun ku kompiler sapertos GCC.

sumber: opennet.ru

Tambahkeun komentar