修改README
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 显著优于其他方法,有望为缺陷定位技术的发展开辟新的方向。
我们在两个 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 目录下的文件,以支持基准测试命令中的程序插桩。
BenchmarkMode
最后,修改 Config 目录下的配置文件。你需要重点关注以下属性:
Config
agent_lib
lib/classtracer-1.0.jar
D4J_exec
GB_exec
api_key
现在,你可以直接运行 CosFL 来定位所有缺陷:
python run_all.py
如果只想定位单个缺陷,可以使用如下示例命令:
python run.py --config default.yaml --version d4j1.4.0 --project Chart --bugID 1 --subproj
你可以在 projects.py 中查看所有缺陷的列表。
projects.py
运行 CosFL 后,调试结果将被保存到 DebugResult 目录下。
DebugResult
若要评估 CosFL 的性能,只需运行:
python Evaluation/evaluate.py
CosFL是一个基于语义代码搜索技术的新型缺陷自动定位系统,其将故障定位任务视为一个两步过程:首先生成查询,用于生成描述问题软件功能的自然语言查询;其次进行可疑代码搜索,利用多粒度代码搜索直接从整个代码库中匹配存在缺陷的程序元素。
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
项目简介
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 环境:
不要忘记安装 Java 1.8:
然后,使用
BenchmarkMode目录下的文件,以支持基准测试命令中的程序插桩。最后,修改
Config目录下的配置文件。你需要重点关注以下属性:agent_lib:设置为 Java agent 的路径,即lib/classtracer-1.0.jarD4J_exec:设置为你自己的 Defects4J 执行文件路径GB_exec:设置为你自己的 GrowingBugs 执行文件路径api_key:设置为对应模型所需的 API key第三步:运行 CosFL
现在,你可以直接运行 CosFL 来定位所有缺陷:
如果只想定位单个缺陷,可以使用如下示例命令:
你可以在
projects.py中查看所有缺陷的列表。评估 CosFL
运行 CosFL 后,调试结果将被保存到
DebugResult目录下。若要评估 CosFL 的性能,只需运行: