以编程方式捕获Eclipse中的编译器错误

him*_*shu 5 java eclipse extract

我正在尝试编写一个程序,它可以从Eclipse的"Problems"视图中提取所有编译器错误(或其他诸如错误的构建路径).

我无法找到任何关于如何做到这一点的文档.

Nat*_*rot 4

我为您提供了三种可能的解决方案:

不要使用 Eclipse

这是最简单的方法。Eclipse 正在生成构建错误的可视化表示,而您想要一个结构化的表示,因此它们不匹配。

另一方面,如果您只是javac从命令行运行,则输出很容易捕获并且相对容易解析。如果您需要更精确地解析错误,请查看JavaCompiler在代码中运行并DiagnosticListener为其提供自定义。

如果捕获 Eclipse 编译器的一些细微差别很重要,您甚至可以从命令行运行它(以批处理模式)。这里有一篇很好的博客文章描述了该过程:ECJ - Eclipse Compiler for Java。这是简短的版本:在 Eclipse 发行版中找到 ECJ jar(我的位于plugins/org.eclipse.jdt.core_3.8.3.v20130121-145325.jar)并在命令行上运行它

java -jar <ecj.jar> <sourcefiles>
Run Code Online (Sandbox Code Playgroud)

当然,您也可以从 Java 内部运行它以进行更精细的控制。


使用 GUI 自动化来获取错误

这会很笨拙,但对于测试场景可能很有用,在这种情况下,您希望自动化测试人员验证 Eclipse 项目是否按照您期望的方式构建。

您可以使用 AutoHotKey 或 Sikuli 或 AWT Robot 等工具自动获取错误。我能想到的最简单的例程是这样的:

  1. 单击“问题”选项卡将其置于最前面
  2. 单击“错误”顶级节点,选择它
  3. 输入要复制的热键;所有错误将被复制到剪贴板中,每行一个
  4. 将剪贴板粘贴或转储到文件中
  5. 对于您想要捕获的任何其他类别(例如“警告”)重复 2-4

重写Eclipse插件

最后,如果您真正需要的是某种对用户透明的实时捕获错误消息,那么您就只能这么做了。

您需要进入 Eclipse 源代码,可能是“问题”视图的定义,并对其进行修改以传递您的代码信息。那么无论谁需要这个都必须使用您定制的 Eclipse 版本而不是标准版本。