Je ne pense pas que clang peut analyser progressivement les fichiers C++, mais il est l'un de ces objectifs du projet: http://clang.llvm.org/features.html
J'ai écrit quelque chose de similaire pour mon projet de fin d'année. Ce n'était pas un éditeur C++, mais un plugin Visual Studio, dont la tâche principale consistait à améliorer C++ intellisense (comme Visual Assist X). Lorsque j'écrivais ce projet, je pensais aussi à l'analyseur incrémental C++, mais je n'ai trouvé aucune solution appropriée. Pour résoudre le problème C++ IntelliSense, j'ai utilisé l'analyseur C++ normal de GCC. Cependant, il fallait ralentir, pour analyser le fichier après chaque requête d'achèvement de code (ctrl + espace), essayez simplement d'inclure boost :: spirit. Pour que ce projet fonctionne correctement, j'ai analysé les fichiers en arrière-plan et après chaque demande d'achèvement de code, j'ai comparé le fichier actuel avec sa version précédente (via diff) pour détecter les changements effectués lors de la dernière analyse. Ayant ces changements, j'ai mis à jour l'arbre de syntaxe, principalement en ajoutant ou en supprimant des variables. Excepté l'analyse incrémentielle, il existe également un autre problème avec des projets comme celui-ci.
La plupart du temps, vous allez analyser du code C++ qui est en cours de modification, c'est donc un code invalide. Étant donné la grammaire C++ complexe, parfois l'analyseur ne pourra pas récupérer à partir d'erreurs de syntaxe, il ne détectera donc pas correctement certains symboles dans le code.
Un autre problème concerne les différences entre les analyseurs C++/compilateurs. Disons que je travaille avec Visual Studio et que j'ai utilisé une construction spécifique au compilateur VC++ dans mon code. Clang parser ne sera pas capable de l'analyser correctement.
Quelqu'un veut faire un clone Visual Studio [pour détecter les erreurs avant la compilation] :) – Earlz
Projet intéressant. J'ai attendu un moment pour quelqu'un d'écrire un IDE basé sur Clang. Si vous construisez un IDE complet, pensez à utiliser CMake comme fichier de système/projet de construction. – Tronic
Peut-être que libclang's ['clang_reparseTranslationUnit()'] (http://clang.llvm.org/doxygen/group__CINDEX__TRANSLATION__UNIT.html#ga524e76bf2a809d037934d4be51ea448a) peut répondre à vos besoins? – bames53