论文部分内容阅读
程序分析评价技术在程序测试、程序维护以及信息领域的软件版权侵权等方面中都有着广泛的应用前景。但是目前的程序分析评价技术主要停留在比较程序输出结果的阶段,并不能发现那些在语义上有问题的程序的错误。现有的相关技术,例如程序理解技术大多是以人工的方式对程序进行分析,并且理解过程十分复杂,很容易出现信息丢失,前后不一致的情况,从而造成分析的困难。本课题正是针对此问题进行研究。
本课题结合编译器设计的相关技术和软件度量技术,采用源码-源码模板匹配方法,在结构层次上和语义层次上对程序进行分析评价,并且分析了程序分析评价技术在一些领域的应用前景。课题设计的具体过程是:使用ANTLR构造语言分析器,通过加入语义动作,结合SSA技术,获得表示程序结构的扩展控制流图,并应用传统软件度量方法对程序的结构进行分析度量。在语义层次上,使用编译器内联扩展等技术,进行语义保留的等价转换,并把SSA技术和PDG结合在一起生成程序表示图的表示形式,然后把程序表示图的各个节点划分到一个个可以比较的范围内,采用数据流一致和控制流一致的分析技术,分析出程序差异,确定差异的类型,并定位程序的错误位置;最后为了更加精确地确定程序的语义错误位置,提出语义错误度量规则,对程序中出现的语义错误进行度量,并给出语义错误的度量信息。
最后,本课题分别在程序结构层次上和语义层次上进行了实验分析,验证了本文所提出的分析方法能在结构层次上发现程序中潜在的错误,以及在语义层次上可以更加可靠地分析程序中存在的语义错误,并按照语义错误度量规则最大程度准确地定位了程序错误位置。