您当前的位置:首页>论文资料>克隆代码自动重构的抽象语法树及静态分析

克隆代码自动重构的抽象语法树及静态分析

资料类别:论文资料

文档格式:PDF电子版

文件大小:2.38 MB

资料语言:中文

更新时间:2024-11-29 11:26:47



推荐标签:

内容简介

克隆代码自动重构的抽象语法树及静态分析 设计开发
数事执本与或用
克隆代码自动重构的抽象语法树及静态分析
侯雅梅
(西安卫星测控中心陕西西安710043)
摘要:随着特定领域软件开发的不斯发展,起来越多的领域需在重构基础上建立软件产品线。此时,如何对多个应用产品的相似代码单元实施重构操作,从而获得可复用性核心资产成为重点研究的内容。文中基于克隆代码侦测中出现的代码片断问题,提出在轴象语法树和静态分析基础上实现代码自动重构的方法,这种方法根据控制流程和基本语句块层次上的差异性展开分析,通过代码可变点提取完成克隆代码合并操作,从而有效辅助开发者实现克隆代码自动重构
关键词:克隆代码白动重构抽象语法树静态分析
中图分类号:TP311.52
文献标识码:A
代码重构是基于不改变原有代码功能的状态下调整程序源代码,提升代码的可理解性,有效降低修改和维护代码的成本,因此,如何自动识别重构代码的时机及完成源代码自动重构成为软件工程人员重点研究的内容。文中对克隆代码片断自动重构方法展开研究,多数情况下,克隆代码段并非完全相同的,且存在一定的差异性。本文从抽象语法树展开研究,重点考虑流程控制语句,例如:近语句、for语句等等,借助语句差异性指标创建语法树之间的流程控制语句对应关系。
1简述抽象语法树的生成步骤
抽象语法树是指把源代码实施语法和词法分析后形成的产物。为了提升源代码分析和重构效率,一般把源代码转换成为某个中间形式,抽象语法树作为常用程序代码中间表示形式,通过树状结构代表源代码抽象语法结构,树状结构上每个节点均对应源代码某个构成元素。语法树树根表示开始符号,每一个叶节点表示记号标记,每个内节点采用非终结符标记,如果A是某个内节点的非终结符号标记,x,、X,,"-x.是本节点自左向右排列的所有子节点,此时, A→、x"-,x组成一个产生式,X,,X,X,表示终结符或非终结符。根据C++语言语法规则,语法分析器对产生的记号申进行分析,严格按照规则把记号组成具有具体含义的语句,从面构造相对应的语法树。
2代码重构的意义
代码重构对研究和进行软件开发、维护等具有重要意义,对编程人员来说,代码重构是编写良好风格,便于复用、扩展代码的重要指导,使用合理的重构方法,能有效减轻编码和调试人员的负担加大软件的使用效率。目前,随着软件系统日益复杂,大众对适于需求
代码块a Int j=10 InitAO ++.+ Inita) While(j>0)(ao) bG) J+ K=10
代码块b Int=10 Init A() +++++ Initoo
for(j=10>0 }
(aG); b(j): J-+ K=10
图1分析基本代码块差异性
收移日期:2015-12-18
文章编号:1007-9416(2016)02-0186-01
变化、提升软件生产率的开发方法提出更高的要求。针对不同的对象,设计框架及中间件等设计利于软件复用的方法,将初始系统设计的更加灵活,完美,达到软件扩展性要求。代码重构将当前代码进行全部或部分转换,使于软件根据需求实施扩充,借助抽象数据类型、提取结构等技术完善代码结构,从面增加软件维护功能,便于对原有软件进行升级。同时,代码重构将复杂的结构程序逐渐简单化,
不单提升代码的易理解性,也使于人们学习其编程方法。 3克隆代码自动重构的方法
文中在创建代码克隆侦测识别设备基础上,对克隆代码片断差异性展开分析,并提取可变性代码获得自动重构的代码。
3.1创建代块对应关
代码重构过程中,先把代码划分为多个代码块,随之依据语句差异度指标创建流程控制语句的关系,并创建剩余代码块之间的对应关系。必须注意,这里先要设定什么是简单语句,语句主要划分为流程控制语句和除流程控制语句外的语句,流程控制语句包括:f、 for.while语句等等,上述语句对程序控制流产生重要影响,也是建立抽象语法树控制流对应关系中必须考患的关键内容,简单语句包括变量定义语句(int i=10),赋值语句(i=j+k)等,
.....下转第189页
Result(int argl,int arg2. int
arg3, int arg4 fint j-10, initA
initco, If(argl==0)
ocm)G J-T
J else if(arg]=1) For(j=16 j>0 j
a(j), b(i),1 la(k)()4 +. If(arg 3= =0)
//(接左动)
For(int p=0 p<10 p++)
First(p) Gccead(p) Faurtin) Pitthk(p) Sixth(p)
(clsc ifferg3 ==1) For(iat p=0 p<10 p++)
Dofirstp) doSecemd (p), Fourthp), doFifth(p), 1(dxsop process(),(tf(goed) Pirst(p) Second(p) Thirdp)
图2可变性提取结果简图
作者简介:候雅梅(1979一),女,陕西西安人,本科,毕业于国防科学技术大学工程师,研究方向:数据处理与显示。 86
上一章:舰载光电跟踪设备电磁兼容性设计 下一章:基于数字锁相环的宽带频率源的设计

相关文章

基于模块化的可重构机床动静态刚度分析 静态代码和模型检测一致性的设计研究 面向可重构网络设备软件构件的自动化测试方法研究 基于CATIA的曲面重构误差分析及优化 基于混沌相空间重构的数控机床运动精度演化分析 基因克隆和DNA分析(第4版) 数学方法论丛书 数学抽象方法与抽象度分析法 现代数学基础09 无限维空间上的测度和积分:抽象调和分析(第2版) 夏道行 2008年版