2011-06-04 61 views
7

我必须在java中构建一个程序切片器,以根据切片标准切片源代码。我看到为此目的有很少的图书馆。尽管如此,我想亲自尝试一下。我已阅读了关于该主题的一些出版物,其中包括使用依赖关系图来计算程序中的数据和控制依赖关系。然后可以使用切片算法结合切片准则来生成Java程序的切片。有没有人做过这种类型的事情?如果是这样,你能否指出我在正确的方向开始呢?我搜索和搜索,无法确定从哪里开始,哪些API存在(如果有的话)。有没有人在Java中构建过程切片器?

一个例子是:

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)被choosen,其中图13是在上面的代码中的最后一行,那么结果将是

public class Foo { 
    public void fooBar() { 
     int y = 12; 
     for(int j=0; j<10; j++) { 
     y += 3; 
     } 
    } 
} 

切片标准返回所有可能影响第13行变量'y'的语句。

+0

你有没有参考现有的商业或自由程序切片机?我不知道你想要软件做什么。也许一些源代码手动切片的例子? – Marcelo 2011-06-04 18:28:58

+2

什么是Java程序的“切片”? – 2011-06-04 18:29:23

+2

我看着梧桐(http://indus.projects.cis.ksu.edu)。 @Jon,在这里看到程序切片(http://en.wikipedia.org/wiki/Program_slicing) – Joeblackdev 2011-06-04 18:42:25

回答

1

在这方面的工作量非常少。您可以重新使用一些开源实用程序的代码,如checkstyleyasca。然后,您可以将自己的实施逻辑应用于切片。

1

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

相关问题