ฉันไม่แน่ใจว่า "C ++ Code DOM" คืออะไรถ้ายังมีอยู่ สิ่งที่สำคัญคือ MSVS ใช้ส่วนหน้า EDG เพื่อแยกวิเคราะห์และกำหนดความหมายของสัญลักษณ์เพื่อสนับสนุนการดำเนินการ MSVS IDE EDG IIRC สร้างโครงสร้างข้อมูลภายในของตนเองซึ่งเป็นตัวแทนของโปรแกรม ฉันไม่มีเหตุผลที่จะเชื่อว่าโครงสร้างข้อมูลเหล่านั้นเป็น "C ++ Code DOM" หรือว่าคุณสามารถมองเห็นได้หรือคุณสามารถหาข้อมูลเกี่ยวกับโครงสร้างเหล่านี้ได้ที่ MSDN
ปัญหาที่ระบุไว้จริงของคุณคือคุณต้องการวิเคราะห์ซอร์สโค้ด C ++ ฉันเห็นด้วยการมีข้อมูลส่วนหน้าของ EDG จะเป็นตัวช่วยที่สำคัญในการทำเช่นนั้น คุณจริงๆ จริงๆไม่ต้องการที่จะพยายามที่จะเขียน C ++ ของคุณเอง parser (และคุณต้องการจำนวนมากของสิ่งที่ผ่านมาแยก, google เรียงความของฉันเกี่ยวกับ "ชีวิตหลังแยก")
ดังนั้นคุณจึงมีทางเลือกดังต่อไปนี้:
- ค้นหาประตูสู่เครื่องจักร EDG ใน MSVS เนื่องจากคุณไม่มีโชคมากนักและดูเหมือนจะไม่มีเอกสารใด ๆ จาก MS ที่บอกว่ามีให้ใช้งานคุณอาจไม่มีโชคมากนักด้วยวิธีนี้ ถ้าฉันอยู่ในรองเท้าของ MS ฉันจะไม่เปิดเผยต่อสาธารณะ มันจะเป็นอีกเรื่องที่น่าปวดหัวในการสนับสนุนและซอฟต์แวร์ที่ไม่ใช่ของพวกเขา
- ใช้ส่วนหน้า EDG เชิงพาณิชย์โดยตรงจากEDG EDGความเข้าใจของฉันคือพวกเขาเสนอใบอนุญาตการใช้งานส่วนบุคคลโดยไม่มีค่าใช้จ่าย (ความเข้าใจของฉันอาจผิด). ด้วยวิธีนี้คุณจะข้ามข้อ จำกัด ใด ๆ ที่ MS อาจมีในการเข้าถึง ... ในราคาที่ต้องกำหนดค่าส่วนหน้า EDG ด้วยตัวคุณเอง ข้อเสีย: EDG ต้องการเป็นส่วนหน้าของคอมไพเลอร์ไม่ใช่ส่วนหน้าของเครื่องวิเคราะห์ ความแตกต่างนั้นอาจดูบอบบาง แต่มันอาจจะกัดคุณ ตัวอย่างเช่นฉันสงสัยว่า EDG แสดงความคิดเห็นออกไป ส่วนหน้าของคอมไพเลอร์ไม่จำเป็นต้องใช้ หากคุณต้องการตรวจสอบความคิดเห็นในเครื่องวิเคราะห์ของคุณนี่อาจเป็นปัญหาที่แท้จริง
- ใช้เสียงดัง นี่คือตัวแยกวิเคราะห์ C ++ แบบโอเพนซอร์สซึ่งออกแบบมาเพื่อใช้สำหรับวัตถุประสงค์ในการวิเคราะห์โปรแกรมที่หลากหลายรวมทั้งสำหรับส่วนหน้าของคอมไพเลอร์ C ++ ฉันไม่มีประสบการณ์เกี่ยวกับเรื่องนี้ แต่ดูเหมือนว่าจะค่อนข้างดีและดูเหมือนจะมีสิ่งอำนวยความสะดวกมากมาย ฉันไม่ทราบว่ามีการสนับสนุนเฉพาะสำหรับภาษา MS ของ C ++ หรือไม่
- ใช้ส่วนหน้าเชิงพาณิชย์อื่น(DMS) C ++ Front End ของเรา. ในฐานะสถาปนิกนี้ฉันค่อนข้างมั่นใจว่ามีการคิดมาอย่างดี (รวมถึงการรองรับ MS Visual C ++) มีประสบการณ์เฉพาะในการใช้สิ่งนี้เพื่อดำเนินการวิเคราะห์ C ++ ที่ซับซ้อนและงานแปลงร่าง แตกต่างจาก EDG คือได้รับการออกแบบมาเพื่อรองรับการวิเคราะห์การเปลี่ยนแปลงและการสร้าง (เช่นบันทึกความคิดเห็นและแม้แต่รัศมีของตัวอักษรเพื่อให้สามารถสร้างใหม่ได้อย่างถูกต้อง) พื้นฐาน DMS มีเครื่องจักรจำนวนมากในตัวเพื่อรองรับการวิเคราะห์แบบกำหนดเอง: AST และการสร้างตารางสัญลักษณ์ไวยากรณ์แอตทริบิวต์กรอบการไหลของข้อมูลการควบคุมภายในและการวิเคราะห์การไหลของข้อมูลในระดับ AST การจัดการ BDD การจับคู่รูปแบบต้นทางแหล่งที่มา การแปลงแหล่งที่มา Clang และ EDG นำเสนอ AST และการสร้างตารางสัญลักษณ์ เสียงดัง (แต่ฉันไม่คิดว่า EDG) มีการวิเคราะห์การไหล (ที่ระดับ LLVM) แต่ไม่ใช่การวิเคราะห์การไหลที่ระดับ AST (AFAIK) ทั้ง Clang และ EDG ไม่ได้นำเสนอรูปแบบแหล่งที่มา / ความสามารถในการแปลงดังนั้นสิ่งที่ดีกว่าขึ้นอยู่กับงานระยะยาวของคุณ เมื่อเทียบกับตัวเลือกอื่น ๆ ส่วนหน้า C ++ ของเราไม่ใช่โอเพ่นซอร์สหรือฟรี สามารถรับใบอนุญาตการวิจัย