收藏本站
《南京大学》 2017年
收藏 | 手机打开
二维码
手机客户端打开本文

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

徐兆桂  
【摘要】:随着互联网技术的高速发展以及大数据时代的来临,动态编程语言受到越来越广泛的关注。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程序的正确性和可靠性提供了有效的手段。
【学位授予单位】:南京大学
【学位级别】:博士
【学位授予年份】:2017
【分类号】:TP311.1

手机知网App
【参考文献】
中国期刊全文数据库 前1条
1 郝鹏;郑征;张震宇;高乙超;宫成;薛云志;;基于谓词执行信息分析的自适应缺陷定位算法[J];计算机学报;2014年03期
【共引文献】
中国期刊全文数据库 前1条
1 陈翔;鞠小林;文万志;顾庆;;基于程序频谱的动态缺陷定位方法研究[J];软件学报;2015年02期
【二级参考文献】
中国期刊全文数据库 前1条
1 李伟;郑征;郝鹏;高乙超;饶培峰;宫成;;基于谓词执行序列的软件缺陷定位算法[J];计算机学报;2013年12期
【相似文献】
中国期刊全文数据库 前10条
1 闯跃龙;郭文平;;面向非计算机专业学生的Python教学内容设计[J];台州学院学报;2018年03期
2 汪琴;李明;;谈树莓派在学生创新教育中的应用[J];中国信息技术教育;2017年05期
3 姚建盛;李淑梅;;Python在科学计算中的应用[J];数字技术与应用;2016年11期
4 钱程;阳小兰;朱福喜;;基于Python的网络爬虫技术[J];黑龙江科技信息;2016年36期
5 戚利娜;刘建东;;基于Python的简单网络爬虫的实现[J];电脑编程技巧与维护;2017年08期
6 谢克武;;大数据环境下基于python的网络爬虫技术[J];电子制作;2017年09期
7 平凯珂;陈平雁;;Python与R语言联合应用的实现[J];中国卫生统计;2017年02期
8 史梦楚;;Python语言的探讨[J];中国新通信;2017年07期
9 贾棋然;;基于Python专用型网络爬虫的设计及实现[J];电脑知识与技术;2017年12期
10 肖胜刚;袁方;安海宁;;Python课程助力计算思维和创新能力培养[J];计算机教育;2017年09期
中国重要会议论文全文数据库 前10条
1 黄佳聪;高俊峰;;基于Python编程语言的空间动态模型集成[A];自然地理学与生态安全学术论文摘要集[C];2012年
2 连高欣;;Python语言在Cimiss中的应用[A];第35届中国气象学会年会 S20 深度信息化:应用支持与智能发展[C];2018年
3 王亚东;;Python在气象数据可视化中的应用[A];第34届中国气象学会年会 S20 气象数据:深度应用和标准化论文集[C];2017年
4 ;Development of Python-based ArcGIS Tools for Spatially Balanced Forest Sampling Design[A];Information Technology and Computer Science—Proceedings of 2012 National Conference on Information Technology and Computer Science[C];2012年
5 陈琳;任芳;;基于Python的新浪微博数据爬虫程序设计[A];第33届中国气象学会年会 S13 “互联网+”与气象服务——第六届气象服务发展论坛[C];2016年
6 高绵新;;基于Python的ArcGIS脚本工具在DEM精细化生产中的应用[A];全国测绘科技信息网中南分网第三十次学术信息交流会论文集[C];2016年
7 于文丽;;基于Python的空间自相关模式研究[A];中国地理学会百年庆典学术论文摘要集[C];2009年
8 刘啸虎;赵云梦;金磊;赵兴;;一种针对MQTT协议的测试系统设计与开发[A];2017年中国家用电器技术大会论文集[C];2017年
9 孙建立;贾卓生;;基于Python网络爬虫的实现及内容分析研究[A];中国计算机用户协会网络应用分会2017年第二十一届网络新技术与应用年会论文集[C];2017年
10 王世华;沈卫超;;用Python和wxPython开发主机安全监控系统[A];第二十次全国计算机安全学术交流会论文集[C];2005年
中国重要报纸全文数据库 前8条
1 ·特约作者 邹肇辉;BT编程的王者[N];电脑报;2005年
2 高寿福;无所不能的灵蛇——Python[N];中华读书报;2001年
3 本报记者 王延斌;小学教育应有Python一席之地[N];科技日报;2018年
4 易水;IT新词集锦(403)[N];计算机世界;2004年
5 Christina Mercer 编译 杨勇;2018年的主要IT技术:最需要、增长最快的IT技术[N];计算机世界;2018年
6 ;Ruby on Rails[N];计算机世界;2006年
7 中国信息通信研究院泰尔终端实验室 曾晨曦 段虎才;深度学习框架的前世今生[N];人民邮电;2018年
8 本报记者 原竟格;建设安全文化 确保平稳运营[N];中国石油报;2016年
中国博士学位论文全文数据库 前1条
1 徐兆桂;Python程序缺陷的自动检测与定位技术[D];南京大学;2017年
中国硕士学位论文全文数据库 前10条
1 刘原铭;基于Python的中小学云课堂平台设计与实现[D];北京交通大学;2018年
2 韩辉;基于Python的私募量化平台的设计与实现[D];浙江工业大学;2018年
3 董天聪;Python静态类型分析及其应用[D];南京大学;2015年
4 张凯姣;基于Python机器学习的可视化麻纱质量预测系统[D];东华大学;2017年
5 王鸣;基于Python的自动化测试脚本管理平台的设计与实现[D];华中科技大学;2016年
6 王小强;基于操作码的Python程序防逆转算法研究与实现[D];中国科学技术大学;2017年
7 徐彩霞;基于Python的CLI自动化测试方法的研究与实现[D];东华大学;2017年
8 黎爽;基于Python科学计算包的金融应用实现[D];江西财经大学;2017年
9 米也塞·艾尼玩;基于Python的维吾尔文文本聚类系统设计与实现[D];新疆大学;2012年
10 孔德民;基于Python开发预警机系统检测设计与研究[D];哈尔滨理工大学;2017年
中国知网广告投放
 快捷付款方式  订购知网充值卡  订购热线  帮助中心
  • 400-819-9993
  • 010-62791813
  • 010-62985026