0

我们能否像使用 JDT 一样检索 Eclipse CDT 编译器问题消息(Iproblem 接口)?目的是在独立的 Java 应用程序中访问它们。

CompilationUnit cu = …
Message[]  messages =  cu.getMessages();
IProblem[] problems = cu.getProblems();

似乎 CDT API 中的一些 Java 类已在 CDT 8 中删除。

4

1 回答 1

0

这就是我在单元测试中所做的:

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 错误解析器传递自定义输出有多难......

于 2013-05-03T20:21:59.517 回答