语句包裹模式的识别和分类

》首页 》 科技论文 》语句包裹模式的识别和分类
作者:无, 字数:6153

  摘要:软件演化过程中会产生大量变更代码,对变更代码的识别有利于变更理解。其中普遍存在的把一个语句或语句序列移动到一个或多个不同的语法实体中的变更行为,对于这种语句包裹模式的识别和分类,提出了基于代码变更块和抽象语法树的语句包裹模式识别分类算法。首先从变更前后版本2个文件中筛选出代码变更块,根据语句包裹模式的特征找到候选代码变更块,再建立抽象语法树,通过语法分析找到代码变更块中存在的语句包裹模式并对其进行分类。该算法在4个开源项目中进行了实验验证,实验结果表明该算法对语句包裹模式的识别具有较高的准确率。
  关键词: 语句包裹模式; 软件演化; 抽象语法树; 代码变更块
  【Abstract】 During the software evolution process, a large number of change codes will be generated, and the identification of the change code is conducive to change understanding. Among them is the universal behavior of changing a statement or a sequence of statement into one or more different grammatical entities. For the recognition and classification of such statement encapsulation patterns, the paper proposes a statement encapsulation pattern recognition classification algorithm based on code change blocks and abstract syntax trees. First, the code change block is filtered from the two files before and after the change, and the candidate code change block is found according to the characteristics of the statement encapsulation pattern, then an abstract syntax tree is established. Finally,syntactic analysis is used to find and classify the statement encapsulation patterns existing in the code change block. The algorithm has been experimentally verified in four open source projects, and the experimental results show that the algorithm has a high accuracy rate for statement encapsulation pattern recognition.
  【Key words】  statement encapsulation pattern; software evolution; abstract syntax tree; code change block
  0 引 言
  软件版本控制系统记录着软件开发过程中的每个细节以及不同时期的不同版本,软件版本控制系统每天都会产生大量的变更代码,理解变更代码可以使软件日常维护和功能添加变得更加容易。理解软件变更已经成为软件开发人员日常开发和维护的基本要求。
  在大量软件变更代码中存在对软件的重构、错误修复以及功能添加。重构是在不改变软件外在行为的前提下,改进软件的内部结构,使软件更易于维护和功能的添加。Fowler[1]在其著作中详细介绍了重构模型,其核心是一个全面的重构目录。变更代码中也存在对代码的错误修复。关于错误报告方面的研究有:Zhang等人[2]对Bugzilla上的错误报告进行了实证研究,并指出了进行错误报告分析时可能存在的问题;童燕翔[3]去除了bug report中的非修正性报告并提出了自动化缺陷定位方法;关于错误修复的识别方面的研究有:Eshkevari等人[4]提出了沿4个正交维度的标识符重命名分类方法,并实现了标识符重命名的识别和分类;Kawrykow等人[5]开发了一种工具支持的技术,用于检测软件系统的修订历史记录中不必要的代码修改;Kim等人[6]通过分析错误修复的历史记录开发了错误修复存储器,并提出了一种使用错误修复存储器的错误发现算法;关于错误预测方面的研究有: 原子等人[7]提出了语句级的缺陷预测方法,揭示了变更易于引入缺陷的因素;刘望舒等人[8]針对挖掘软件历史仓库过程中程序模块类型标记和软件度量时产生的噪声,提出一种可容忍噪声的特征选择框架FECS。
  软件变更代码中掺杂着大量的对软件的重构、错误修复和功能添加的代码,对软件变更代码中变更模式的提取有利于对软件变更的理解。在对软件变更进行研究后,接着又研究了把一个语句或语句序列移动到一个或多个不同的语法实体中的语句包裹模式。Pan等人[9]在其著作中从7个开源项目的配置管理存储库中,使用错误修复程序更改所涉及的语法组件和源代码上下文定义了27个可自动提取的错误修复模式。但是其著作对错误修复模式的研究并没有完全涵盖语句包裹模式所包含的变更类型,因此还需要对语句包裹模式做进一步的研究。
  1 语句包裹模式的识别和分类
  1.1 代码变更块   [3]童燕翔. 基于Bug Report的降噪和缺陷定位研究[D]. 南京:南京航空航天大学,2016.
  [4]ESHKEVARI L M, ARNAOUDOVA V, PENTA M D, et al. An exploratory study of identifier renamings[C]// International Working Conference on Mining Software Repositories, (MSR). Honolulu,HI, USA:Dblp, 2011:33.
  [5]KAWRYKOW D, ROBILLARD M P. Non-essential changes in version histories[C]// 2011 33rd International Conference on Software Engineering. Honolulu,HI, USA:IEEE, 2011:351.
  [6]KIM S , PAN K , WHITEHEAD E J . Memories of bug fixes[C]// Proceedings of the 14th ACM SIGSOFT International Symposium on Foundations of Software Engineering, FSE 2006. Portland, Oregon, USA:ACM, 2006:35.
  [7]原子,于莉莉,劉超. 面向细粒度源代码变更的缺陷预测方法[J]. 软件学报,2014,25(11):2499.
  [8]刘望舒,陈翔,顾庆,等. 一种面向软件缺陷预测的可容忍噪声的特征选择框架[J]. 计算机学报,2018,41(3):506.
  [9]PAN Kai, KIM S H, WHITEHEAD E J.Toward an understanding of bug fix patterns[J].Empirical Software Engineering,2009,14(3):286.
  [10]HUNT J W, SZYMANSKI T G. A fast algorithm for computing longest common subsequences[J].Communications of the Association for Computing Machinery,1977,20(5):350.

相关

相关

相关

  • 零食挑得对 健康不掉队

  • 教师应防三大“职业病”

  • 无“病”一身轻:心灵排毒5法

  • 新技能get:内裤也要“养”

  • “家庭自救”:一切源于爱

  • 舌尖上的“老字号”之二

No comments found.

相关