
Stoat adalah alat untuk menegaskan properti tentang callgraph program/perpustakaan. Penggunaan utama dari alat ini adalah untuk menganalisis program yang perlu melakukan operasi realtime yang keras di sebagian dari basis kode campuran. Ini dilakukan dengan mengidentifikasi semua fungsi yang dapat secara transitif dipanggil dari beberapa fungsi root yang diketahui yang harus realtime. Jika ada fungsi yang tidak aman yang dapat memblokir untuk jumlah waktu yang sewenang -wenang ditemukan dalam penutupan transitif ini, maka kesalahan dipancarkan untuk menunjukkan di mana perilaku yang tidak tepat dapat ditemukan dan backtrace apa yang bertanggung jawab untuk dipanggil.
Mempertahankan basis kode besar dalam C/C ++ dapat membuat sangat sulit untuk mengetahui kode apa yang akhirnya menyebut rutinitas apa lagi. Ini lebih rumit ketika ada beberapa pemisahan dalam satu basis kode yang mungkin sama sekali tidak jelas dalam implementasi. Ini semakin rumit oleh ketidaknyamanan beberapa teknik C ++, seperti kelebihan beban virtual, kelebihan muatan operator, warisan berganda, dan konversi implisit.
LLVM 3.3+
Dentang 3.3+
C ++ Filt
rubi
Graphviz Gem (opsional) untuk rendering callgraph
Kewarisan permata (opsional) untuk output berwarna
git clone https://github.com/fundamental/stoat && cd stoat
mkdir build && cd build
cmake .. && make && make test
make install # or just run in placePenanda Keselamatan Inline __Attribute __ ((Annotate ("Realtime")))
Penanda Bahaya Baris __attribut __ ((annotate ("non-realtime"))))
Daftar putih/daftar hitam di luar garis
File penindasan di luar garis
Kemampuan grafik untuk grafik yang aman atau bertentangan
Dukungan untuk Analisis Pohon Pengiriman di Librtosc
Annotate Fungsi realtime root dengan __attribute __ ((annotate ("realtime")))))
Kompilasi semua file dengan cc = stoat-kompil CXX = stoat-compile ++ atau hanya mengkompilasi file dengan flag clang -emit-llvm
Jalankan stoat pada file IR LLVM yang dihasilkan menggunakan opsi -Recursive
Lihat kontradiksi
Opsional ulang analisis menggunakan opsi -g untuk secara grafis melihat kontradiksi
Perbarui kode Anda, daftar putih, atau daftar penindasan
Nikmati kode yang lebih aman
Untuk panduan yang lebih eksplisit, silakan lihat tutorial di http://log.fundamental-code.com/2014/08/15/stoat-tutorial-example.html
Stoat tersedia di bawah lisensi GPLV3