摘要:在软件工程领域, 代码库承载着丰富的知识资源, 可以为开发者提供编程实践的案例参考. 源代码中频繁出现的模式化重复片段, 若能以代码模板的形式有效提炼, 就能显著提升编程效率. 当前实践中, 开发者常常通过源代码搜索复用现有解决方案, 然而此方法往往产生大量相似且冗余的结果, 增加了后续筛选工作的负担. 与此同时, 以克隆代码为基础的模板挖掘技术往往未能涵盖由分散小克隆片段构成的广泛模式, 进而限制了模板的实用性. 提出了一种基于代码克隆检测的代码模板提取和检索方法, 通过拼接多个片段级克隆以及提取和聚合方法级克隆的共享部分, 实现了更高效的函数级代码模板提取, 并解决了模板质量问题. 基于所挖掘的代码模板, 提出了一种代码结构特征的三元组表示法, 有效地对纯文本特征进行补充, 并实现了高效而简洁的结构表示. 此外, 提出了一种结构和文本检索相结合的模板特征检索方法, 以便通过匹配编程上下文的特征来检索这些模板. 基于该方法实现的工具CodeSculptor, 在包含45个高质量Java开源项目的代码库测试中展现了其提取高质量代码模板的显著能力. 结果表明, 该工具挖掘的模板平均可实现减少60.87%的代码量, 且有92.09%是通过拼接片段级克隆产生的, 这一比例的模板在传统方法中是无法识别出来的, 这印证了该方法在识别和构建代码模板方面的卓越性能. 在代码模板检索和推荐的实验中, Top-5检索结果精确度达到了96.87%. 通过对随机选择的9600个模板进行的初步案例研究, 讨论了模板的实用性, 并发现大多数抽样代码模板在语义上是完整的, 少数无意义的模板表明该模板提取工作未来的潜力. 用户研究进一步表明, 使用CodeSculptor能够更有效率地完成代码开发任务.