[发明专利]一种基于抽象语法树节点变更抽取的Python代码变更提示方法有效
申请号: | 201510555635.2 | 申请日: | 2015-09-01 |
公开(公告)号: | CN105159715B | 公开(公告)日: | 2018-07-20 |
发明(设计)人: | 陈林;林薇;陈芝菲;徐宝文 | 申请(专利权)人: | 南京大学 |
主分类号: | G06F9/445 | 分类号: | G06F9/445;G06F17/30 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 210023 江苏*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 抽象 语法 节点 变更 抽取 python 代码 提示 方法 | ||
本发明提供一种基于抽象语法树节点变更抽取的Python代码变更提示方法,包括下列步骤:1)获取同一软件不同版本程序的源代码;2)生成两个版本的源程序对应的抽象语法树;3)匹配抽象语法树获取变更节点,结合变更节点上下文信息标记节点变更类型;4)将变更元组聚集为事务,构造训练集;5)利用数据挖掘技术,挖掘变更元组中的关联关系;6)根据挖掘出的关联关系,提示开发人员程序中可能出现变更的位置和可能的变更类型。本发明解决了目前存在的缺乏针对Python语言的软件演化分析、无法提示可能的代码变更类型等问题,进而指导软件生命周期的管理,提高软件演化的可控性,从而能更好地控制软件产品的质量。
技术领域
本发明属于计算机技术领域,尤其是软件演化分析领域。本发明提供了一种面向Python语言的、基于程序抽象语法树节点变更抽取的代码变更提示方法,用于在Python软件演化过程中为程序变更提供辅助信息。
背景技术
软件在其生命周期中一直在发生演化,从错误修正到增加功能等,对软件演化进行分析可以揭示软件发展的基本规律,对软件生命周期的管理提供指导性意见,以达到提高软件质量、开发可靠性软件的目的。而软件演化分析中的一个关键问题,就是识别程序不同版本间的变更,挖掘演化信息中的关联代码和关联变更类型,为软件演化过程提供变更辅助信息。
目前,软件演化信息主要源于以文件或者项目为基本单元来记录软件变化历史的软件配置管理系统、错误报告系统等CASE工具,这些工具大多使用代码行的增加或删除来描述某一个变化,而与类或函数等特定的源代码实体无关。因此,当前对程序演化分析的研究主要集中在代码行数、模块数量、发行包大小、宏定义数量等方面。这些数据能够在宏观上揭示程序的演化过程,通过对它们的研究,已经得到了包括持续演化、复杂度增加、自我规范等八条基本原则。但由于这些版本信息系统并不存储结构化的变更信息,因而对软件演化的分析无法深入到函数实体或语句实体级别。例如,无法识别“if语句的else分支中插入了一个函数调用”这类变化,而这类变更信息对于软件演化分析而言恰恰十分重要。
软件演化信息包含了软件变更历史等信息,一直是学术界的研究热点。Gall等人使用版本发行信息来识别模块间的耦合关系,并通过分析这种耦合关系发现可能的软件可维护功能点,但这种方法以模块为单位,分析粒度较粗;为了发现细粒度代码结构间的耦合关系,Thomas Zimmermann等人对代码文件进行语法分析,将语法实体与代码行相关联,该方法能在一定程度上预测程序可能发生变更的位置,但其没有对变更进行分类,无法对可能的变更类型提出建议;而在程序变更类型分类方面,Beat Fluri等人提出了一种源代码变化分类方法,该方法主要针对Java语言,从类和方法两个角度对变更进行分类。Python虽然也是一种面向对象的程序设计语言,但其与Java仍有一定区别,如类本身也是对象等,故Beat Fluri等人针对Java提出的源代码变化分类学,不完全适用于Python。Python语言第一个公开发行版本发行于1991年,诞生时间较短,目前学术界针对Python语言的研究较少,但Python自诞生以来,已经成为最受欢迎的程序设计语言之一,故对Python程序变更信息进行分析,具有一定价值。
总的来说,传统的软件变更历史研究方法存在如下缺点:1、仅仅依赖CVS等版本控制系统提供的变更信息,变更只与代码行的增删相关,而与类或函数等代码实体无关;2、分析粒度较粗,鲜有方法能分析函数级别的变更,缺乏深入到源代码语句级的分析方法;3、没有对变更进行分类,仅能提示变更可能发生的位置,无法提示可能的变更类型;4、大多数方法的研究对象为Java/C++等,针对Python语言的研究成果较少。
发明内容
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京大学,未经南京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510555635.2/2.html,转载请声明来源钻瓜专利网。