有没有人用Java构建程序切片器?

时间:2011-06-04 18:25:47

标签: java slice

我必须在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'的所有语句。

2 个答案:

答案 0 :(得分:1)

这个领域的工作非常少。您可以重用某些开源实用程序的代码,例如checkstyleyasca。然后,您可以将自己的实现逻辑应用于切片。

答案 1 :(得分:1)

迟到,但也许对其他人有用:Wala。 WALA包含一个切片器,基于系统依赖图中可达性的上下文敏感列表。