[发明专利]一种面向软件代码单元和代码度量的代码变更序列方法有效
申请号: | 202010077082.5 | 申请日: | 2020-01-23 |
公开(公告)号: | CN111290777B | 公开(公告)日: | 2021-09-17 |
发明(设计)人: | 吴毅坚;彭鑫;陈碧欢 | 申请(专利权)人: | 复旦大学 |
主分类号: | G06F8/71 | 分类号: | G06F8/71 |
代理公司: | 上海正旦专利代理有限公司 31200 | 代理人: | 陆飞;陆尤 |
地址: | 200433 *** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 面向 软件 代码 单元 度量 变更 序列 方法 | ||
本发明属于软件工程技术领域,具体为一种面向软件代码单元和代码度量的演化历史切片方法。本发明利用代码版本库中的分支和代码提交等代码演化历史信息,通过建立贯穿演化历史的代码持续追溯机制,实现针对指定代码单元或其度量值的演化历史切片分析。所得到的演化历史切片由修改了指定的代码单元或导致指定的代码度量值发生变化的代码变更序列组成,每个代码变更包括从对应的代码提交中抽取的相关信息,包括代码提交唯一编号、提交者、代码修改内容、提交说明等。这种演化历史切片可以帮助理解并追踪代码的演化过程以及相关代码问题的发展变化过程,支持开发人员绩效评价、软件项目质量监控和预警等应用。
技术领域
本发明属于软件工程技术领域,具体涉及一种面向软件代码单元和代码度量的演化历史切片方法。
背景技术
软件开发及质量管理人员经常需要理解并追踪软件代码单元(如方法、语句)的修改历史或者相关代码问题(如圈复杂度高)的发展变化过程。为此,需要建立贯穿演化历史的代码持续追溯机制,针对指定代码单元或其度量值抽取相关的代码变更序列。所得到的代码变更序列可以称为演化历史切片,其中由修改了指定的代码单元或导致指定的代码度量值发生变化的代码变更序列组成,每个代码变更包括从对应的代码提交中抽取的相关信息,包括代码提交唯一编号、提交者、代码修改内容、提交说明信息等。基于这种演化历史切片可以对相关演化历史进行重演,或者持续跟踪代码单元的演化过程。
发明内容
本发明的目的是提供一种面向软件代码单元和代码度量的演化历史切片方法,以实现针对指定代码单元(如方法、语句)或其度量值(如方法的代码长度或圈复杂度)的演化历史切片分析,从而帮助开发人员理解代码的演化过程以及相关代码问题(如圈复杂度高)的发展变化过程,同时追踪代码单元的变化过程,支持开发人员绩效评价、软件项目质量监控和预警等应用。
本发明利用代码版本库中的分支(Branch)和代码提交(Commit)等代码演化历史信息,通过建立贯穿演化历史的代码持续追溯机制,实现针对指定代码单元(如方法、语句)或其度量值(如方法的代码长度或圈复杂度)的演化历史切片分析。本发明所得到的演化历史切片由修改了指定的代码单元或导致指定的代码度量值发生变化的代码变更序列组成,每个代码变更包括从对应的代码提交中抽取的相关信息,包括代码提交唯一编号、提交者、代码修改内容、提交说明信息等。这种演化历史切片可以帮助理解并追踪代码的演化过程以及相关代码问题(如圈复杂度高)的发展变化过程,支持开发人员绩效评价、软件项目质量监控和预警等应用。
本发明提供的面向软件代码单元和代码度量的演化历史切片方法,采用附图1所描述的概念模型描述软件代码单元及其修改关系。软件代码中的文件、方法、语句等均为代码单元,通过程序分析技术从代码中提取并存储;在给定版本的软件代码中,每个代码单元都被唯一标识,具有当前内容和当前行号属性;代码单元的唯一标识在代码修改历史中用于追踪同一个代码单元;当代码单元在某次代码提交中发生变化时,通过对代码修改前后版本的差异分析,根据该代码单元上下文变化和代码单元本身的变化,该代码单元将被识别为同一代码单元的修改、或被识别为原代码单元的删除和一个新增的代码单元;代码单元在某次代码提交中所发生的变化,通过语句位置标明;代码单元发生变化的形式,由变更操作表示,分为新增、删除、修改三种类型,分别通过目标属性表明是对哪个代码单元进行变化。
本发明提供的面向软件代码单元和代码度量的演化历史切片方法,具体步骤如下:
(1)对代码历史切片起点版本v中的所有代码单元,给定唯一标识。
本步骤中,对于每个代码单元,均表示为一个四元组S(id, startLine, endLine,parentElementId),其中id为代码单元(包括语句、方法、文件)的全局唯一标识,startLine和endLine为代码单元的起止行号,parentElementId为直接包含该代码单元的上层代码单元的唯一标识;通过parentElementId级联查询可获取该代码单元的具体位置(如在哪个文件中)。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于复旦大学,未经复旦大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010077082.5/2.html,转载请声明来源钻瓜专利网。