เครื่องมือส่วนหน้าแบบง่ายที่สามารถเรียกใช้เครื่องมือวิเคราะห์แบบคงที่ต่าง ๆ โดยการอ่านข้อมูลที่ต้องการจาก compile_commands.json
ให้การจัดรูปแบบเอาต์พุตสำหรับการรวมเข้ากับเครื่องมืออื่น ๆ parallerization เมื่อจำเป็นความสามารถในการแทนที่/กำหนดค่าสถานะคอมไพเลอร์ใหม่และอื่น ๆ ตามข้อกำหนดของปลั๊กอิน "เครื่องมือ" ต่อ
การพัฒนาในปัจจุบันส่วนใหญ่ทำบน Windows แต่ควรทำงานบนแพลตฟอร์มใด ๆ ที่คุณมี Python สภาพแวดล้อมการพัฒนาการทำงานสำหรับโครงการและเครื่องวิเคราะห์ของคุณเอง คนที่สนับสนุนในปัจจุบัน:
โครงการมีให้ใน PYPI เป็นการกระจายแหล่งที่มา:
pip install processcdb
เนื่องจาก ProcessCDB จะติดตั้งการพึ่งพาเพียงเล็กน้อยโดยใช้ PIPX สำหรับการติดตั้ง
เมื่อติดตั้งแพ็คเกจแล้ว สร้างไฟล์กำหนดค่าด้วย:
processcdb --dump-config
สิ่งนี้จะสร้างไฟล์การกำหนดค่า Barebones ไปยังตำแหน่งเริ่มต้น (สามารถเขียนทับได้ในภายหลังด้วยอาร์กิวเมนต์ -config) แก้ไขไฟล์นี้เพื่อชี้ตัวเลือก "ไบนารี" สำหรับตัววิเคราะห์เหล่านั้นเพื่อชี้ไปที่การปฏิบัติการของพวกเขา บน Windows อย่าละเว้นนามสกุลไฟล์
ความช่วยเหลือขั้นพื้นฐาน:
processcdb --help
หลังจากกระบวนการสร้าง compile_commands.json คุณสามารถเรียกใช้ ProcessCDB ด้วยเครื่องมือที่เลือกเช่นนี้:
processcdb --tool clang-tidy
สิ่งนี้จะพยายามค้นหาไฟล์ JSON จากไดเรกทอรีการทำงานปัจจุบันและเรียกใช้เครื่องมือในกรณีนี้ Clang-Tidy เทียบกับไฟล์ทั้งหมดที่รวบรวมและไม่ขึ้นบัญชีดำในไฟล์ ProcessCDB Comfig หรือในไฟล์การกำหนดค่าเครื่องมือของเครื่องมือและสร้างเอาต์พุตไปยังเอาต์พุตมาตรฐาน หากคุณต้องการเรียกใช้เครื่องมือเมื่อคุณไม่สามารถเข้าถึงการเปลี่ยนไดเรกทอรีการทำงานปัจจุบันคุณสามารถผ่าน --cdb และตำแหน่งสัมบูรณ์:
processcdb --tool clang-tidy --cdb D:srcmyprojectbuildcompile_commands.json
หนึ่งสามารถนำเอาท์พุทเครื่องมือไปยังไฟล์ที่มีอาร์กิวเมนต์ --output เอาท์พุท น่าสังเกตว่าเครื่องมือบางอย่าง ( -t ) สามารถให้ข้อโต้แย้งเพิ่มเติมสำหรับการประมวลผลหลังการประมวลผลหรือวัตถุประสงค์เฉพาะของเครื่องมือ:
processcdb --tool clang-tidy --cdb ~/src/myproject/build/compile_commands.json --output scan.log --xml
หาก ProcessCDB ถูกเรียกใช้โดยไม่ผ่านอาร์กิวเมนต์ --config จะใช้ไฟล์กำหนดค่าเริ่มต้น ตำแหน่งขึ้นอยู่กับระบบปฏิบัติการ หากคุณต้องการวิเคราะห์หลายโครงการด้วยการตั้งค่าที่แตกต่างกันหรือคุณต้องการวิเคราะห์ด้วยสแกนเนอร์รุ่นที่แตกต่างกันให้ใช้ไฟล์การกำหนดค่าหลายไฟล์
ตัวอย่างเช่นหากคุณมี codebase thst ที่คุณต้องการสแกนด้วย clang 11.0.0 แต่โครงการของคุณถูกรวบรวมด้วย MSVC ของ Microsoft และคุณมีโครงการอื่นที่รวบรวมด้วย Clang: สร้างไฟล์กำหนดค่าแยกต่างหากสำหรับ MSVC และ Clang และเรียกใช้ ProcessCDB:
processcdb --tool clang-tidy --config location/to/config/msvc17_clang_interop.ini
หาก ProcessCDB ถูกเรียกใช้โดยไม่ผ่านอาร์กิวเมนต์ --config จะใช้ไฟล์กำหนดค่าเริ่มต้น ในการสร้างไฟล์กำหนดค่าให้ผ่าน --dump-config ไปยัง ProcessCDB หากต้องการบันทึกไฟล์กำหนดค่าเริ่มต้นไปยังไฟล์ ไม่ว่าจะจับเอาต์พุตมาตรฐานหรือพารามิเตอร์ --config
เครื่องมือแต่ละตัวมีส่วนแยกต่างหากและแต่ละส่วนสามารถกำหนดค่าได้ในส่วนเฉพาะเครื่องมือหรือในค่าเริ่มต้น น้อยที่สุด การกำหนดค่าเครื่องมือเดียวจะมีลักษณะเช่นนี้:
[clang-tidy]
binary=C:llvm-11.0.0binclang-tidy.exe
ที่นี่เรามีส่วนสำหรับเครื่องมือ Clang-Tidy ที่เรากำลังตั้งค่า binary ตัวแปรเป็นค่าของ c:llvm-11.0.0binclang-tidy.exe
โมดูล Python configparser ใช้สำหรับการโหลด/การแยกวิเคราะห์ของไฟล์
ตัวแปรต่อไปนี้ถูกแชร์ระหว่างเครื่องมือ:
binary - เส้นทางที่แน่นอนไปยังเครื่องสแกนfile_blacklist - รายการข้อมูลจำเพาะไฟล์ที่ควรละเว้นจากการสแกนarg_blacklist - รายการอาร์กิวเมนต์บรรทัดคำสั่งที่ส่งผ่านไปยังคอมไพเลอร์ที่ไม่ควรส่งผ่านไปยังเครื่องมือarg_additions - รายการของคู่คีย์/ค่า หากพบคีย์ใน JSON ค่าจะถูกวางลงในอาร์กิวเมนต์ของเครื่องมือjobs - ประมวลผลหมายเลขเริ่มต้นประมวลผลหรือเครื่องมือสามารถใช้ในการประมวลผล 0 สำหรับการตรวจจับอัตโนมัติdefault_includes - รายการเส้นทางที่ควรส่งผ่านไปยังเครื่องมือโดยอัตโนมัติรวมถึงเส้นทางที่อาจไม่ได้ระบุไว้ใน compile_commands.jsondefault_args - รายการอาร์กิวเมนต์ที่ควรส่งผ่านไปยังเครื่องมือที่ไม่ได้ให้โดย compile_commands.jsonincludes_as_system : รายการข้อมูลจำเพาะไฟล์ที่ควรแปลงจากปกติ -I รวมถึง -isystem รวมถึงแต่ละตัวเลือกการกำหนดค่าที่เป็นรายการและอนุญาตให้มีหลายค่าใช้เครื่องหมายอัฒภาคเป็นตัวคั่นรายการ
ด้วย arg_blacklist เราสามารถแยกอาร์กิวเมนต์บรรทัดคำสั่งที่ไม่จำเป็นออกไปและ arg_addition สามารถใช้ในการฉีดอาร์กิวเมนต์ใหม่ ตัวอย่างเช่นหากเปิดใช้งานโครงการใน MSVC และเปิดใช้งานข้อยกเว้นการกำหนดค่าต่อไปนี้จะอนุญาตให้เครื่องมือ Clang-Tidy ทำงานได้อย่างถูกต้อง:
[clang-tidy]
binary=C:llvm-11.0.0binclang-tidy.exe
arg_blacklist=EHsc
arg_additions=EHsc=-Xclang,-fcxx-exceptions
เป็นครั้งแรก ProcessCDB จะสังเกตเห็นว่า compile_commands.json อาจมีอาร์กิวเมนต์ /EHsc มันจะเพิ่ม 2 อาร์กิวเมนต์ใหม่ -Xclang และ '-fcxx-exceptions' จากนั้น arg_blacklist จะลบต้นฉบับ /EHsc
เครื่องมือ CPPCHECK ยังมีตัวเลือก supression_file ซึ่งหากจำเป็นควรเป็นตำแหน่งที่แน่นอนของไฟล์การปราบปราม CPPCHECKS
ความสามารถของ Clang-Tidy ToOool ในการแปลง LogFile เป็น XML สำหรับการสนับสนุนโดยตรงของ Jenkins เป็นส่วนหนึ่งของโครงการ CodeChecker และได้รับใบอนุญาตภายใต้ Apache 2.0
หน้าแรก: https://github.com/rasjani/processcdb ปัญหา: https://github.com/rasjani/processcdb/issues