2012-07-23 59 views
1

我目前正在为一个lombok.ast树开发一个Abstracty语法树访问器,该树应该在给定的OutputStream对象中打印为纯文本,我的AST结构。用于测试AST访问者的Java源代码

为了加快调试阶段,是否有任何已经包含大部分(如果不是全部)Java构造的测试代码? 有这么多的特殊情况和奇怪的,不寻常的(但仍然可能)的事情,它甚至很容易忘记其中许多。

它并不一定被认为是一个测试用例,任何具有很多复杂性和多样性的源代码就足够了。

在此先感谢任何人。

编辑:有没有人知道是否有办法了解什么时候访问lombok.ast结束?

+1

openJDK可能包含Java解析的测试用例。 – 2012-07-23 12:15:04

+0

好主意,谢谢 – Alex 2012-07-26 09:53:36

回答

0

你应该看看sources of the openJDK(搜索jdk7/test)。

使用访问者模式时,很难知道访问何时结束。当第一次找到父节点时,您会被调用,但是在所有子节点都被访问后不会再次调用。

通常的解决方案是在访问节点时收集信息,然后在所有节点访问完毕后查看收集到的信息并进行实际处理。

+0

这就是我想要做的,问题是我的访问者被Android Lint工具找到的每个CompilationUnit节点(简称为每个Java源文件)所调用,并且他们没有参考任何父母或兄弟姐妹,所以我无法找到一种方法来了解在这个CompilationUnit节点之后是否会有另一个节点 – Alex 2012-07-26 20:41:42

+0

您可以在访问者中设置一个全局变量并检查它是否为非空值。如果是这样,那么在这次访问之前有一个。这解决了除上次访问之外的所有问题。或者您可以获取lint工具的来源并修补它们。 – 2012-07-27 09:36:43