!! การปฏิเสธความรับผิด !! ฉันทำงานกับเครื่องมือวิเคราะห์แบบคงที่เชิงพาณิชย์ (ไม่ใช่ PC Lint) !! การปฏิเสธความรับผิด !!
มีปัญหาหลายประการเกี่ยวกับวิธีการไม่แยกวิเคราะห์ง่ายๆ:
1) ชุดโอเวอร์โหลด:
เป็นไปได้ว่าฟังก์ชันที่โอเวอร์โหลดมีการประกาศที่มาจากไฟล์ต่างกัน อาจเป็นไปได้ว่าการลบไฟล์ส่วนหัวหนึ่งไฟล์ส่งผลให้มีการเลือกโอเวอร์โหลดต่างกันแทนที่จะเป็นข้อผิดพลาดในการคอมไพล์! ผลลัพธ์ที่ได้จะเป็นการเปลี่ยนแปลงความหมายอย่างเงียบ ๆ ซึ่งอาจเป็นเรื่องยากมากที่จะติดตามในภายหลัง
2) ความเชี่ยวชาญของเทมเพลต:
เช่นเดียวกับตัวอย่างการโอเวอร์โหลดหากคุณมีความเชี่ยวชาญเฉพาะบางส่วนหรืออย่างชัดเจนสำหรับเทมเพลตคุณต้องการให้ทุกอย่างสามารถมองเห็นได้เมื่อใช้เทมเพลต อาจเป็นไปได้ว่าความเชี่ยวชาญพิเศษสำหรับเทมเพลตหลักอยู่ในไฟล์ส่วนหัวที่แตกต่างกัน การลบส่วนหัวด้วยความเชี่ยวชาญพิเศษจะไม่ทำให้เกิดข้อผิดพลาดในการคอมไพล์ แต่อาจส่งผลให้เกิดลักษณะการทำงานที่ไม่ได้กำหนดไว้หากจะเลือกความเชี่ยวชาญนั้น (ดู: การมองเห็นความเชี่ยวชาญพิเศษของเทมเพลตของฟังก์ชัน C ++ )
ตามที่ระบุโดย 'msalters' การวิเคราะห์โค้ดทั้งหมดยังช่วยให้สามารถวิเคราะห์การใช้คลาสได้ ด้วยการตรวจสอบวิธีการใช้คลาสผ่านพา ธ เฉพาะของไฟล์เป็นไปได้ว่าคำจำกัดความของคลาส (และดังนั้นการอ้างอิงทั้งหมด) สามารถลบออกได้ทั้งหมดหรืออย่างน้อยก็ย้ายไปยังระดับที่ใกล้กับซอร์สหลักในการรวม ต้นไม้.