การเปิดตัว cppcheck 2.6 ซึ่งเป็นตัววิเคราะห์โค้ดแบบคงที่สำหรับภาษา C++ และ C

เวอร์ชันใหม่ของเครื่องวิเคราะห์โค้ดแบบคงที่ cppcheck 2.6 เปิดตัวแล้ว ซึ่งช่วยให้คุณระบุข้อผิดพลาดประเภทต่างๆ ในโค้ดในภาษา C และ C++ รวมถึงเมื่อใช้ไวยากรณ์ที่ไม่ได้มาตรฐาน ซึ่งเป็นเรื่องปกติสำหรับระบบฝังตัว มีการจัดเตรียมชุดปลั๊กอินที่ cppcheck บูรณาการเข้ากับการพัฒนาต่างๆ ระบบบูรณาการและการทดสอบอย่างต่อเนื่อง และยังให้คุณสมบัติต่างๆ เช่น การตรวจสอบความสอดคล้องของโค้ดกับรูปแบบโค้ด หากต้องการแยกวิเคราะห์โค้ด คุณสามารถใช้ตัวแยกวิเคราะห์ของคุณเองหรือตัวแยกวิเคราะห์ภายนอกจาก Clang นอกจากนี้ยังมีสคริปต์ donate-cpu.py เพื่อจัดหาทรัพยากรในท้องถิ่นเพื่อทำงานตรวจสอบโค้ดร่วมกันสำหรับแพ็คเกจ Debian ซอร์สโค้ดของโครงการได้รับการเผยแพร่ภายใต้ใบอนุญาต GPLv3

การพัฒนา cppcheck มุ่งเน้นไปที่การระบุปัญหาที่เกี่ยวข้องกับพฤติกรรมที่ไม่ได้กำหนด และการใช้การออกแบบที่เป็นอันตรายจากมุมมองด้านความปลอดภัย เป้าหมายคือการลดผลบวกลวงให้เหลือน้อยที่สุด ในบรรดาปัญหาที่ระบุ: ตัวชี้ไปยังวัตถุที่ไม่มีอยู่จริง, การหารด้วยศูนย์, จำนวนเต็มล้น, การดำเนินการกะบิตที่ไม่ถูกต้อง, การแปลงที่ไม่ถูกต้อง, ปัญหาเมื่อทำงานกับหน่วยความจำ, การใช้ STL ไม่ถูกต้อง, การยกเลิกการอ้างอิงตัวชี้ null, การใช้การตรวจสอบหลังจากการเข้าถึงจริง ไปยังบัฟเฟอร์, บัฟเฟอร์โอเวอร์รัน, การใช้ตัวแปรที่ไม่ได้กำหนดค่าเริ่มต้น

ในเวอร์ชันใหม่:

  • มีการเพิ่มการตรวจสอบต่อไปนี้ในแกนเครื่องวิเคราะห์:
    • ไม่มีตัวดำเนินการส่งคืนในเนื้อหาของฟังก์ชัน
    • บันทึกข้อมูลที่ทับซ้อนกัน กำหนดพฤติกรรมที่ไม่ได้กำหนด
    • ค่าที่เปรียบเทียบอยู่นอกค่าที่เป็นตัวแทนประเภท
    • การเพิ่มประสิทธิภาพการคัดลอกใช้ไม่ได้กับ return std::move(local);
    • ไม่สามารถเปิดไฟล์พร้อมกันสำหรับการอ่านและเขียนในสตรีม (สตรีม) ที่แตกต่างกัน
  • สำหรับแพลตฟอร์ม Unix เพิ่มการรองรับสำหรับการแสดงข้อความวินิจฉัยในสีที่ต่างกัน
  • เพิ่มการวิเคราะห์เชิงสัญลักษณ์สำหรับ ValueFlow ใช้เดลต้าแบบง่ายเมื่อคำนวณความแตกต่างระหว่างตัวแปรที่ไม่รู้จักสองตัว
  • กฎที่ใช้สำหรับรายการโทเค็น "define" สามารถจับคู่ #include ได้เช่นกัน
  • แท็กไลบรารี ขณะนี้สามารถมีแท็ก และฟังก์ชันอิสระตามลำดับ ซึ่งสามารถยอมรับคอนเทนเนอร์ได้ เช่น std::size, std::empty, std::begin, std::end เป็นต้น สามารถระบุตะโกนหรือการกระทำสำหรับตัวเชื่อมต่อ
  • แท็กไลบรารี สามารถมีแท็ก สำหรับตัวชี้อัจฉริยะที่มีความเป็นเจ้าของเฉพาะได้ ขณะนี้มีการออกคำเตือนเกี่ยวกับการอ้างอิงแบบห้อยต่อตัวชี้อัจฉริยะประเภทนี้
  • แก้ไขปัญหาเกี่ยวกับการประมวลผลพารามิเตอร์ —cppcheck-build-dir
  • htmlreport สามารถแสดงข้อมูลเกี่ยวกับผู้เขียนได้แล้ว (โดยใช้ gitblazer)
  • คำเตือนเพิ่มเติมเกี่ยวกับตัวแปรที่ไม่คงที่ แต่อาจเป็นได้
  • ข้อผิดพลาดและข้อบกพร่องสะสมของเครื่องวิเคราะห์ได้รับการแก้ไขแล้ว

นอกจากนี้ การตรวจสอบจาก Misra C 2012 รวมถึงการแก้ไข 1 และการแก้ไข 2 ได้ถูกนำไปใช้อย่างสมบูรณ์ ยกเว้นกฎ 1.1, 1.2 และ 17.3 คอมไพลเลอร์จะต้องดำเนินการตรวจสอบ 1.1 และ 1.2 การตรวจสอบ 17.3 สามารถทำได้โดยคอมไพลเลอร์ เช่น GCC

ที่มา: opennet.ru

เพิ่มความคิดเห็น