《一种对程序代码进行重构操作组合的方法.pdf》由会员分享,可在线阅读,更多相关《一种对程序代码进行重构操作组合的方法.pdf(7页完整版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 103699377 A (43)申请公布日 2014.04.02 CN 103699377 A (21)申请号 201310639852.0 (22)申请日 2013.12.04 G06F 9/44(2006.01) (71)申请人 国家电网公司 地址 100000 北京市西城区西长安街 86 号 申请人 国网江西省电力公司信息通信分公 司 (72)发明人 梁良 马勇 朱正刚 余鹏飞 (74)专利代理机构 南昌新天下专利商标代理有 限公司 36115 代理人 施秀瑾 (54) 发明名称 一种对程序代码进行重构操作组合的方法 (57) 摘要 本发明提供一种对程序代码进行。
2、重构操作组 合的方法, 包括以下步骤 : 步骤 a : 重构操作组合 初始化步骤 ; 步骤 b : 抽取前置、 后置关键程序代 码元素步骤 ; 步骤 c : 标记依赖关系步骤 ; 步骤 d : 标记可交换关系与重排序步骤 ; 步骤 e : 标记可优 化能力步骤 ; 步骤 f : 优化操作步骤 ; 步骤 g : 导出 优化后的程序代码步骤 ; 其中所述依赖关系包括 完全依赖关系、 完全部分依赖关系、 部分完全依赖 关系、 部分部分依赖关系 ; 其中所述可交换关系 包括无条件交换关系、 条件交换关系。 该方法具有 重构效率高、 处理灵活、 优化彻底等特点。 (51)Int.Cl. 权利要求书 1 。
3、页 说明书 3 页 附图 2 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书1页 说明书3页 附图2页 (10)申请公布号 CN 103699377 A CN 103699377 A 1/1 页 2 1. 一种对程序代码进行重构操作组合的方法, 其特征在于, 包括以下步骤 : 步骤 a : 重构操作组合初始化步骤 ; 载入待优化的重构操作组合, 读取用户自定义的初 始重构操作组合配置, 所述初始重构操作组合满足所有前置条件检查要求, 对所有前置条 件合法性进行验证, 确保初始重构组合可正确运行 ; 步骤 b : 抽取前置、 后置关键程序代码元素步骤 ; 根据所述用户。
4、自定义的初始重构操作 组合, 抽取组合中各重构操作的前置关键程序代码元素与后置关键程序代码元素 ; 所述前 置关键程序代码元素代表重构操作作用前的程序代码元素状态, 所述后置关键程序代码元 素代表重构操作作用后的程序代码元素状态 ; 步骤 c : 标记依赖关系步骤 ; 通过遍历重构操作组合中的具体重构操作, 同时分析初始 重构组合的前置和后置关键程序代码元素, 如果一对重构操作中的后者前置条件满足依赖 于前者重构执行的结果, 则用标识来标记各重构操作间的依赖关系 ; 步骤 d : 标记可交换关系与重排序步骤 ; 如果一对重构操作中的前者与后者顺序交换 后, 重构操作组合执行的结果不变, 则认为。
5、这两个重构操作间存在可交换的关系, 用标识来 标记各重构操作间的可交换关系 ; 并根据各重构操作间的可交换关系对重构操作组合进行 交换操作, 即对重构组合进行重排序操作后得到新重构操作组合 ; 步骤 e : 标记可优化能力步骤 ; 对所述新重构操作组合进行步骤 c 操作, 调整所述新重 构操作组合间的依赖关系, 由所述新重构操作组合及各重构操作间的依赖关系, 通过重构 组合优化规则得出所述新重构操作组合的可优化能力, 并用标识进行标记 ; 步骤 f : 优化操作步骤 ; 将重构组合优化规则应用于所述新重构操作组合进行优化操 作 ; 如果优化操作进程中断或阻断, 则退回初始状态避免死循环操作 ;。
6、 步骤 g : 导出优化后的程序代码步骤 ; 导出对所述新重构操作组合优化操作后的程序 代码。 2. 根据权利要求 1 所述的一种对程序代码进行重构操作组合的方法, 其特征在于 : 所 述依赖关系包括完全依赖关系、 完全部分依赖关系、 部分完全依赖关系、 部分部分依赖关 系。 3. 根据权利要求 1 所述的一种对程序代码进行重构操作组合的方法, 其特征在于 : 所 述可交换关系包括无条件交换关系、 条件交换关系。 4. 根据权利要求 1 所述的一种对程序代码进行重构操作组合的方法, 其特征在于 : 所 述重构组合优化规则包括组合压缩规则和归并重组规则。 权 利 要 求 书 CN 1036993。
7、77 A 2 1/3 页 3 一种对程序代码进行重构操作组合的方法 技术领域 0001 本发明涉及代码重构技术, 尤其是一种对程序代码进行重构操作组合的方法。 背景技术 0002 重构是指在不改变 “软件之可察行为” 的前提下, 通过调整程序内部结构设计, 让 代码更容易理解、 更容易修改, 重构为极限编程、 快速编程等提供了保障与支持, 但关于重 构工具的研究却还停留在探索阶段。重构操作工具有 eclipse (针对 Java 程序的集成开发 工具) 重构等, 但这类工具严重地依赖于代码工作者的指令操作, 运行效率低。 0003 代码重构过程往往不是独立进行的, 重构经常伴随着多个步骤的同时。
8、进行, 合理 地组织多个重构操作之间的组合执行顺序是重构执行的关键。 本发明研究一种对程序代码 进行重构操作组合的方法, 为智能化重构操作奠定了基础, 具有重构效率高等特点。 发明内容 0004 本发明提供一种对程序代码进行重构操作组合的方法, 包括以下步骤 : 步骤 a : 重构操作组合初始化步骤 ; 载入待优化的重构操作组合, 读取用户自定义的初 始重构操作组合配置, 所述初始重构操作组合满足所有前置条件检查要求, 对所有前置条 件合法性进行验证, 确保初始重构组合可正确运行 ; 步骤 b : 抽取前置、 后置关键程序代码元素步骤 ; 根据所述用户自定义的初始重构操作 组合, 抽取组合中各。
9、重构操作的前置关键程序代码元素与后置关键程序代码元素 ; 所述前 置关键程序代码元素代表重构操作作用前的程序代码元素状态, 所述后置关键程序代码元 素代表重构操作作用后的程序代码元素状态 ; 步骤 c : 标记依赖关系步骤 ; 通过遍历重构操作组合中的具体重构操作, 同时分析初始 重构组合的前置和后置关键程序代码元素, 如果一对重构操作中的后者前置条件满足依赖 于前者重构执行的结果, 则用标识来标记各重构操作间的依赖关系 ; 步骤 d : 标记可交换关系与重排序步骤 ; 如果一对重构操作中的前者与后者顺序交换 后, 重构操作组合执行的结果不变, 则认为这两个重构操作间存在可交换的关系, 用标识。
10、来 标记各重构操作间的可交换关系 ; 并根据各重构操作间的可交换关系对重构操作组合进行 交换操作, 即对重构组合进行重排序操作后得到新重构操作组合 ; 步骤 e : 标记可优化能力步骤 ; 对所述新重构操作组合进行步骤 c 操作, 调整所述新重 构操作组合间的依赖关系, 由所述新重构操作组合及各重构操作间的依赖关系, 通过重构 组合优化规则得出所述新重构操作组合的可优化能力, 并用标识进行标记 ; 步骤 f : 优化操作步骤 ; 将重构组合优化规则应用于所述新重构操作组合进行优化操 作 ; 如果优化操作进程中断或阻断, 则退回初始状态避免死循环操作 ; 步骤 g : 导出优化后的程序代码步骤 。
11、; 导出对所述新重构操作组合优化操作后的程序 代码。 0005 其中所述依赖关系包括完全依赖关系、 完全部分依赖关系、 部分完全依赖关系、 部 说 明 书 CN 103699377 A 3 2/3 页 4 分部分依赖关系。 0006 其中所述可交换关系包括无条件交换关系、 条件交换关系。 0007 其中所述重构组合优化规则包括组合压缩规则和归并重组规则。 0008 本发明的技术效果是 : 1、 重构效率高, 处理过程灵活, 重构组合高度简化, 重构操作复杂度大大降低 ; 2、 支持大量重构操作同时执行, 适用于批量的重构操作, 重构性能明显提升 ; 3、 设定了重构组合优化规则, 优化实施自左。
12、向右, 过程清晰, 系统资源占用少、 出错响 应速度快 ; 4、 实现过程简单, 可行性强, 易操作、 易上手, 为自动化、 智能化重构奠定了良好的基 础。 附图说明 0009 图 1 为本发明的代码重构操作步骤图。 0010 图 2 为本发明的总体架构流程图。 具体实施方式 0011 如图 1 所示, 本发明的代码重构操作步骤图, 本发明提供的一种对程序代码进行 重构操作组合的方法, 包括步骤 : 步骤 a : 重构操作组合初始化步骤 ; 载入待优化的重构操作组合, 读取用户自定义的初 始重构操作组合配置, 所述初始重构操作组合满足所有前置条件检查要求, 对所有前置条 件合法性进行验证, 确。
13、保初始重构组合可正确运行 ; 步骤 b : 抽取前置、 后置关键程序代码元素步骤 ; 根据所述用户自定义的初始重构操作 组合, 抽取组合中各重构操作的前置关键程序代码元素与后置关键程序代码元素 ; 所述前 置关键程序代码元素代表重构操作作用前的程序代码元素状态, 所述后置关键程序代码元 素代表重构操作作用后的程序代码元素状态 ; 步骤 c : 标记依赖关系步骤 ; 通过遍历重构操作组合中的具体重构操作, 同时分析初始 重构组合的前置和后置关键程序代码元素, 如果一对重构操作中的后者前置条件满足依赖 于前者重构执行的结果, 则用标识来标记各重构操作间的依赖关系 ; 步骤 d : 标记可交换关系与。
14、重排序步骤 ; 如果一对重构操作中的前者与后者顺序交换 后, 重构操作组合执行的结果不变, 则认为这两个重构操作间存在可交换的关系, 用标识来 标记各重构操作间的可交换关系 ; 并根据各重构操作间的可交换关系对重构操作组合进行 交换操作, 即对重构组合进行重排序操作后得到新重构操作组合 ; 步骤 e : 标记可优化能力步骤 ; 对所述新重构操作组合进行步骤 c 操作, 调整所述新重 构操作组合间的依赖关系, 由所述新重构操作组合及各重构操作间的依赖关系, 通过重构 组合优化规则得出所述新重构操作组合的可优化能力, 并用标识进行标记 ; 步骤 f : 优化操作步骤 ; 将重构组合优化规则应用于所。
15、述新重构操作组合进行优化操 作 ; 如果优化操作进程中断或阻断, 则退回初始状态避免死循环操作 ; 步骤 g : 导出优化后的程序代码步骤 ; 导出对所述新重构操作组合优化操作后的程序 代码。 说 明 书 CN 103699377 A 4 3/3 页 5 0012 如图 2 所示本发明的总体架构流程图, 本发明通过载入待优化的重构操作组合并 读取用户自定义的组合初始配置, 对初始重构组合进行一系列的分析处理操作, 通过遍历 探索操作间关系发现操作间的潜在可优化性, 重排重构操作位置并对可优化的重构操作对 自左向右依次应用相应的优化规则, 进而简化重构复杂性缩短重构操作步骤, 最终得到优 化的重。
16、构操作组合。 0013 1、 重构操作关系推导 : 首先, 根据用户自定义初始组合推断出各个重构操作的前置关键程序代码元素与后置 关键程序代码元素。前置关键程序代码元素可以代表重构操作作用前的待重构程序代码 元素状态, 后置关键程序代码元素可以代表重构操作作用后的待重构程序代码元素状态, 重构操作单元的本质是将前置关键程序代码元素转换为后置关键程序代码元素。例如 : 重构操作 “重命名方法 MethodName1 为方法 MethodName2” , 则前置关键程序代码元素为 : MethodName1, 后置关键程序代码元素为 : MethodName2。 0014 其次, 遍历探索并标记重。
17、构操作间的依赖关系。在一对重构操作中, 若后者前置 条件的满足依赖于前者重构执行的结果, 则称这两个重构操作间存在依赖的关系。两重构 操作间的依赖关系有四种 : 完全 - 完全依赖 (后者前置条件刚好完全依赖于前者重构执行 结果) 、 完全 - 部分依赖 (后者前置条件完全依赖于前者重构执行结果的一部分) 、 部分 - 完 全依赖 (后者前置条件不仅依赖前者重构执行的结果, 还依赖其它重构执行的结果) 和部 分 - 部分依赖 (后者前置条件依赖前者重构执行结果的一部分, 还依赖其它重构执行的结 果) 。 0015 然后, 由初始重构操作组合的依赖关系分析推导重构操作间的交换关系。在一对 重构操。
18、作中, 若前者与后者的顺序交换后, 重构操作组合执行的结果不变, 则称这两个重构 操作间存在可交换的关系。 两重构操作间的交换关系有两种 : 无条件交换 (前者与后者直接 交换顺序, 不用进行任何其它处理) 和条件交换 (前者与后者交换后, 需相应地修改因后者 前置而导致前者中受影响的关键程序代码元素) 。 0016 2、 重构组合优化规则应用 : 首先, 根据重构操作间的交换关系, 标记可交换的重构操作对。 针对重构操作组合中的 交换关系标记, 分别对相应的重构操作对进行无条件交换或条件交换。重构操作交换过程 又称为对初始重构组合的重排, 重排是重构组合深度优化过程的一个重要部分, 为重构组。
19、 合优化规则的应用奠定了基础。 0017 其次, 对重排后的重构组合进行分析, 探索并标记重构组合的可优化潜能。 适当调 整重排后的重构操作间的依赖关系, 由新的重构操作组合及各重构操作间的依赖关系, 通 过适配重构组合优化规则来分析探索重构操作组合的可优化能力, 并用特定标识标记。 0018 然后, 对可优化的重构操作对应用重构操作组合优化规则。针对之前分析探索得 到的重构操作可优化能力, 将相应的重构组合优化规则应用于重排序后的新重构操作组 合。重构操作组合优化规则有两种 : 组合压缩规则 (可直接合并前后两个重构操作, 只进行 一次前置条件检查和一次重构转换操作) 和归并重组规则 (合并前后两个重构操作, 进行一 次前置条件检查和两次重构转换操作) 。 说 明 书 CN 103699377 A 5 1/2 页 6 图 1 说 明 书 附 图 CN 103699377 A 6 2/2 页 7 图 2 说 明 书 附 图 CN 103699377 A 7 。