Получение сообщений 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...

Другие вопросы по тегам