Rilis cppcheck 2.6, penganalisis kode statis untuk bahasa C++ dan C

Versi baru penganalisis kode statis cppcheck 2.6 telah dirilis, yang memungkinkan Anda mengidentifikasi berbagai kelas kesalahan dalam kode dalam bahasa C dan C++, termasuk saat menggunakan sintaks non-standar, yang khas untuk sistem tertanam. Kumpulan plugin disediakan melalui cppcheck yang terintegrasi dengan berbagai pengembangan, integrasi berkelanjutan, dan sistem pengujian, dan juga menyediakan fitur seperti pemeriksaan kepatuhan kode dengan gaya kode. Untuk mengurai kode, Anda dapat menggunakan parser Anda sendiri atau parser eksternal dari Clang. Ini juga mencakup skrip donate-cpu.py untuk menyediakan sumber daya lokal guna melakukan pekerjaan peninjauan kode kolaboratif untuk paket Debian. Kode sumber proyek didistribusikan di bawah lisensi GPLv3.

Pengembangan cppcheck difokuskan pada identifikasi masalah yang terkait dengan perilaku tidak terdefinisi dan penggunaan desain yang berbahaya dari sudut pandang keselamatan. Tujuannya juga untuk meminimalkan kesalahan positif. Di antara masalah yang teridentifikasi: penunjuk ke objek yang tidak ada, pembagian dengan nol, luapan bilangan bulat, operasi pergeseran bit yang salah, konversi yang salah, masalah saat bekerja dengan memori, penggunaan STL yang salah, dereferensi penunjuk nol, penggunaan pemeriksaan setelah akses sebenarnya ke buffer, buffer overruns, penggunaan variabel yang tidak diinisialisasi.

ΠΎΠ²ΠΎΠΉ Срсии:

  • Pemeriksaan berikut telah ditambahkan ke inti penganalisis:
    • tidak adanya operator pengembalian di badan fungsi;
    • mencatat data yang tumpang tindih, menentukan perilaku tidak terdefinisi;
    • nilai yang dibandingkan berada di luar representasi nilai tipe;
    • optimasi penyalinan tidak berlaku untuk return std::move(local);
    • file tidak dapat dibuka secara bersamaan untuk membaca dan menulis di aliran (stream) yang berbeda;
  • untuk platform Unix, menambahkan dukungan untuk menampilkan pesan diagnostik dalam berbagai warna;
  • menambahkan analisis simbolis untuk ValueFlow. Menggunakan delta sederhana saat menghitung selisih antara dua variabel yang tidak diketahui;
  • aturan yang digunakan untuk daftar token "define" juga bisa cocok dengan #include;
  • tanda perpustakaan sekarang dapat berisi tag , dan karenanya fungsi gratis, yang dapat menerima wadah seperti std::size, std::empty, std::begin, std::end, dll. dapat menentukan yeld atau tindakan untuk konektor;
  • tanda perpustakaan sekarang dapat berisi tag untuk petunjuk cerdas yang memiliki kepemilikan unik. Peringatan kini dikeluarkan tentang referensi yang menggantung ke jenis petunjuk cerdas ini;
  • memperbaiki masalah dalam memproses parameter β€”cppcheck-build-dir;
  • htmlreport sekarang dapat menampilkan informasi tentang penulis (menggunakan git menyalahkan);
  • peringatan tambahan tentang variabel yang tidak konstan, namun bisa jadi;
  • Akumulasi kesalahan dan kekurangan penganalisis telah diperbaiki.

Selain itu, pemeriksaan dari Misra C 2012, termasuk Amandemen 1 dan Amandemen 2, telah dilaksanakan sepenuhnya, kecuali aturan 1.1, 1.2 dan 17.3. Pemeriksaan 1.1 dan 1.2 harus dilakukan oleh kompiler. Verifikasi 17.3 dapat dilakukan oleh compiler seperti GCC.

Sumber: opennet.ru

Tambah komentar