Page 266 - 《软件学报》2021年第7期
P. 266

2184                                     Journal of Software  软件学报 Vol.32, No.7,  July 2021

                 divided into clauses and a dependency syntactic relation directed graph of the clauses is constructed. After that, the topic of the clause is
                 extracted based on the topic judgment rule of the dependency syntactic  relation of the  clause.  Then,  according to the initial feature
                 thesaurus of code quality attribute, the code quality attributes corresponding to each topic are identified, and the representation and the
                 representation result of code quality attribute for each topic are acquired. And finally, the representation and the representation result of
                 code quality attribute in the complex user’s comments are analyzed based on the topic processing rule. The code quality attribute related
                 result in the complex user’s comment is produced, and the initial code quality attribute feature thesaurus is continuously expanded. The
                 experimental results show that the proposed method can judge the code quality attributes of complex user’s comments effectively.
                 Key words:   complex user’s  comments;  code quality  attribute;  topic  judgment rule; representation of code quality attribute;
                           representation result of code quality attribute; topic processing rule

                 1    引   言

                    代码质量研究对软件开发具有重要意义.当前,代码质量的度量被广泛应用于软件工程的不同领域,用以预
                                                                   [1]
                 测软件缺陷、软件质量、安全漏洞、可维护性等.Berkhan 等人 对代码进行静态代码分析从而度量软件组件
                               [2]
                 质量.Mamun 等人 通过对软件与代码质量的相关性进行实证研究,发现代码质量可以指示软件的可维护性,而
                                                                                    [3]
                 且预测这样的代码质量可以为软件在未来的版本中提供技术债务的指示.Kaur 等人 通过静态代码分析过程
                 进行漏洞检测,利用自动静态代码分析工具对软件开发过程中的源代码质量进行审计,以识别软件潜在的安全
                                  [4]
                 漏洞.Ruiz-Rube 等人 认为,提高软件产品的质量可以提高客户满意度并提供竞争优势,静态程序分析是验证
                 软件质量特性的一种有效技术,使用自动工具分析源代码可以发现不同的代码味道和潜在的错误.近年来,随着
                 代码开源和代码复用的发展,大量开发人员聚集在 Github、开源中国、CSDN 等代码托管平台和开发者社区上,
                 开发人员上传的大量代码已成为开发者编程的重要参考.但是,由于代码开发者的编程水平和编程经验参差不
                                                                                       [5]
                 齐,代码的质量差别较大,用户在使用代码时会出现各种问题.在软件产品中,Panago 等人 认为,因为软件开发
                                                                                               [6]
                 者和软件使用者并不认识,软件使用者的使用体验反馈,如建议意见等,对开发者十分重要.Xu 等人 认为,类似
                 于软件产品,代码作为一种特殊的产品,其使用者在使用时会针对代码的实际使用情况给出相应的评论,可以通
                 过用户评论建立开发者与用户之间的联系.因此,通过分析针对代码的用户评论中的代码质量属性相关信息,能
                 够为代码开发者提供用户的代码使用反馈信息,帮助开发者提高代码质量,并为新用户选择代码提供参考.
                    在汉语中,复杂句式主要是指有两个以上互不从属的分句通过特定连词连接而成,句子中有较小停顿,句子
                              [7]
                 前后有较大停顿 .与普通的产品用户评论不同,针对代码的用户评论多为复杂句,且具有评论文本复杂度高、
                                                                    [6]
                 评论领域性强、评论粒度差别大、文本长短不一、不规则的特点 .此外,复杂用户评论中一般包含多种代码质
                 量属性,且包含的代码质量属性之间具有多种逻辑关系,导致判断用户评论中代码质量属性信息困难.因此,如
                 何针对复杂的代码用户评论进行分析,并从中获取与代码质量属性相关的信息成为亟需解决的问题.
                    本文的主要贡献如下:
                    (1)  基于复杂用户评论分句的依存句法关系,制定了基于依存句法关系建立的主题判断规则,对复杂用户
                 评论分句中存在的主题进行了抽取;然后,应用代码质量属性特征词库识别出各主题对应的代码质量属性.本文
                 采用先抽取复杂用户评论主题再进行主题对应代码质量属性识别的方法,可以对复杂用户评论中可能存在的
                 代码质量属性进行较为完整的判断.
                    (2)  对于复杂用户评论进行主题抽取后,基于主题间的关系,制定了同一主题处理规则,对复杂用户评论中
                 同一代码质量属性对应的多个相同主题进行了合并,针对不同主题也进行了相关处理.通过主题处理规则,可以
                 对抽取出的复杂用户评论中的主题进行处理,从而综合判断出复杂用户评论的代码质量属性.最后,根据主题处
                 理规则获取的复杂用户评论的代码质量属性表现与表现结果,构建新的特征词对,扩充了初始的代码质量属性
                 特征词库,并通过特征词库的动态扩充,不断提升复杂用户评论中代码质量属性识别的精度.
                    本文第 2 节介绍用户评论与复杂句的相关研究工作.第 3 节对静态和动态代码质量属性定义以及代码质量
                 属性特征词库进行说明.第 4 节介绍针对复杂用户评论的代码质量属性判断方法.第 5 节在真实数据上进行实
                 验.最后总结全文.
   261   262   263   264   265   266   267   268   269   270   271