Получение сообщений Eclipse CDT от компилятора
Можем ли мы получить сообщения о проблемах компилятора Eclipse CDT (интерфейс Iproblem), как мы можем это сделать с JDT? Цель состоит в том, чтобы получить доступ к ним в автономном приложении Java.
CompilationUnit cu = …
Message[] messages = cu.getMessages();
IProblem[] problems = cu.getProblems();
Кажется, что есть некоторые классы Java в CDT API, которые были удалены в CDT 8.
1 ответ
Вот что я делаю в своем модульном тесте:
final IMarker[] markers = newProject.findMarkers(
ICModelMarker.C_MODEL_PROBLEM_MARKER, true, IResource.DEPTH_INFINITE);
Обратите внимание, что newProject может быть любым IResource - проектом, папкой или файлом. Вы можете попробовать ITranslationUnit::getUnderlyingResource, чтобы получить ресурс из модели CDT. Обратите внимание, что базовый ресурс может быть нулевым - например, когда файл в редакторе является внешним по отношению к рабочей области.
Обновление файлов не в рабочей области:
CDT запускает make внешне, а затем анализирует выходные данные для извлечения этих сообщений. В отличие от JDT, где используется компилятор Java, живущий в процессе Eclipse. Похоже, вам нужно создать собственный модуль запуска для make, захватить его вывод и затем каким-то образом использовать средства CDT для анализа вывода. Вы будете нести ответственность за создание маркеров ошибок (или за разработку другого способа хранения этой информации). Я не могу оценить, насколько сложно было бы передать пользовательский вывод через анализатор ошибок CDT...