BugLocator 错误文件定位工具

工具介绍&入门

BugLocator(12年的) 下载地址参考文献站内导读

Zhou J, Zhang H, Lo D. Where should the bugs be fixed? more accurate information retrieval-based bug localization based on bug reports[C]//2012 34th International Conference on Software Engineering (ICSE). IEEE, 2012: 14-24.

要求JDK 1.6.7+,使用方法及示例:

java -jar BugLocator.jar [-options] 
-b	indicates the bug information file,the bug information file must be .xml file in the data folder.
-s	indicates the source code directory.
-a	indicates the alpha factor for combining vsmScore and simiScore
-o	indicates the result file,the format of result file is "bug id, relevant source code file,rank(start with 0),score".

java -jar BugLocator.jar -b E:\Data&Tool\data\SWTBugRepository.xml -s E:\Data&Tool\swt-3.1\src -a 0.2 -o E:\Data&Tool\output.txt

XML格式:

<bugrepository name="Name">
  <bug id="1" opendate="" fixdate="">
    <buginformation>
      <summary>Summary</summary>
      <description>Description</description>
    </buginformation>
    <fixedFiles>
      <file>Xxxx.Xxxx.Xxxx.java</file>
    </fixedFiles>
  </bug>
  ...
</bugrepository>

使用 Defects4J 的 Csv 项目测试,配置好环境后,输入:

defects4j query -p Csv -q "report.id,report.url,classes.modified" >> 保存的文件

1,CSV-75,https://issues.apache.org/jira/browse/CSV-75,"org.apache.commons.csv.ExtendedBufferedReader"
2,CSV-96,https://issues.apache.org/jira/browse/CSV-96,"org.apache.commons.csv.CSVRecord"
3,CSV-58,https://issues.apache.org/jira/browse/CSV-58,"org.apache.commons.csv.Lexer"
...
13,CSV-168,https://issues.apache.org/jira/browse/CSV-168,"org.apache.commons.csv.CSVFormat;org.apache.commons.csv.CSVPrinter"
14,CSV-171,https://issues.apache.org/jira/browse/CSV-171,"org.apache.commons.csv.CSVFormat"
15,CSV-219,https://issues.apache.org/jira/browse/CSV-219,"org.apache.commons.csv.CSVFormat"
16,CSV-224,https://issues.apache.org/jira/browse/CSV-224,"org.apache.commons.csv.CSVParser"

修复的文件 fixedFiles 找到了,进入对应网址找 Summary 和 Description,apache 的这个跟踪系统很方便:
在这里插入图片描述
按照 XML 格式整理好数据,同时将 Csv 项目 checkout 出来( 这里偷懒checkout的是最新一个错误版本Csv-16b,最好要 “版本” 与 “数据” 对应 )。然后执行 jar 包,生成:

1,org.apache.commons.csv.ExtendedBufferedReader.java,0,0.8 # 这个文件排第一,相似度0.8,优先检查
2,org.apache.commons.csv.CSVRecord.java,0,0.8
3,org.apache.commons.csv.Lexer.java,0,0.8
4,org.apache.commons.csv.CSVParser.java,0,0.8
5,org.apache.commons.csv.CSVPrinter.java,1,0.37643373
6,org.apache.commons.csv.CSVRecord.java,0,1.0
7,org.apache.commons.csv.CSVParser.java,2,0.61523604
8,org.apache.commons.csv.CSVFormat.java,2,0.6730713
9,org.apache.commons.csv.CSVRecord.java,0,1.0
10,org.apache.commons.csv.CSVPrinter.java,1,0.5764337
11,org.apache.commons.csv.CSVParser.java,2,0.5837127
12,org.apache.commons.csv.CSVFormat.java,2,0.5244822
13,org.apache.commons.csv.CSVFormat.java,0,0.8178425
13,org.apache.commons.csv.CSVPrinter.java,2,0.3912273 # 这个文件排第三,相似度只有0.39
14,org.apache.commons.csv.CSVFormat.java,0,0.85304934
15,org.apache.commons.csv.CSVFormat.java,0,0.98891234
16,org.apache.commons.csv.CSVParser.java,0,0.84326035
# Top-1为10

如果想针对一个查询生成所有的文件排名,就要将 src 中所有的 .java 文件放到 fixedFiles 里面。

Defects4J 项目

通过上节的命令可以获取项目错误报告地址(D4J中四种形式,个人认为错误报告不应当包含 patch,在收集过程中删除。对于回帖式的问题跟踪系统也只将提问者第一段作为错误报告):

  • https://issues.apache.org/jira/browse/<项目-编号>【apache】
  • https://sourceforge.net/p/<项目>/bugs/<编号>【sourceforge】
  • https://storage.googleapis.com/google-code-archive/v2/code.google.com/<项目>/issues/issue-<编号>.json【google】
  • https://github.com/<作者>/<项目>/issues/<编号>【github】

github
在这里插入图片描述
sourceforge
在这里插入图片描述
google
在这里插入图片描述
一些可能用到的:

  • 并行快速操作:放入Word,Ctrl+H 将 ^p 替换为空
  • Json 可以在这里直观解析 https://www.json.cn/

具体项目

流程:写个 Python 生成 XML 文件,然后写个 Shell 生成最终结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值