我们可以像使用 JDT 一样检索 Eclipse CDT 编译器问题消息(Iproblem 接口)吗?目的是在独立的 Java 应用程序中访问它们。
CompilationUnit cu = …
Message[] messages = cu.getMessages();
IProblem[] problems = cu.getProblems();
CDT API 中似乎有一些 Java 类已在 CDT 8 中删除。
这就是我在单元测试中所做的:
final IMarker[] markers = newProject.findMarkers(
ICModelMarker.C_MODEL_PROBLEM_MARKER, true, IResource.DEPTH_INFINITE);
请注意,newProject 可以是任何 IResource - 项目、文件夹或文件。您可以尝试 ITranslationUnit::getUnderlyingResource 从 CDT 模型获取资源。请注意,底层资源可能为空 - 例如当编辑器中的文件位于工作区外部时。
非工作空间文件更新:
CDT 在外部运行 make,然后解析输出以提取这些消息。它与 JDT 不同,JDT 使用驻留在 Eclipse 进程中的 Java 编译器。看起来您需要的是为 make 创建一个自定义启动器,捕获其输出,然后以某种方式使用 CDT 工具来解析输出。您将负责生成错误标记(或设计一些其他方式来保存该信息)。我无法估计通过 CDT 错误解析器传递自定义输出有多困难......