ITIVITI-CPP-Analyzer (หรือ ICA) เป็นปลั๊กอิน Clang ซึ่งนำการตรวจสอบการวิเคราะห์แบบคงที่หลายครั้ง (แสดงไว้ที่นี่)
หากคุณต้องการมีส่วนร่วมในโครงการดูที่การสนับสนุน
คุณต้องมีเสียงดังและ cmake เพื่อสร้างปลั๊กอิน นอกจากนี้คุณยังต้องใช้แพ็คเกจ libclang-10-dev และ libclang-cpp10-dev ทางเลือกคุณอาจต้องเพิ่มส่วนหัว 1.68+ (สามารถดาวน์โหลดได้ในระหว่างการสร้างแทน)
ปัจจุบัน ICA ทำงานกับ clang-10 เท่านั้น
[ ! -d build ] && mkdir build
cd build
cmake
-DGCC_TOOLCHAIN= < path/to/gcc/toolchain (probably, /usr/lib) >
-DBOOST_FROM_INTERNET=ON
-DTARGET_COMPILER=clang++-10
../
cmake --build . --parallelBOOST_FROM_INTERNET เป็นสิ่งจำเป็นเฉพาะในกรณีที่คุณยังไม่ได้เพิ่มส่วนหัวBOOST_ROOT แทนได้TARGET_COMPILER เป็นคอมไพเลอร์ที่ใช้สำหรับการทดสอบ ระบุว่าคุณไม่ได้ใช้ clang-10 สำหรับการรวบรวม ปลั๊กอินที่สร้างขึ้นจะอยู่ใน ./build/libica-plugin.so
คุณต้องการ libica-plugin.so และ clang-10
รายการตรวจสอบที่คั่นด้วยเครื่องหมายจุลภาคที่มีระดับ EMIT ที่ระบุตัวเลือก
ชื่อตรวจสอบอยู่ที่นี่ นามแฝงในรายการเช็คทั้งหมด - all
ระดับปล่อย:
none - ตรวจสอบถูกปิดใช้งานwarn - เริ่มต้นerrตัวอย่าง:
all=warn,-redundant-noexcept,erase-in-loop=err
จะเปิดใช้งานการตรวจสอบ all ที่มีระดับการเตือนปิดใช้งาน redundant-noexcept และกำหนดระดับข้อผิดพลาดสำหรับการตรวจสอบ erase-in-loop
คุณต้องการธงเพิ่มเติม:
-load path/to/libica-plugin.so-add-plugin ica-plugin-plugin-arg-ica-plugin checks=$CHECKS-plugin-arg-ica-plugin no-url เลือกปิดใช้งานการรวม URL ลงในข้อความตรวจสอบ CHECKS คือรายการตรวจสอบ
ทุกอาร์กิวเมนต์สำหรับคอมไพเลอร์ส่วนหน้าถูกส่งผ่านไปด้วย -Xclang ดังนั้นรายการสุดท้ายจึงดูเหมือนว่า:
-Xclang -load -Xclang ../build/libica-plugin.so
-Xclang -add-plugin -Xclang ica-plugin
-Xclang -plugin-arg-ica-plugin -Xclang checks=$CHECKS
หากคุณมีโครงการ CMake มีตัวเลือกให้ใช้ ICA ได้อย่างง่ายดายไม่ว่าจะเป็นโครงการภายนอกหรือไดเรกทอรีย่อยในพื้นที่ทำงานของคุณ ไม่ว่าในกรณีใดผู้ช่วย CMake หลายคนควรพร้อมใช้งาน:
add_ica_checks(check1 check2 ...) - โหลดปลั๊กอินและเปิดใช้งานการตรวจสอบที่ระบุ คุณสามารถใช้ระดับการปล่อยออกมาได้ที่นี่ตามปกติica_no_url() - ปิดใช้งานการรวม URL ลงในข้อความตรวจสอบ การเรียกใช้ target_ica_checks(MyTarget VISIBILITY ...) หรือ target_ica_no_url(MyTarget VISIBILITY) จะใช้การกำหนดค่ากับเป้าหมายเดียวและ/หรือการพึ่งพา
นี่คือตัวอย่างการรวมขั้นต่ำบางส่วน:
ก่อนอื่นคุณต้องให้ ICA ของคุณสร้าง (ดู) และติดตั้ง:
cd build && cmake --install . --install-prefix /path/to/ica/installation/และเพิ่มสิ่งนี้ลงใน cmakelists.txt ของคุณ
# NOTE: `find_package` should be located after root `project(...)`
project (<your project> LANGUAGES C CXX)
...
# If ICA is installed in unusual location
list ( APPEND CMAKE_PREFIX_PATH "/path/to/ica/installation" )
find_package (ICA CONFIG REQUIRED)
add_ica_checks(<your checks list>)
...
# NOTE: Added checks will be effective only for subsequent targets
add_subdirectory (my-subdir)
add_library (my-lib)
add_executable (my-exec)เพิ่มแหล่ง ICA เป็นไดเรกทอรีย่อยในโครงการของคุณ (อาจผ่าน Git Submodule ) และเพิ่มสิ่งนี้ลงใน cmakelists.txt ของคุณ
# NOTE: `add_subdirectory` should be located after root `project(...)`
project (<your project> LANGUAGES C CXX)
...
# Set any other cache variables here: GCC_TOOLCHAIN, LLVM_ROOT, ...
set (BOOST_FROM_INTERNET ON )
add_subdirectory (itiviti-cpp-analyzer)
add_ica_checks(<your checks list>)
...
# NOTE: Added checks will be effective only for subsequent targets
add_subdirectory (my-subdir)
add_library (my-lib)
add_executable (my-exec) // NOLINT ความคิดเห็นจะระงับคำเตือนใด ๆ ในบรรทัด
map.emplace( 0 , std::string{}); // NOLINTEmplace-Default-Value Check จะถูกระงับที่นี่