Python程序缺陷的自动检测与定位技术

来源 :南京大学 | 被引量 : 0次 | 上传用户:hofox
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
随着互联网技术的高速发展以及大数据时代的来临,动态编程语言受到越来越广泛的关注。Python作为一种典型的动态编程语言,它语法简练、编写灵活且有庞大的类库支撑,已成为了最受欢迎和最广泛使用的编程语言之一。与传统C和Java等静态语言程序一样,Python程序在正确性和可靠性保障方面也面临着各式各样的挑战。程序分析技术是保障软件正确性和可靠性的重要手段。早前,由于静态程序语言在工业应用中占主流地位,大多程序分析技术的研究主要集中于C/C++、Java等静态语言上,针对诸如Python等动态语言的分析技术却还在初级阶段。Python中灵活的特性给程序的维护带来了巨大的挑战,很多传统分析方法已经不适用于分析Python程序。为此,研究适用于Python程序的分析技术来保障Python程序正确性和可靠性是一项十分紧急且重要的工作。本文围绕如何自动化检测和定位Python程序缺陷展开研究。首先,本文关注的是Python程序的类型推导和检查问题。类型缺陷是Python程序中最为常见的缺陷种类之一。类型缺陷的检测需要精确且高效的类型推导技术作为基础保障。目前,针对Python及其他动态类型语言已有很多类型推导方法,但是这些方法大多基于程序数据流来推导类型。然而,Python程序中存在大量外部函数调用使得分析时很难获取完整数据流,导致现有推导方法大多准确率不高且容易失败。为此,本文的第一项工作是研究新的类型推导方法来提高推导的准确度和成功率。接着,本文尝试将问题扩展,进一步研究用于自动化检测Python程序缺陷的通用技术。符号分析是解决该类问题的关键技术之一,然而已有符号分析技术大多针对静态语言,不支持Python中的类型和属性集动态变化等特性,很难直接用于分析Python程序。为此,本文的第二项工作是研究一种适用于Python程序的符号分析方法来自动化检测Python程序中的缺陷并生成相应的测试用例。最后,在检测出程序中存在缺陷基础上,研究如何自动化快速定位缺陷来辅助程序调试。现有缺陷定位和自动调试技术大多需要许多正确的执行作为调试预言,然而这在实际调试过程经常不能满足。当前,仅利用单个执行的调试技术还不具备类似人类一样的智能推理能力,因而时常需要很多的人工反馈来辅助缺陷定位。为此,本文的第三项工作是将类似人类智能推理和传统机器推理相结合来提高定位的准确性,从而减少调试中人工审查的次数。本文的主要工作及贡献总结如下:(1)针对Python类型推导和检查问题,本文提出了一种基于概率分析的类型推导方法,该方法将程序语义和变量命名中包含的类型提示统一表示为概率约束,通过概率分析进行类型推导,有效地解决了因数据流不完整而引起的类型推导不精确及失败问题。为了验证方法有效性,我们实现了一个原型工具并用它来推导18个知名Python开源项目中的变量。实验结果表明,该方法能成功推导出79.09%传统方法推导不出的变量类型,并且精度达到82.86%。(2)针对Python程序缺陷检测及测试用例生成问题,本文提出了一种基于符号预测分析的缺陷检测方法,该方法将一个正确执行的执行轨迹以及其附近未执行分支的代码编码成符号约束,利用约束求解来预测程序其他执行状态中隐含的缺陷并生成相应的测试用例,有效地解决了现有方法难以处理Python中诸多动态特性及大量外部函数调用的问题。为了验证方法的有效性,我们实现了一个原型工具并用它来检测11个知名Python开源项目中的缺陷。实验结果表明,该方法能从这些项目中检测出46个缺陷,且其中16个是尚未报告的错误。经人工核实,实验中所有检测出的缺陷都是真实的。(3)针对单个执行的Python程序缺陷定位问题,本文提出了一种基于概率推导的缺陷定位方法,该方法利用概率约束将来自人类域知识、类似人类推理规则以及程序语义规则相结合,将整个程序缺陷定位过程建模为不断的概率推导过程,显著减少了基于单个执行的缺陷定位方法所需要的人工反馈次数。为了验证方法的有效性,我们实现了一个原型工具并用它来辅助调试一系列实际程序中的缺陷。实验结果表明,该方法只需要平均3到5次的人工审查便可精确定位导致缺陷的根本原因。进一步的用户调研也同时证实了该方法可以显著提高程序员的调试效率。我们相信,本文提出的方法将有助于提高Python程序缺陷的检测和定位的自动化程度,并为保障Python程序的正确性和可靠性提供了有效的手段。
其他文献
回 回 产卜爹仇贱回——回 日E回。”。回祖 一回“。回干 肉果幻中 N_。NH lP7-ewwe--一”$ MN。W;- __._——————》 砧叫]们羽 制作:陈恬’#陈川个美食 Back to yield
回 回 产卜爹仇贱回——回 日E回。”。回祖 一回“。回干 肉果幻中 N_。NH lP7-ewwe--一”$ MN。W;- __._——————》 砧叫]们羽 制作:陈恬’#陈川个美食 Back to yield
新建本科院校的后勤社会化改革必须适应提升后办学定位的发展需要,根椐后勤服务“紧、重、难”的新特点.分析新建本科院校后勤改革的现状,围绕建立新型后勤保障体系的改革目标,思
介绍了职业生涯的概念,论述了中小型高校图书馆馆员进行职业生涯开发的必要性,并提出了进行职业生涯开发的具体措施。
目的了解患者皮下脂肪厚度对皮下注射低分子肝素后注射部位出血的影响,分析腹部皮下脂肪厚度、按压时间与皮下出血的关系,探讨合适的按压时间。方法选择冠心病不稳定性心绞痛
为探明畜禽粪污还田利用存在的水污染风险,通过大田小区径流试验,研究了南方地区猪粪资源利用下稻田径流污染物排放特征,共设置纯化肥(CK)、沼液还田(C1)、有机肥还田(C2)和
<正>《中国实用乡村医生杂志》是国家卫生部主管、中国医师协会和中国医科大学主办的面向基层和农村的国家级综合性医学技术类期刊。本刊以更新乡村医生知识结构、提高其技术
2020年是鼠年。自古以来,关于鼠的看法始终是因人而异——这种啮齿动物因为偷油吃米、传播疾病而落得"过街老鼠人人喊打"的境地,而在不少影视作品中,米老鼠、精灵鼠小弟等角
中药“十八反”是在相反基础上形成的一组严格的配伍禁忌,然而从古至今临床应用反药治疗疾病的例子却层出不穷。反药是否相反,现代药性理论争议很多,并且也尚未形成较统一的