从编译器检索Eclipse CDT消息

时间:2013-05-02 19:16:18

标签: eclipse compiler-construction message eclipse-cdt

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

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

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

1 个答案:

答案 0 :(得分: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错误解析器传递自定义输出有多难......