5

我正在尝试编写一个程序,它可以从 Eclipse 的“问题”视图中提取所有编译器错误(或其他错误的构建路径)。

我还没有找到任何关于如何做到这一点的文档。

4

1 回答 1

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>

当然,您也可以在 Java 中运行它以获得更好的控制。


使用 GUI 自动化来获取错误

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

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

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

重写 Eclipse 插件

最后,如果您真正需要的是某种对用户透明的错误消息的实时捕获,那么您将被困住。

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

于 2013-05-31T21:05:57.470 回答