GitHub issue跨项目bug分类
1.现在已处理的可利用信息有:项目间贡献者(提交过commit信息)的交集、pull request核心开发者交集(pr的合并或关闭,重开)、issue核心开发者交集(issue的合并或关闭,重开)、项目owner的follow关系。
其中项目owner的follow关系数量极少,只有20条关系,而且大都不准确直接忽略。
2.两种做法:
3.先采取第一种做法
1. 实验数据:issue > 400 且 bug_ratio 在(0.2-0.8): 874个项目。
2. 目标: 目前项目内的bug分类已经有了结果,下一步工作是找到多种方法构建项目依赖关系网络,对某一个项目,找到相关联的项目族群,并使用项目族群的issue训练的模型对该项目issue分类,看最终得到的结果能否逼近使用项目本身的数据进行分类的准确度。
3. 如何构建项目间的关系网络?
1. issue, pull request, and commit 的评论信息中对其他项目的交叉引用(文本链接)反映了项目间的技术依赖,关联权重为项目间交叉引用的数量。
2.项目的核心成员(owner)的开发行为能够反映项目的技术依赖。
【a】项目 A的owner follow 项目 B的owner,则A & B有关联,关联权重0表示没有关联,1表示单向follow,2表示双向follow
【b】任意一个项目的owner star了项目A和B,则A & B有关联,关联权重有同时star这两个项目的owner数量决定。3.项目的外围贡献者(Contributors )不能反映项目间的技术关联。
1.初步筛选项目并爬取issue数据
2.网页数据预处理
Github api接口中的issue id和project id和后台数据库中的id没有联系。通过issues表单的repo_id和issue_id匹配爬虫数据,且一个issue可能有多个标签,将issue_id和label插入新表
issues_labels。
3.进一步筛选项目
最终得到1106332条bug,1107785条non-bug。
[b]统计项目带标签的issue数量及bug比率
错误记录:
1.Incorrect string value: '\xF0\x9F\x98\x84\xF0\x9F
对应UTF-8编码格式中的4字节编码。正常的汉字一般不会超过3个字节,这里出现4个字节实际上是它对应的是智能手机输入法中的表情。如果想存储4个字节的必须用utf8mb4类型。不而要使用utf8mb4类型,首先要保证Mysql版本要不低于 MySQL 5.5.3。
更改mysql表格字段编码格式,并且在python处理脚本中读取数据时也要设置为utf8mb4。
2.python解析网页数据时,ast.literal_eval()能将数据还原成它本身或者是能够转化成的数据类型。并且相较于eval(),会进行类型安全检查
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123456', db='ghtorrent_2017_5', charset='utf8mb4')
ALTER TABLE issues CHANGE body body MEDIUMTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL;