论文部分内容阅读
美国国防部高级研究计划局于2014年提出MUSE计划,研究如何在大规模开源代码库上挖掘深层次的规范和协议并指导开发人员完成软件领域的复杂工作。编程逻辑的挖掘作为其中的一项关键技术逐渐成为国内外学者的研究热点。本课题以开源代码为研究对象,针对人类编程过程存在的普遍规则和个性化习惯,研究面向对象类开源代码编程逻辑建模与应用,挖掘人类编程的潜在逻辑和规则,为漏洞挖掘技术、预测编程行为、修复和构建复杂软件提供基础性支持。全文主要工作如下:1.对编程逻辑的概念进行了阐述,分析了研究编程逻辑的相关问题,在此基础上提出一种了面向对象类开源代码编程逻辑的研究框架,明确了各个研究内容之间的联系,为编程逻辑的研究奠定了基础。2.针对面向对象开源代码的复杂结构给编程逻辑分析建模带来困难的问题,提出一种面向对象语言代码分析方法,在以对象为分类标准、以方法调用序列为基本结构的基础上,融合别名归并和程序结构分析策略,尽可能保留程序原有语法结构信息,将源代码转化为统一范式的数据形式,为编程逻辑的研究奠定数据基础。3.针对现有适用于大规模数据的代码模型没有充分利用代码的语法、结构信息,对开发人员编程思维逻辑的描述存在局限性的问题,创新性提出方法的约束关系这一概念,并基于此概念,提出一种基于方法约束关系的面向对象代码编程逻辑模型CPMMC。利用对象涉及到的方法序列来构建模型结构,通过描述同一序列中不同方法之间的约束关系来抽象开发人员的思维方式。为了验证模型能够体现开发人员的编程逻辑,我们将模型应用于Java语言方法的预测。实验表明,该模型对Java代码有着良好的预测能力,较现有的模型提高了8%的准确率。4.针对现有的基于文本分析的代码缺陷检测方法存在数据稀疏、跨程序检测效果不佳等问题,提出基于CPMMC的面向对象代码缺陷检测方法。用编程逻辑取代单纯的文本分析,降低了因不同编程风格对检测性能的影响;通过假设检验思想计算不同特征对代码缺陷的贡献值并实现特征向量的降维;基于支持向量机构建分类器,实现对代码缺陷的检测。本文利用部分带有标签的Android应用程序对所提出的方法进行了评估,结果表明所提出的方法与现有的方法相比,对跨程序的代码缺陷检测效果有着明显的提高。