Page 204 - 《软件学报》2021年第7期
P. 204
2122 Journal of Software 软件学报 Vol.32, No.7, July 2021
Fig.2 Research framework of our survey
图 2 综述的研究框架图
Fig.3 Proportion of three categories of methods
图 3 3 种不同类型的方法所占的比例
2 基于模板的生成方法
2.1 简 述
这类方法主要基于 SWUM(software word usage model)或分析代码结构的版型(stereotype)信息,以识别出
方法的主要功能,并基于模板生成对应的注释.其在分析时,不仅需要考虑到代码本身的信息,还需要考虑代码
所处的上下文信息以及不同编程语言的特征.
2.2 已有工作的分析
2.2.1 基于 SWUM 分析的方法
SWUM 可以为识别和表达高级别动作提供必要的语言信息.SWUM 不仅可以捕获代码中单词出现的次数,
而且还可以捕获语言与结构的关系.在注释生成问题中,使用 SWUM 分析代码,可以重点识别出 3 个要素:动作
(action)、主题(theme)和可能的次要参数(secondary arguments).例如,如果方法签名(signature)是 list.add(Item i),
则通过对该方法签名进行 SWUM 分析,可以识别出:动作是 add,主题是 item,次要参数是(to) list.因此,基于上述
3 个要素,可以合成较为容易理解的代码注释.
Hill 等人 [18] 基于 SWUM,通过分析 Java 方法的签名,来生成基于自然语言的代码注释.虽然一些方法签名借
助 SWUM 分析,可以较为容易地分析出方法实现的功能.但有一些方法的签名可能与这种方法需要响应的事件
有关(例如方法 mousePressed),因此使用 Hill 等人提出的方法,将难以生成令人满意的注释.Sridhara 等人 [19] 针对
上述问题,在生成代码注释时进一步考虑了方法体内含有的代码.但方法体内通常仅有少量语句与需要生成的
代码注释相关.因此他们提出的方法主要包括两个阶段:内容选择阶段和文本生成阶段.其中,内容选择阶段尝