Tôi không chắc "C ++ Code DOM" là gì, nếu nó thậm chí tồn tại. Điều quan trọng là MSVS đang sử dụng giao diện người dùng EDG để phân tích cú pháp và xác định ý nghĩa của các ký hiệu, nhằm hỗ trợ các hành động MSVS IDE. EDG IIRC xây dựng cấu trúc dữ liệu nội bộ của riêng mình đại diện cho chương trình; Tôi không có lý do gì để tin rằng các cấu trúc dữ liệu đó là "C ++ Code DOM", hoặc chúng hiển thị với bạn hoặc bạn có thể tìm hiểu về chúng tại MSDN.
Vấn đề thực sự đã nêu của bạn là bạn muốn phân tích mã nguồn C ++. Tôi đồng ý, có thông tin giao diện người dùng EDG sẽ là một trợ giúp đáng kể để làm điều đó; bạn thực sự không muốn cố gắng viết trình phân tích cú pháp C ++ của riêng mình (và bạn cần rất nhiều thứ trong quá trình phân tích cú pháp, hãy google bài luận của tôi về "cuộc sống sau khi phân tích cú pháp").
Vì vậy, bạn có những lựa chọn sau:
- Tìm một cánh cửa vào máy EDG trong MSVS. Vì bạn không gặp nhiều may mắn và dường như không có tài liệu nào từ MS nói rằng điều này là có sẵn, nên bạn có thể sẽ không gặp nhiều may mắn theo cách này. Nếu tôi ở trong vị trí của MS, tôi sẽ không công khai nó; nó sẽ chỉ là một vấn đề đau đầu về hỗ trợ khác, và trên một phần mềm thậm chí không phải của họ.
- Sử dụng giao diện người dùng EDG thương mại, trực tiếp từ EDG . Tôi hiểu là họ cung cấp giấy phép sử dụng cá nhân miễn phí. (Sự hiểu biết của tôi có thể sai). Bằng cách này, bạn bỏ qua bất kỳ hạn chế nào mà MS có thể có khi truy cập ... với cái giá là phải tự định cấu hình giao diện người dùng EDG. Nhược điểm: EDG muốn trở thành giao diện người dùng của một trình biên dịch, không phải là giao diện người dùng của một máy phân tích. Sự phân biệt đó có vẻ tinh vi nhưng nó có thể sẽ cắn bạn. Ví dụ, tôi nghi ngờ EDG ném bình luận đi; giao diện người dùng của trình biên dịch không cần chúng. Nếu bạn muốn kiểm tra các nhận xét trong máy phân tích của mình, đây có thể là một vấn đề thực sự.
- Sử dụng Clang . Đây là một trình phân tích cú pháp C ++ mã nguồn mở, được thiết kế để sử dụng cho nhiều mục đích phân tích chương trình cũng như cho phần cuối của trình biên dịch C ++. Tôi không có kinh nghiệm về việc này, nhưng có vẻ như nó đã được suy nghĩ khá kỹ và dường như cung cấp rất nhiều tiện ích. Tôi không biết liệu nó có hỗ trợ cụ thể cho phương ngữ MS của C ++ hay không.
- Sử dụng giao diện người dùng thương mại khác, Giao diện người dùng C ++ (DMS) của chúng tôi. Là kiến trúc sư của điều này, tôi khá chắc chắn rằng nó đã được suy nghĩ kỹ càng (bao gồm hỗ trợ cho MS Visual C ++); có kinh nghiệm cụ thể về việc sử dụng nó để thực hiện các nhiệm vụ phân tích và chuyển đổi C ++ phức tạp. Không giống như EDG, nó được thiết kế để hỗ trợ phân tích, chuyển đổi và tạo (ví dụ: nó ghi lại các nhận xét và thậm chí cả cơ số của các ký tự để chúng có thể được tạo lại một cách chính xác). Nền tảng, DMS, có rất nhiều máy móc được tích hợp để hỗ trợ phân tích tùy chỉnh: AST và xây dựng bảng ký hiệu, ngữ pháp thuộc tính, khung luồng dữ liệu, kiểm soát nội bộ và phân tích luồng dữ liệu ở cấp độ AST, quản lý BDD, khớp mẫu nguồn, nguồn-to -các phép biến đổi nguồn. Clang và EDG cung cấp AST và xây dựng bảng biểu tượng; Clang (nhưng tôi không nghĩ EDG) có phân tích luồng (ở cấp độ LLVM), nhưng không phân tích dòng chảy ở cấp độ AST (AFAIK). Cả Clang và EDG đều không cung cấp khả năng chuyển đổi / mẫu nguồn, vì vậy loại nào tốt hơn phụ thuộc vào các nhiệm vụ dài hạn của bạn. So với các tùy chọn khác, giao diện người dùng C ++ của chúng tôi không phải là mã nguồn mở hoặc miễn phí; người ta có thể nhận được giấy phép nghiên cứu.