我们能否像使用 JDT 一样检索 Eclipse CDT 编译器问题消息(Iproblem 接口)?目的是在独立的 Java 应用程序中访问它们。
CompilationUnit cu = …
Message[] messages = cu.getMessages();
IProblem[] problems = cu.getProblems();
似乎 CDT API 中的一些 Java 类已在 CDT 8 中删除。
我们能否像使用 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 然后解析输出以提取这些消息。它与使用 Eclipse 进程中的 Java 编译器的 JDT 不同。看起来您需要为 make 创建一个自定义启动器,捕获其输出,然后以某种方式使用 CDT 工具来解析输出。您将负责生成错误标记(或设计一些其他方式来保存该信息)。我无法估计通过 CDT 错误解析器传递自定义输出有多难......