论文部分内容阅读
随着软件产业的迅速发展,软件系统的规模和和结构日益复杂,人们对于软件产品的质量要求也越来越高。基于代码的审查技术和测试技术是常见的软件质量保障技术。代码审查过程的核心活动是发现并定位不符合编码规范的代码片断。测试过程中广泛运用的插桩技术的关键步骤之一是查找与定位满足特定条件的插桩点。代码查询技术是用于满足上述两种技术需求的基本支撑技术,它可以根据指定的语法结构规则和语义关系规则在代码库中查询对应的程序片断和信息。代码查询语言的设计与解析是代码查询技术的核心,查询语言的表达能力即它对查询请求的描述能力决定了代码查询技术的查询能力。针对代码审查和代码测试技术,已有的代码查询技术关于查询条件的描述能力存在以下两点不足:1)对逻辑语义的表达能力不足2)可以描述的程序元素信息的粒度不够细。针对这两个问题,本文提出了支持一阶谓词逻辑的代码查询技术。其主要研究工作包括:1、提出了一套基于一阶谓词逻辑的查询语言。它支持对类、方法、语句和变量这四个层次的程序元素信息的描述。在逻辑表达能力上,它允许通过一阶谓词逻辑对简单条件进行逻辑组合。2、设计了程序元素信息的一种中间表示结构。它用来对通过静态分析抽取的代码语义和语法信息进行存储。3、设计并实现了支持该查询语言的查询引擎。它负责解析查询语言和检索目标元素。4、基于此查询技术,面向C/C++语言,开发了一个原型工具C2Query,并以Eclipse插件的形式发布。以MISRA-C++编码规范为研究对象,通过实例研究,验证了查询技术和工具的效能。