Page 283 - 《软件学报》2021年第7期
P. 283
徐海燕 等:针对复杂用户评论的代码质量属性判断 2201
同一批复杂用户评论的代码质量属性进行了判断,得到的代码质量属性、代码质量属性表现、代码质量属性表
现结果判断的准确率分别为 0.88、0.89 和 0.79,比应用初始代码质量属性特征词库的准确性(见表 7)有所提升.
而且,由于扩充的特征词主要为特征词对,在代码质量属性的描述上,特征词对比单个词能够对代码质量属性进
行更为具体的描述,因而在代码质量属性表现与代码质量属性表现结果的准确率上提升较大.综上,实验结果表
明,扩充代码质量属性特征词库可以扩大代码质量属性的信息量,能够更加准确地判断出复杂用户评论的代码
质量属性信息.
综上所述,通过实验结果可以看出,应用本文提出的针对复杂用户评论的代码质量属性判断方法可以对复
杂用户评论的代码质量属性进行有效判断.本文所提出的特征词对、主题判断规则与主题处理规则均是可扩展
的.我们在实验中发现,在部分用户评论中使用现有的规则无法判断出代码质量属性.例如,用户评论“这个用最
新版本的库就报错了”(主题 1 可移植性与主题 2 可靠性)与“怎么登录不了浏览器也卡死了呢”(主题 1 功能性与
主题 2 运行性能)均包含了两个主题,然而,在当前第 4.2.1 节中定义主题判断规则中,由于其依存句法关系有向
图不满足并列关系与动宾关系主题判断规则,只能通过单一主题判断规则进行判断,则会漏判其中一个主题,导
致不能判断出用户评论中全部的质量属性.产生这种现象的原因是,在这类用户评论的依存句法关系有向图中,
每条用户评论的两个主题之间的主题词集均是由于依存关系而相互交织在一起,导致一些规则难以进行清晰
的抽象及定义.因此,为了进一步提高代码质量属性判断的准确率,需要通过持续地对更多的用户评论进行分
析、抽象和总结,不断扩展现有规则.此外,代码质量的度量应包括代码静态分析与动态测试等,而本文提出的方
法只属于代码质量度量的一部分,可以与代码的静态分析、动态测试等方法相结合,对代码质量进行综合判断,
从而为用户和开发人员提供客观的代码质量判断结果.
6 结束语
本文提出的针对复杂用户评论的代码质量属性判断方法,解决了复杂用户评论中同时存在多个代码质量
属性时代码质量属性判断的问题.针对当前相关研究中对复杂用户评论中存在代码质量属性只能进行较为片
面的判断,本文从 11 个静态和动态代码质量属性出发,基于依存句法关系提出了主题判断规则,首先,通过对复
杂用户中存在的主题进行判断,找出复杂用户评论中可能存在的主题.然后,对判断出的主题进行其对应的代码
质量属性的识别.通过主题判断和主题对应的 11 个代码质量属性的识别,能够从多角度对复杂用户评论中的代
码质量属性进行较为全面的判断.此外,针对当前相关研究方法中存在代码质量属性判断不准确的问题,本文提
出了主题处理规则,对判断出的复杂用户评论中可能存在的主题进行同一主题合并和不同主题的处理.通过对
相同主题与不同主题相应的处理,能够较为准确地给出复杂用户评论的代码质量属性相关信息的判断结果.最
后,为了能够充分利用有限的代码质量信息,根据代码质量属性相关信息的判断结果,对代码质量属性特征词库
进行了扩充.
在本文的实验中,由于只是基于因果关系获取主题对应的代码质量属性的表现与表现结果,导致部分复杂
用户评论中的代码质量属性的表现结果并未识别,无法进入下一步的处理,代码属性表现结果判断准确率较低.
此外,由于主题判断规则的不完善,存在对部分复杂用户评论的主题判断过多或主题漏判的情况,继而影响代码
质量属性的判断.因此,为了提高复杂用户评论代码质量属性判断的准确性,下一步将对获取代码质量属性表现
与代码质量属性表现结果的方法和基于依存句法关系的复杂用户评论主题判断规则进行完善.
References:
[1] Berkhan D. Software component score: Measuring software component quality using static code analysis. In: Proc. of the
Computational Science and Its Applications—ICCSA 2015. 2015,9159:63–72. [doi: 10.1007/978-3-319-21413-9_5]
[2] Mamun MAA, Berger C, Jörgen H. Correlations of software code metrics: An empirical study. In: Proc. of the IWSM Mensura 2017:
The 27th Int’l Workshop on Software Measurement and the 12th Int’l Conf. on Software Process and Product Measurement, 2017.
[3] Kaur A, Nayyar R. A comparative study of static code analysis tools for vulnerability detection in C/C++ and JAVA source code.
Procedia Computer Science, 2020,171:2023–2029. [doi: 10.1016/j.procs.2020.04.217]