有哪些程序切片工具可用?

16

我刚被介绍了"程序切片"这个术语。这种功能的需求很明显,但它是否存在于任何地方呢?

这个术语现在已经有20年了,我看到有很多出版物、研究论文等等。但实际的工具在哪里呢?人们真正在实践中应用这个概念吗,还是只是学术上研究?

有什么研究成果,可以针对哪些编程语言?

编辑:我想要的是关于程序切片特别面向并且维护一份工具/技术列表的出版物/组织等的参考资料,我会将其评为被接受的答案。

4个回答

10

[编辑](针对OP修改后的问题)

我已经跟踪了文献很长一段时间。 我认为没有一个“程序切片”中心有您想要的列表。 大多数已构建的程序切片器都是某种类型的大学实验(意味着它们在生产中不起作用,不能用于实际目的)。 您可以通过使用术语“program slicing”在scholar.google.com上搜索来了解它们; 我猜你已经知道这一点。 我认为您已经拥有了“大佬”。

这项调查有些过时,但由杰出的研究人员完成:http://www.cse.buffalo.edu/LRG/CSE605/Papers/slicing-survey-tip.pdf。 这个更近期:http://dl.acm.org/citation.cfm?id=1050865

CodeSurfer 是一款用于对C程序进行静态切片的商业工具。 我相信它们还处理C ++。 与其他工具不可用的重要优点是可以交互式地探索代码切片的UI。

Indus 是用于在Java上进行静态代码切片的大学研究工具。 我不确定这是否仍在积极开发中。

似乎有许多大学构建的“动态”Java程序切片工具。 据我所知,它们中没有一个处于积极开发或使用中。

我们公司提供DMS软件重新工程工具包,其中包含用于程序控制和数据流分析的通用机器,包括构建自定义静态代码切片器。 DMS已被用于构建大型C程序以及工业过程控制程序的片段。(我会提供链接,但是似乎SO人民讨厌我这样做)。


6

2
请查看Giri
动态程序切片是一种技术,可以精确定位哪些指令在单次执行程序时影响了特定的值。Giri 在LLVM编译器中实现了动态向后切片。
这个项目最初由UIUC的Swarup Kumar Sahoo、John Criswell和Vikram S. Adve博士开发。它被谷歌2013年暑期编程Marathon (GSoC) 选为LLVM的Umbrella项目之一。2013年6月,来自清华大学的Mingliang Liu加入Giri的改进工作。这是一个正在进行的项目,非常欢迎Pull requests。

1
请查看Java的Wala, WALA包含一个基于系统依赖图的上下文敏感可达性制表法的切片器。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接