
Stoat เป็นเครื่องมือในการยืนยันคุณสมบัติเกี่ยวกับ CallGraph ของโปรแกรม/ห้องสมุด การใช้งานหลักของเครื่องมือนี้คือการวิเคราะห์โปรแกรมที่จำเป็นต้องดำเนินการเรียลไทม์อย่างหนักในส่วนของรหัสเบสผสม สิ่งนี้ทำได้โดยการระบุฟังก์ชั่นทั้งหมดที่สามารถเรียกได้จากฟังก์ชั่นรูทที่รู้จักซึ่งต้องเป็นแบบเรียลไทม์ หากฟังก์ชั่นที่ไม่ปลอดภัยใด ๆ ที่สามารถปิดกั้นระยะเวลาตามอำเภอใจในการปิดสกรรมกริยานี้จะมีการปล่อยข้อผิดพลาดเพื่อระบุว่าพฤติกรรมที่ไม่เหมาะสมสามารถพบได้และสิ่งที่ backtrace รับผิดชอบ
การบำรุงรักษารหัสฐานขนาดใหญ่ใน C/C ++ สามารถทำให้ยากที่จะรู้ว่ารหัสใดที่เรียกว่ากิจวัตรอื่น ๆ สิ่งนี้มีความซับซ้อนมากขึ้นเมื่อมีการแยกบางอย่างภายในหนึ่ง codebase ซึ่งอาจไม่ชัดเจนในการใช้งาน สิ่งนี้มีความซับซ้อนมากขึ้นโดยการใช้เทคนิค C ++ บางอย่างเช่นการโอเวอร์โหลดเสมือนจริงการโอเวอร์โหลดโอเปอเรเตอร์การสืบทอดหลายครั้งและการแปลงโดยนัย
LLVM 3.3+
เสียงดัง 3.3+
C ++ filt
ทับทิม
graphviz gem (ไม่บังคับ) สำหรับการเรนเดอร์ callgraph
Colorize Gem (เสริม) สำหรับเอาต์พุตสี
git clone https://github.com/fundamental/stoat && cd stoat
mkdir build && cd build
cmake .. && make && make test
make install # or just run in placeเครื่องหมายความปลอดภัยแบบอินไลน์ __attribute __ ((คำอธิบายประกอบ ("เรียลไทม์"))))
เครื่องหมายอันตรายแบบอินไลน์ __attribute __ ((คำอธิบายประกอบ ("ไม่ใช่การจริง")))))))))
ผู้ทำรายการ/บัญชีดำนอกบรรทัด
ไฟล์ปราบปรามนอกบรรทัด
ความสามารถของกราฟสำหรับกราฟที่ปลอดภัยหรือขัดแย้ง
สนับสนุนการวิเคราะห์ต้นไม้ส่งภายใน Librtosc
หมายเหตุประกอบฟังก์ชั่นรูทเรียลไทม์ด้วย __attribute __ ((คำอธิบายประกอบ ("เรียลไทม์")))))
รวบรวมไฟล์ทั้งหมดด้วย cc = stoat comx cxx = stoat compile ++ หรือเพียงแค่รวบรวมไฟล์ด้วยธง -emit-llvm ของ Clang
เรียกใช้ stoat บนไฟล์ LLVM IR ที่ได้โดยใช้ตัวเลือก -ตัวเลือก -ซ้ำ
ดูความขัดแย้ง
เลือกการวิเคราะห์ซ้ำโดยใช้ตัวเลือก -G เพื่อดูความขัดแย้งแบบกราฟิก
อัปเดตโค้ดของคุณรายการ whitelist หรือการปราบปราม
เพลิดเพลินกับรหัสที่ปลอดภัยยิ่งขึ้น
สำหรับคู่มือที่ชัดเจนยิ่งขึ้นโปรดดูบทช่วยสอนที่ http://log.fundamental-code.com/2014/08/15/stoat-tutorial-example.html
Stoat มีอยู่ภายใต้ใบอนุญาต GPLV3