我们可以像JDT一样检索Eclipse CDT编译器问题消息(Iproblem接口)吗?目的是在独立的Java应用程序中访问它们。
CompilationUnit cu = …
Message[] messages = cu.getMessages();
IProblem[] problems = cu.getProblems();
似乎CDT API中有一些Java类已在CDT 8中删除。
答案 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错误解析器传递自定义输出有多难......