Ana Analyzer เป็นเครื่องมือวิเคราะห์ที่สามารถใช้ในการวิเคราะห์การรั่วไหลของหน่วยความจำ CPP (หรือมากกว่า?) และตรวจสอบคอลเลกชัน รวมถึงไลบรารีแนวคิดบางอย่างที่ใช้ C ++ 20 ตอนนี้มันขึ้นอยู่กับการวิเคราะห์แบบสแตติกของ Clang ฉันต้องการทำให้เป็นเครื่องวิเคราะห์แบบคงที่ที่สามารถใช้ในการวิเคราะห์ภาษาที่สร้างรหัสของพวกเขาเป็น LLVM IR และฉันจะใช้คุณสมบัติบางอย่างที่สามารถใช้ในการวิเคราะห์ภาษา (อัลกอริทึมทั้งหมดในการวิเคราะห์แบบคงที่หรือการวิเคราะห์โปรแกรม)

เป็นเวลานานวิธีการค้นหาช่องโหว่อย่างรวดเร็วและค้นหาข้อผิดพลาดที่อาจเกิดขึ้นในโปรแกรมเท่าที่เป็นไปได้เป็นปัญหาสำคัญในชุมชนวิทยาศาสตร์คอมพิวเตอร์ ปัญหานี้ยังได้รับการประเมินอย่างสูงจาก บริษัท ซอฟต์แวร์ระหว่างประเทศขนาดใหญ่ ในอุตสาหกรรมผู้คนมักใช้วิธีการตรวจจับที่แตกต่างกันเพื่อค้นหาข้อบกพร่องในซอฟต์แวร์และปรับปรุงคุณภาพของซอฟต์แวร์ แตกต่างจากวิธีการทดสอบแบบไดนามิกเรายังสามารถวิเคราะห์รหัสโปรแกรมโดยตรงโดยไม่ต้องเรียกใช้ซอฟต์แวร์และค้นหาข้อผิดพลาดบางอย่าง วิธีการประเภทนี้เรียกว่าการวิเคราะห์แบบคงที่ มันเป็นทิศทางการวิจัยที่สำคัญในด้านภาษาการเขียนโปรแกรมและการรวบรวมและวิศวกรรมซอฟต์แวร์ เครื่องมือการวิเคราะห์แบบคงที่ที่ได้รับการพัฒนาก่อนกำหนดเป็นที่รู้จักกันดีคือผ้าสำลีซึ่งส่วนใหญ่จะตรวจสอบปัญหาด้านความปลอดภัยในภาษา C ในช่วงไม่กี่ปีที่ผ่านมาเทคโนโลยีการวิเคราะห์แบบคงที่ได้รับความสนใจจากนักวิชาการในสาขาระบบปฏิบัติการและความปลอดภัยของข้อมูล ความหมายหลักบางอย่างที่เสนอโดยภาษาสนิมอาจเป็นการอ้างอิงถึงภาษาอื่น ๆ บทความนี้มุ่งเน้นไปที่การเพิ่มประสิทธิภาพความปลอดภัยของ C ++ และใช้เทคโนโลยีการวิเคราะห์แบบคงที่เพื่อวิเคราะห์ปัญหาหน่วยความจำของ C ++ อันตรายที่เกิดจากช่องโหว่ ฯลฯ สำหรับพอยน์เตอร์และปัญหาอื่น ๆ จะได้รับการแก้ปัญหาที่สอดคล้องกันและห้องสมุดตรวจสอบการยืมคล้ายกับสนิมสำหรับนักพัฒนา มีการตรวจสอบหลายอย่างโดยใช้เครื่องวิเคราะห์แบบคงที่ซึ่งมีข้อได้เปรียบมากกว่าเครื่องมือวิเคราะห์แบบคงที่ที่มีอยู่
ดาวน์โหลดรุ่นของฉัน แต่อย่าลืมใช้ LLVM@15 หรือสูงกว่า และเรียกใช้คำสั่ง
/path/to/install/clang++ -cc1 -load ANA.dylib
-analyze -analyzer-checker=ANA
foobar.cppคุณสามารถสร้างการพึ่งพาของคุณเองได้,
ใช้ conan หรือ vcpkg ติดตั้ง {fmt} และ Google หรือใช้ submodule git
ติดตั้ง LLVM@15 หรือสูงกว่า
ก่อนอื่นคุณต้องติดตั้งการพึ่งพาทั้งหมด จากนั้นคุณสามารถสร้าง
mkdir build
cd build
cmake .. -G Ninja # optional obviously
ninjaเราได้รับเป้าหมายต่อไปนี้
ClangPlugins
├── assign-or-float-compIn-branch-cond-checker
├── CMakeLists.txt
├── function-printer
├── sample-checker
└── simple-allocation-operators-checker
สร้างเครื่องวิเคราะห์ คุณต้องการ
เพียงแค่ดูตัวอย่างในไดเรกทอรีทดสอบ ./runalltest.sh
ติดตั้งการพึ่งพาต่อไปนี้ FD - คุณต้องติดตั้ง FD (https://github.com/sharkdp/fd) ก่อน
และเรียกใช้เกณฑ์มาตรฐานใน Utils