为java文件生成向后切片

时间:2014-08-13 08:36:37

标签: java program-slicing

我有一个java文件,我希望获得对特定行结果产生影响的所有行(Backward Slice Generation)。我知道解决方案但是有没有java代码可以做到这一点?

作为示例cosider以下代码:

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;

1 个答案:

答案 0 :(得分:1)

似乎有更多的学术论文在讨论理论方法,而不是实际的实施。 (特别是在Java中)

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

分析单线程序:

来自hammacher的

Java Slicer @github )。据我所知,在您从程序中创建跟踪后,它会为您提供一个java字节码切片。

另请参阅 IBM Wala Slicer

分析多线程程序:

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

但是,您的代码必须符合 Java 2(J2SE 1.4.2)。见Java Support