[发明专利]一种基于相似度分析的源代码版本演化注释复用方法有效
| 申请号: | 201611204086.5 | 申请日: | 2016-12-23 |
| 公开(公告)号: | CN106843840B | 公开(公告)日: | 2020-04-17 |
| 发明(设计)人: | 李斌;贾荻;陈晨;余海;贺也平 | 申请(专利权)人: | 中国科学院软件研究所 |
| 主分类号: | G06F9/44 | 分类号: | G06F9/44;G06F40/30 |
| 代理公司: | 北京君尚知识产权代理有限公司 11200 | 代理人: | 司立彬 |
| 地址: | 100190 *** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 基于 相似 分析 源代码 版本 演化 注释 方法 | ||
本发明公开了一种基于相似度分析的源代码版本演化注释复用方法。本方法为:1)查找目标源代码的新版本,生成该新版本的标识符信息并写入复用库;2)对该目标源代码与该新版本进行文本相似度分析,将该目标源代码中与该新版本相同的代码片段的标识符对应的注释写入复用库中对应注释字段,剩余代码片段的标识符写入一中间文件;3)根据该中间文件中每一标识符及其对应代码片段生成一功能相似度信息;4)对于该中间文件中的标识符,根据该目标源代码中该标识符对应的代码片段与该新版本该标识符对应的代码片段生成该标识符的克隆对;5)将功能相似度大于设定阈值的克隆对对应的标识符在该目标源代码中的注释写入该复用库中该标识符的注释字段。
技术领域
本发明属于软件技术领域,涉及一种实用的基于相似度分析的源代码版本演化注释复用方法。
背景技术
代码克隆检测技术是指在软件系统的源代码中找出具有高相似性的代码段,它是克隆研究领域的基础性工作,为后期更深入的探究提供基础数据。其中克隆代码是指程序员为了提高开发效率经常对软件系统的源代码进行拷贝粘贴及修改活动,这种重用机制通常会导致在源代码库中出现很多相同或相似的代码段。
代码克隆检测包括四个级别:基于文本的检测,该方法是在软件系统的源代码上直接进行比较处理,属于纯文本比较技术。基于词法(token)的检测,首先使用词法分析工具将所有源代码的每一行转换成一个token序列,并将所有序列连接成一个token串;接着扫描这个token以查找相似的token子序列,然后报告这些相似子串所对应的源代码为克隆。基于语法的检测,根据相似的代码段应该也有相似的句法结构而设计的程序被解析成一棵语法树,其中相似的子树所对应的源代码段就是克隆代码。基于语义的检测,主要以PDG(ProcedureDependence Graph,程序依赖图)方法为代表,即给定一个程序,根据程序语句之间的数据流和控制依赖关系建立一个PDG的集合,在此集合中的同构子图所对应的代码段为克隆代码。基于文本的方法不需考虑程序句法的正确性,时空复杂度最低。基于词法(token)的方法拥有基于文本方法的优点,且独立于源代码,但误检率较高。基于语法的检测方法能有效地检测更多类型的克隆对,但由于需将源代码解析成AST(Abstract SyntaxTree,抽象语法树)后再查找相似子树,所以时空复杂度偏高。基于语义的检测技术从更高层面去分析获得程序的语义,该技术能检测到一些被打乱顺序但语义相同的代码段,但建立PDG和寻找同构子图代价高昂。
源代码注释是为了提高源码可读性而进行的自然语言对应性文本描述,主要目的为了辅助程序员进行代码理解,提高软件系统的可维护性。源代码注释产生的途径多种多样,包括最基本的程序员手工编写、基于软件文档的工具自动生成、基于开放资源(如gitlog、开源社区和问答系统等)的自动提取和生成等,如果存在多个定制版本或演化版本,则注释可以来源于旧版本的复用数据。
本发明涉及的代码克隆检测技术主要包括文本相似度和功能相似度两部分。基于文本相似度分析可以处理大部分可复用的注释数据,文本相似度分析无法处理的部分可选择性的交由功能相似度分析部分精细化处理,从而最大限度的复用原有注释数据。所述方法的文本相似度分析对应克隆检测技术中基于文本的检测方法,功能相似度分析可对应克隆检测技术中基于语法的检测方法或代价更高的基于语义的检测方法。
发明内容
针对现有技术中存在的技术问题,本发明的目的在于提供一种基于相似度分析的源代码版本演化注释复用方法。通过所述方法可以高效的对开源软件的注释版本、定制版本等与主线版本分开的演化版本进行注释数据的复用,避免对全部代码进行手工注释工作,有效支撑其后续开发中对软件源代码的可维护性和可理解性。
本发明的基于相似度分析的源代码版本演化注释复用方法,包括三部分,如图1所示,第一部分是复用版本初始化,第二部分是文本相似度分析,第三部分是功能相似度分析,具体描述如下:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院软件研究所,未经中国科学院软件研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201611204086.5/2.html,转载请声明来源钻瓜专利网。
- 上一篇:爆震传感器
- 下一篇:使用在抽烟状态下的过滤嘴





