โครงการนี้รวมถึงเครื่องมือและรายการเพื่อหาธงคำเตือนทั้งหมดที่ Clang Compiler และ GNU Compiler Collection มีสำหรับภาษาครอบครัว C (C, C ++ และ Objective-C) นอกจากนี้ยังแสดงนามแฝงและธงเตือนทั้งหมดว่าธงบางตัวเปิดใช้งาน (นำหน้าด้วยตัวละคร "#") เพื่อให้คุณสามารถดูได้อย่างง่ายดายว่าธงใดที่เปิดใช้งานโดยสิ่งที่ นอกจากนี้ยังมีธงคำเตือนที่ไม่ทำอะไรเพื่อความเข้ากันได้หรือเหตุผลที่คัดค้าน พวกเขาถูกต่อท้ายด้วยข้อความ "# dummy switch"
จุดประสงค์ของคอลเลกชันเหล่านี้คือการใช้เครื่องมือวิเคราะห์รหัสแบบคงที่ที่คอมไพเลอร์ให้ง่ายขึ้น
Clang รวมถึง -Weverything
ธงทุกขั้นตอนที่ไม่ได้แสดงในรายการเหล่านี้ซึ่งช่วยให้คำเตือนทั้งหมด เอกสารเสียงดังก้องให้การอ้างอิงสำหรับธงการวินิจฉัยบางส่วนใน Clang
หากคุณต้องการรายการตัวเลือกการเตือน GCC แบบเต็มสำหรับ GCC รุ่นเฉพาะที่คุณมีคุณสามารถเรียกใช้ GCC ด้วย gcc --help=warnings
เพื่อรับรายการนั้น มิฉะนั้นรายการตัวเลือกการเตือน GCC ธรรมดาบางรายการจะมีอยู่ด้านล่าง:
กรณีการใช้งานหนึ่งรายการสำหรับรายการประเภทนี้คือการดูความแตกต่างระหว่างคอมไพเลอร์และเวอร์ชันคอมไพเลอร์ที่แตกต่างกัน ฉันได้ให้ความแตกต่างของธงคอมไพเลอร์พื้นฐานระหว่างสองเวอร์ชันคอมไพเลอร์ที่ตามมาเป็นไฟล์ diff-files แต่สำหรับความแตกต่างที่เฉพาะเจาะจงมากขึ้นคุณต้องใช้โปรแกรม diff (ภาพ) บางส่วนดังที่แสดงด้านล่าง:
สิ่งนี้ใช้ ANTLR เป็นเครื่องสร้างโปรแกรมแยกวิเคราะห์ด้วยรหัส Python ที่รองรับเพื่อแยกวิเคราะห์ธงคำเตือนจากไฟล์ข้อมูลตัวเลือกคอมไพเลอร์จริง ข้อกำหนดอื่น ๆ กำลังดำเนินการตาม (รวมถึงการพึ่งพา):
หลังจากที่คุณได้ติดตั้งข้อกำหนดทั้งหมดและสามารถเรียกใช้ ANTLR ด้วยคำสั่ง antlr4
เพียงใช้คำสั่งต่อไปนี้ใน parsers/
ไดเรกทอรีเพื่อสร้างรายการเหล่านี้ด้วยตัวเอง:
ninja
./parse-clang-diagnostic-groups.py <path-to-clang-source>/include/clang/Basic/DiagnosticGroups.td
./parse-gcc-warning-options.py <path-to-gcc-source>/gcc/{common.opt,c-family/c.opt}
และคุณจะได้รับรายชื่อธงเตือนรายบุคคลทั้งหมดและการอ้างอิงที่อยู่ในเวอร์ชันคอมไพเลอร์ที่ร้องขอ
ในการสร้างรายการที่ผ่านการกรองคุณสามารถใช้สวิตช์ --top-level
และ --unique
--top-level
ไม่รวมคำเตือนที่เปิดใช้งานโดยสวิตช์อื่น ๆ ในรายการ--unique
แสดงคำเตือนทั้งหมดโดยไม่มีข้อมูลใด ๆ ที่คำเตือนอื่น ๆ เปิดใช้งาน diffs ในหน้านี้ถูกสร้างขึ้นจากไฟล์เหล่านี้ มีการทดสอบหน่วยการทดสอบฟังก์ชันการทำงานระดับต่ำ คุณอาจใช้เวลากับคำสั่ง ninja test
ใน parsers/
ไดเรกทอรีเพื่อตรวจสอบว่าการทดสอบหน่วยผ่าน
เมื่อ Parser ได้รับการเปลี่ยนแปลงที่มีผลต่อการจัดรูปแบบหรือผลลัพธ์อื่น ๆ สำหรับหลาย ๆ ไฟล์รายการคำเตือนเหล่านี้จะต้องมีการสร้างใหม่ มี process-clang-git.sh
และ process-gcc-git.sh
สคริปต์ที่ใช้รูทที่เก็บ Git เป็นพารามิเตอร์แรกของพวกเขาและใช้ตัวแปรที่แตกต่างกันทั้งหมดของคำสั่งเหล่านี้เพื่อสร้างไฟล์ข้อความสุดท้าย