我必须在java中构建一个程序切片器,以根据切片标准切片源代码。我看到为此目的有很少的图书馆。尽管如此,我想亲自尝试一下。我已经阅读了一些关于该主题的出版物,其中包括使用依赖图来计算数据并控制程序中的依赖关系。然后,切片算法可以与切片标准结合使用以生成java程序的切片。有没有人以前做过这种事情?如果是这样,你是否可能指出我正确的方向来开始这个?我搜索并搜索,无法弄清楚从哪里开始,存在哪些API(如果有的话)。
一个例子是:
public class Foo {
public void fooBar() {
int x = 10;
int y = 12;
String s = "";
for(int j=0; j<10; j++) {
s += x;
x++;
y += 3;
}
System.out.println("y value " + y);
}
}
如果选择切片标准(13,y),其中13是上面代码中的最后一行,那么结果将是
public class Foo {
public void fooBar() {
int y = 12;
for(int j=0; j<10; j++) {
y += 3;
}
}
}
切片标准返回可能影响第13行变量'y'的所有语句。
答案 0 :(得分:1)
这个领域的工作非常少。您可以重用某些开源实用程序的代码,例如checkstyle或yasca。然后,您可以将自己的实现逻辑应用于切片。
答案 1 :(得分:1)
迟到,但也许对其他人有用:Wala。 WALA包含一个切片器,基于系统依赖图中可达性的上下文敏感列表。