Varsa, "C ++ Kod DOM" un ne olduğundan emin değilim. Önemli olan, MSVS'nin, MSVS IDE eylemlerini desteklemek için sembollerin anlamını ayrıştırmak ve belirlemek için EDG ön ucunu kullanmasıdır. EDG IIRC, programı temsil eden kendi dahili veri yapılarını oluşturur; Bu veri yapılarının "C ++ Kod DOM" olduğuna veya sizin tarafınızdan görülebildiğine veya MSDN'de bunlar hakkında bilgi edinebileceğinize inanmak için hiçbir nedenim yok.
Asıl probleminiz, C ++ kaynak kodunu analiz etmek istemenizdir. Kabul ediyorum, EDG ön uç bilgilerine sahip olmanın bunu yapmak için önemli bir yardım olacağını; Eğer gerçekten gerçekten kendi C ++ ayrıştırıcı yazma girişimi istemiyorum (ve "ayrıştırma sonra yaşama" benim kompozisyon google, ayrıştırma geçmiş sürü gerekir).
Yani şu seçeneklere sahipsiniz:
- MSVS'de EDG makinesine bir kapı bulun. Çok fazla şansınız olmadığından ve MS'den bunun mevcut olduğunu söyleyen hiçbir şey belgelenmediğinden, muhtemelen bu şekilde çok şansınız olmayacak. MS'in yerinde olsaydım, bunu halka açıklamazdım; bu sadece başka bir destek sorunudur ve onların bile olmayan bir yazılım parçası üzerinde.
- Doğrudan gelen ticari EDG ön uç kullanın EDG . Anladığım kadarıyla, ücretsiz olarak bireysel kullanım lisansları sunuyorlar. (Anladığım kadarıyla yanlış olabilir). Bu şekilde, EDG ön ucunu kendiniz yapılandırmak zorunda kalmanız pahasına, MS'in erişim üzerindeki kısıtlamalarını atlarsınız. Bir dezavantaj: EDG, bir analizörün ön ucu değil, bir derleyicinin ön ucu olmak ister. Bu ayrım ince görünebilir ama muhtemelen sizi ısırır. Örneğin, EDG'nin yorumları çöpe attığından şüpheleniyorum; derleyici ön uçları bunlara ihtiyaç duymaz. Analizörünüzdeki yorumları incelemek istiyorsanız, bu gerçek bir sorun olabilir.
- Clang kullanın . Bu, çok çeşitli program analizi amaçlarının yanı sıra bir C ++ derleyicisini ön uç için kullanmak üzere tasarlanmış açık kaynaklı bir C ++ ayrıştırıcısıdır. Bununla ilgili deneyimim yok, ancak oldukça iyi düşünülmüş görünüyor ve pek çok imkan sunuyor gibi görünüyor. C ++ MS lehçesi için özel bir desteği olup olmadığını bilmiyorum.
- Başka bir ticari ön uç kullanın, bizim (DMS) C ++ Ön Ucumuz. Bunun mimarı olarak, iyi düşünülmüş olduğundan oldukça eminim (MS Visual C ++ desteği dahil); karmaşık C ++ analizi ve dönüştürme görevlerini gerçekleştirmek için bunu kullanma konusunda belirli bir deneyim vardır. EDG'den farklı olarak, analizi, dönüşümü ve üretimi desteklemek için tasarlanmıştır (örneğin, yorumları ve hatta değişmez değerlerin tabanını yakalar, böylece doğru şekilde yeniden oluşturulabilirler). Temel, DMS, özel analizi desteklemek için yerleşik birçok makineye sahiptir: AST ve sembol tablosu yapımı, öznitelik gramerleri, veri akışı çerçeveleri, AST düzeyinde intraprosedural kontrol ve veri akışı analizi, BDD yönetimi, kaynak model eşleşmeleri, kaynaktan -kaynak dönüşümleri. Clang ve EDG, AST ve sembol tablosu yapısı sunar; Clang (ancak EDG'nin akış analizine sahip olduğunu sanmıyorum) (LLVM düzeyinde), ancak AST seviyesinde (AFAIK) akış analizi değil. Ne Clang ne de EDG kaynak kalıbı / dönüştürme yeteneği sunmaz, bu nedenle hangisi daha iyi uzun vadeli görevlerinize bağlıdır. Diğer seçeneklerle karşılaştırıldığında, C ++ ön ucumuz açık kaynaklı veya ücretsiz değildir; araştırma lisansları alınabilir.