Page 40 - 《软件学报》2021年第12期
P. 40
3704 Journal of Software 软件学报 Vol.32, No.12, December 2021
引擎.这些热门项目关注人数多,提交的贡献请求也多,分析结果才具有统计意义.
4.1.2 数据收集
采用的是 Github 自带的 API 进行数据获取.爬取的内容包贡献请求信息,这里指贡献请求编号、代码提交
编号、创建时间、提交时间以及贡献请求下面的评论信息等.这些数据包含了一个贡献请求的所有信息,也可
以将贡献请求与代码提交联系起来.接下来爬取代码提交信息,包括改动行数、文件名、改动者、决策者、评
论信息、对应的贡献请求编号.这些数据文件包含了代码提交的所有信息,可以知道每条代码提交对应的模块.
最后收集各种评论信息,包括了评论对应的贡献请求编号、评论者、评论条数.表 2 统计了 3 个项目的数据.本
文将数据集上传,以供研究者参考(https://github.com/wqdbuaa/Dataset).
Table 2 Project data statistics
表 2 项目数据统计
项目名称 贡献请求数 贡献请求评论数 改动者数 评论者数 决策者数
xbmc 2 355 11 082 218 288 85
roslyn 3 863 17 999 147 198 81
elasticsearch 3 423 10 731 473 415 133
4.1.3 软件缺陷
软件缺陷又被称作 BUG,即为计算机软件或程序中存在的某种破坏正常运行能力的问题、错误,或者隐藏
的功能缺陷.缺陷的存在,会导致软件产品在某种程度上不能满足用户的需要.一个软件的质量是跟它的软件缺
陷相挂钩的.软件缺陷多,说明这个软件质量差.本文采用的是 Ray 在其论文 [24] 中使用的一种启发式的方法来对
缺陷进行识别.找出一个贡献请求的提交信息,利用自然语言处理把提交信息进行分词,最后得到的词汇集合与
错误词集进行匹配 [25] .如果提交信息里面包含错误关键词,那么可以认为这条贡献请求有缺陷,该条贡献请求所
涉及的文件也视为有缺陷 [24] .Ray 在文献[24]中使用的错误关键字为 error,bug,fix,issue,mistake,incorrect,fault,
defect,flaw,patch,本文采用同样的错误关键词.
4.1.4 相关性分析
本文采用 Spearman 系数检验来分析度量体系指标与软件缺陷的相关性.Spearman 系数检验能够衡量两个
变量之间的依赖性,利用单调的方程来评价变量之间的相关性.如果两个变量完全单调相关,那么相关系数为+1
或者−1.其中,+1 表示正相关,−1 表示负相关,0 表示完全不相关.若相关系数在 0.7 到 1.0 之间,为强相关;0.3 到
0.7 为中等相关;0 到 0.3 为弱相关 [26] .相关性系数的绝对值越大,说明相关性越大、度量体系指标越有效.为了评
估 Spearman 系数的显著性,计算 p 值(p value)来分析结果是否显著有效.使用不同个数的*来表示显著性值的大
小等级:***代表 p 值<0.001,即极其显著的统计学差异;**代表 p 值<0.01,即有显著统计学差异;*代表 p 值<0.05,
即有统计学的差异;没有任何*表示 p 值>0.05,即缺乏统计学的差异.
4.2 研究结果
4.2.1 当前时间段的代码评审过程和下一个时间段软件缺陷的关系
为了研究开源社区评审过程度量体系的有效性,本节分析当前时间段的度量指标和下一时间段软件缺陷
的关系.首先,根据当前时间段的数据计算了当前时间段的项目中每个模块在度量体系里的各个指标;然后,通
过错误词集匹配,计算下一个时间段每个模块中的缺陷数目;最后,通过 Spearman 系数检验来计算当前时间段
的度量指标和下一时间段软件缺陷的相关系数,得出表 3.如果 3 个项目的相关性结论一致,那么在第 6 列标出
具体的结论.如果 3 个项目的相关性不一致,那么结论是不确定.
从表 3 的数据可以看出:在 Xbmc 和 Roslyn 项目里,评审活动指标(评审次数、评审信息长度、评审时间、
代码改动行数)与软件缺陷的相关系数都在 0.4 到 0.7 之间,即中等正相关;elasticsearch 项目中,评审活动指标(评
审次数、评审信息长度、评审时间、代码改动行数)与软件缺陷的相关系数都在 0.7 以上,呈高等正相关.这说
明度量体系中的评审活动指标与软件缺陷存在较强的相关性.当前时间段的评审次数越多、评审信息长度越
大、评审时间越长、代码改动行数越多,下一个时间段的模块缺陷越多.在计算相关系数时,本文还计算了 p 值,