ตัวตรวจสอบที่รวดเร็วและสกปรกซึ่งตรวจพบการวนซ้ำที่ไม่ได้ตัดสินใจเช่น
std::unordered_map<...> map;
for (auto [k, v] : map) {
...
}
std::map<Something *, ...> map;
for (auto [k, v] : map) {
...
}
คำเตือนจะถูกรายงานเฉพาะในกรณีที่ฟังก์ชั่นที่มีชื่อที่กำหนดไว้ล่วงหน้า (เช่น printf ) จะพบในลูป
ตัวชี้ของ CSA ไม่ได้รายงานการทำซ้ำแบบไม่ใช้งานไม่ผ่านคอนเทนเนอร์ของพอยน์เตอร์ที่สั่งซื้อ
ในการสร้างให้ติดตั้ง (บน Debian/Ubuntu) llvm , libclang-dev และ libpcre3-dev :
$ sudo apt-get install llvm libclang-dev libpcre3-dev
และวิ่ง
$ make clean all
ในการสร้างการดีบักหรือเวอร์ชันที่ถูกทำให้เป็น sanitized make กับ DEBUG=1 , ASAN=1 หรือ UBSAN=1
เรียกใช้ bin/find-flaky บนไฟล์ที่คุณสนใจ:
$ bin/find-flaky tests/3-unordered-map-notok.cc
find-flaky: warning: calling IO function 'printf' inside flaky loop
โดยเครื่องมือเริ่มต้นจะค้นหาฟังก์ชั่น IO ที่พบบ่อยที่สุด (เช่น printf ) แต่คุณมีรูปแบบของคุณเอง:
$ cat patterns.txt
# A useful comment
my_debug_fun
# Another one
other_fun
$ bin/find-flaky --patterns patterns.txt ...
การรวบรวมธงที่กำหนดเอง (โดยปกติ -D และ -I ) สามารถจัดหาได้ด้วยพารามิเตอร์ --cflags และคำกริยาสามารถตั้งค่าได้ด้วยการตั้งค่าสถานะ -v สำหรับตัวเลือกเพิ่มเติมเรียกใช้ bin/find-flaky -h
สร้างแล้วเรียกใช้
$ make test
Found no errors