我有一个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;
答案 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