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] 针对
                 上述问题,在生成代码注释时进一步考虑了方法体内含有的代码.但方法体内通常仅有少量语句与需要生成的
                 代码注释相关.因此他们提出的方法主要包括两个阶段:内容选择阶段和文本生成阶段.其中,内容选择阶段尝
   199   200   201   202   203   204   205   206   207   208   209