1

我有一个 java 文件,我想获取对特定行的结果有影响的所有行(反向切片生成)。我知道解决方案,但是否有任何 java 代码可以做到这一点?

例如考虑以下代码:

System.out.println("Start")
Random r = new Random();
int i = r.nextInt(10);
int n = 0;
if(i<8)
{
    n = 1;
    System.out.println("In if");
}
int j = n * i;

当我为第 10 行运行它时,需要一个找到以下行的代码:

Random r = new Random();
int i = r.nextInt(10);
int n = 0;
if(i<8)
{
    n = 1;
}
int j = n * i;
4

1 回答 1

2

似乎讨论理论方法的学术论文多于实际实现。(特别是在 Java 中)

您可以尝试以下选项之一:

分析单线程程序:

来自 hammacher ( @github ) 的Java 切片器。据我记得,在您从程序中创建跟踪后,它会为您提供一个 java 字节码切片。

另请查看IBM Wala Slicer

分析多线程程序:

问题是复杂性上升,尤其是在分析多线程程序时。我认为目前唯一支持这一点的是Indus项目。他们还提供了一个名为Kaveri的 Eclipse 插件,但您必须在 Eclipse 3.1.2 中使用它

但是,您的代码必须符合Java 2(J2SE 1.4.2)。请参阅Java 支持

于 2014-09-04T17:54:00.787 回答