目录

CosFL 概览

项目简介

CosFL 是一种受语义代码搜索(Semantic Code Search, CS)启发的新型软件缺陷定位(Fault Localization, FL)方法。

CosFL 将故障定位任务视为一个两阶段过程:首先是 查询生成(query generation),用于生成自然语言查询,以描述存在问题的软件功能;其次是 可疑代码搜索(suspicious code search),该阶段使用代码搜索技术,从整个代码仓库中直接匹配可能存在缺陷的程序元素。

相关工作已发表于软件工程领域顶级期刊 TOSEM,论文名为 “Fault Localization from the Semantic Code Search Perspective”。

在 835 个真实缺陷上的实验结果表明,CosFL 显著优于其他方法,有望为缺陷定位技术的发展开辟新的方向。

从零开始运行 CosFL

第一步:安装基准测试集

我们在两个 Java 基准测试集上评估 CosFL,它们可以从以下地址安装:

Defects4J: https://github.com/rjust/defects4j

GrowingBugs: https://github.com/liuhuigmail/GrowingBugRepository

第二步:准备环境

你可以通过以下命令轻松安装所需的 Python 环境:

conda create -n CosFL python=3.9.18
conda activate CosFL
pip install -r requirements.txt

不要忘记安装 Java 1.8:

sudo apt-get install openjdk-8-jdk -y

然后,使用 BenchmarkMode 目录下的文件,以支持基准测试命令中的程序插桩。

最后,修改 Config 目录下的配置文件。你需要重点关注以下属性:

  • agent_lib:设置为 Java agent 的路径,即 lib/classtracer-1.0.jar
  • D4J_exec:设置为你自己的 Defects4J 执行文件路径
  • GB_exec:设置为你自己的 GrowingBugs 执行文件路径
  • api_key:设置为对应模型所需的 API key

第三步:运行 CosFL

现在,你可以直接运行 CosFL 来定位所有缺陷:

python run_all.py

如果只想定位单个缺陷,可以使用如下示例命令:

python run.py --config default.yaml --version d4j1.4.0 --project Chart --bugID 1 --subproj 

你可以在 projects.py 中查看所有缺陷的列表。

评估 CosFL

运行 CosFL 后,调试结果将被保存到 DebugResult 目录下。

若要评估 CosFL 的性能,只需运行:

python Evaluation/evaluate.py
关于

CosFL是一个基于语义代码搜索技术的新型缺陷自动定位系统,其将故障定位任务视为一个两步过程:首先生成查询,用于生成描述问题软件功能的自然语言查询;其次进行可疑代码搜索,利用多粒度代码搜索直接从整个代码库中匹配存在缺陷的程序元素。

3.3 MB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9 京公网安备 11010802047560号