daikon用户手册

http://plse.cs.washington.edu/daikon/download/doc/daikon.html

1 引言

Daikon是对可能的不变量的动态检测的实现;也就是说,Daikon不变量检测器报告可能的程序不变量。不变量是指在程序中的某一点或几点保持的属性;这些属性经常出现在断言语句、文档和正式规范中。不变量在程序理解和其他许多应用中都很有用。例子包括’x.field > abs(y)’;‘y = 2*x+3’;‘数组a被排序’;对于所有列表对象lst,‘lst.next.prev = lst’;对于所有treenode对象n,‘n.left.value < n.right.value’;‘p != null => p.content in myArray’;还有很多。你可以扩展Daikon以添加新的属性(参见增强Daikon输出,或参见Daikon开发者手册中的新不变式)。

动态不变式检测运行一个程序,观察程序计算的值,然后报告在观察到的执行过程中为真的属性。Daikon可以检测C、C++、C#、Eiffel、F#、Java、Perl和Visual Basic程序中的属性;电子表格文件;以及其他数据源中的属性。(动态不变量检测是一种机器学习技术,可以应用于任意数据)。将Daikon扩展到其他应用程序也很容易。

Daikon可以从download-site免费下载。Daikon的许可证允许不受限制的使用(见许可证)。该版本包括源代码(也可在GitHub上获得)和文档,许多研究人员和从业人员已经使用了Daikon;这些使用和Daikon本身在各种出版物中都有描述。

关于Daikon的更多信息,请参见Daikon开发者手册中的介绍。例如,Daikon开发者手册指出了如何获得Daikon的源代码,以及如何用新的不变量、新的派生变量和新语言的前端来扩展Daikon。它还包含关于实现和调试标志的信息。

2 安装Daikon

不耐烦的人的捷径:直接跳到安装说明。

安装Daikon的主要方法是从发布的版本开始,如本节所解释。(另外,请参阅Daikon开发者手册中的源代码(版本控制库),从其版本控制库中获取最新的Daikon源代码)。下面是步骤的概述。

下载Daikon。
在你的shell初始化文件中放置两条命令。
可选地,定制你的安装。
编译Daikon并构建其他工具。(这是可选的,但经常需要)。
细节出现在下面;选择适合你的操作系统的说明。

与以前版本的Daikon的不同之处出现在发行版中的doc/CHANGELOG.md文件中。为了得到新版本的通知,或者加入关于Daikon的讨论,请订阅其中一个邮件列表(见邮件列表)。

2.1 运行Daikon的要求

为了运行Daikon,你必须有一个Java 8(或更高版本)的JDK,包括一个Java虚拟机和一个Java编译器。

如果你想分析C或C++程序,或者你想编辑Daikon源代码并重新编译Daikon,请参阅Daikon开发者手册中的编译Daikon。

Daikon支持Unix环境,包括Linux、Mac OS X和Windows Subsystem for Linux(WSL)。它不被支持在Windows或Cygwin上。

2.2 Installation

3 Java、C/C++、C#/F#/Visual Basic、Perl和Eiffel的使用实例

检测不变量包括两个步骤。

通过在记录变量值信息的前端(也称为仪器或跟踪器)的控制下运行你的程序,获得一个或多个数据跟踪文件。你可以在你自己选择的一个或多个输入上运行你的程序,如回归测试或一个典型的用户输入会话。你可以选择只为你的程序的一部分获取跟踪数据;这可以避免让你淹没在输出中,也可以提高性能。
在数据跟踪文件上运行Daikon不变量检测器(见运行Daikon)。这将检测出记录信息中的不变量。你可以以文本方式查看不变量,或者用各种工具处理它们。
本节简要介绍了如何获得Java、C、C#、Perl和Eiffel程序的数据跟踪,以及如何运行Daikon。关于这些和其他可用于Daikon的前端的详细信息,见前端(仪器)。

3.1 检测Java程序中的不变量

为了检测Java程序中的不变量,你将运行该程序两次——一次使用DynComp(见DynComp for Java)创建一个**.decls文件**,一次使用Chicory(见Chicory)创建一个数据跟踪文件。然后,在数据跟踪文件上运行Daikon来检测不变量。使用Chicory的–daikon选项,一条命令就能完成最后两个步骤。

例如,如果你通常运行

java -cp myclasspath mypackage.MyClass arg1 arg2 arg3

那么你可以运行这两条命令。

java -cp myclasspath:$DAIKONDIR/daikon.jar daikon.DynComp mypackage.MyClass arg1 arg2 arg3
java -cp myclasspath:$DAIKONDIR/daikon.jar daikon.Chicory --daikon \
                    --comparability-file=MyClass.decls-DynComp \
                    mypackage.MyClass arg1 arg2 arg3

然后Daikon的输出被写入终端。

3.1.1 StackAr 示例

Daikon发行版包含一些样本程序,这些程序将帮助你获得运行Daikon的实践。

要在StackAr示例程序中检测不变量,请在安装Daikon后执行以下步骤(参见安装Daikon)。
1.用-g开关

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值