Ana Analyzer adalah alat analisis yang dapat digunakan untuk menganalisis kebocoran memori CPP (atau lebih?). Dan memeriksa koleksi. Termasuk beberapa pustaka konsep yang menggunakan C ++ 20. Sekarang didasarkan pada penganalisa clang statis, saya ingin menjadikannya penganalisa statis yang dapat digunakan untuk menganalisis bahasa yang menghasilkan kode mereka ke LLVM IR. Dan saya akan menerapkan beberapa fitur yang dapat digunakan untuk menganalisis bahasa. (Semua algoritma dalam analisis statis atau analisis program)

Untuk waktu yang lama, cara dengan cepat menemukan celah dan menemukan berbagai kesalahan potensial dalam program sejauh mungkin telah menjadi masalah penting dalam komunitas ilmu komputer. Masalah ini juga sangat dihargai oleh perusahaan perangkat lunak internasional besar. Dalam industri, orang sering menggunakan metode deteksi yang berbeda untuk menemukan bug dalam perangkat lunak dan meningkatkan kualitas perangkat lunak. Berbeda dari metode pengujian dinamis, kami juga dapat secara langsung menganalisis kode program tanpa menjalankan perangkat lunak dan menemukan beberapa kesalahan. Metode semacam ini disebut analisis statis. Ini adalah arah penelitian yang penting di bidang bahasa pemrograman dan kompilasi dan rekayasa perangkat lunak. Alat analisis statis awal yang relatif terkenal adalah Lint, yang terutama memeriksa masalah keamanan dalam bahasa C. Dalam beberapa tahun terakhir, teknologi analisis statis secara bertahap menarik perhatian para sarjana di bidang sistem operasi dan keamanan informasi. Beberapa semantik inti yang diusulkan oleh bahasa karat juga dapat sebagai referensi ke bahasa lain. Makalah ini berfokus pada peningkatan keamanan C ++ dan menggunakan teknologi analisis statis untuk menganalisis masalah memori C ++. Kerusakan yang disebabkan oleh kerentanan, dll., Untuk pointer dan masalah lainnya, solusi yang sesuai diberikan, dan pustaka cek pinjaman yang mirip dengan karat disediakan untuk pengembang. Beberapa pemeriksaan diimplementasikan berdasarkan penganalisa clang statis, yang memiliki keunggulan dibandingkan alat analisis statis yang ada.
Unduh rilis saya tetapi ingat untuk menggunakan llvm@15 atau lebih tinggi. dan jalankan perintah.
/path/to/install/clang++ -cc1 -load ANA.dylib
-analyze -analyzer-checker=ANA
foobar.cppAnda dapat membuat ketergantungan Anda sendiri,
Gunakan conan atau vcpkg instal {fmt} dan google, atau gunakan submodule git
instal llvm@15 atau lebih tinggi
Pertama, Anda perlu menginstal semua dependensi. Dan kemudian, Anda bisa membangun.
mkdir build
cd build
cmake .. -G Ninja # optional obviously
ninjaKami mendapatkan target berikut.
ClangPlugins
├── assign-or-float-compIn-branch-cond-checker
├── CMakeLists.txt
├── function-printer
├── sample-checker
└── simple-allocation-operators-checker
Bangun penganalisa. Anda ingin.
Sederhana saja lihat contoh di direktori tes. ./runalltest.sh
Instal dependensi berikut. FD - Anda harus menginstal FD (https://github.com/sharkdp/fd) terlebih dahulu
dan jalankan patokan di utils.