实用指南5步掌握Defects4J缺陷数据库的高效应用【免费下载链接】defects4jA Database of Real Faults and an Experimental Infrastructure to Enable Controlled Experiments in Software Engineering Research项目地址: https://gitcode.com/gh_mirrors/de/defects4jDefects4J是一个包含真实软件缺陷的数据库和实验基础设施旨在推动软件工程研究。它提供了854个可复现的bug包括10个已弃用bug来自17个开源项目如Apache Commons系列、Jackson和Jsoup等。本文将通过5个简单步骤帮助你快速掌握这个强大工具的使用方法。 步骤1环境准备与安装要开始使用Defects4J首先需要确保系统满足以下要求Java 11Git 1.9Subversion (svn) 1.8Perl 5.0.12cpanmPerl模块管理工具安装过程分为以下几步克隆仓库git clone https://gitcode.com/gh_mirrors/de/defects4j初始化项目cd defects4j cpanm --installdeps . ./init.sh注init.sh会下载项目仓库和外部库可能需要几分钟时间配置环境变量export PATH$PATH:path2defects4j/framework/bin将path2defects4j替换为实际克隆路径验证安装defects4j info -p Lang如果显示Apache Commons Lang项目的信息则安装成功。 步骤2探索项目与缺陷信息Defects4J提供了丰富的命令来查询项目和缺陷信息帮助你了解可用的资源。查看所有项目defects4j pids这将列出所有支持的项目标识符如Chart、Cli、Closure等。获取项目详情defects4j info -p Lang以Lang项目为例将显示该项目的活跃bug数量、bug ID范围等信息。查看特定缺陷详情defects4j info -p Lang -b 1这将展示Lang项目中第1个bug的详细信息包括提交哈希、触发测试等。导出项目元数据你可以使用query命令导出项目元数据到CSV文件defects4j query -p Chart -q report.id,report.url -o chart_bugs.csv这将导出Chart项目所有bug的报告ID和URL。️ 步骤3检出缺陷版本代码使用checkout命令可以获取特定项目的缺陷版本代码defects4j checkout -p 项目ID -v 版本 -w 工作目录例如检出Lang项目第1个bug的缺陷版本defects4j checkout -p Lang -v 1b -w /tmp/lang_1_buggy其中版本号中的b表示缺陷版本buggyf表示修复版本fixed。检出后你可以进入工作目录查看代码cd /tmp/lang_1_buggy 步骤4编译与测试缺陷代码在工作目录中你可以使用Defects4J命令编译代码并运行测试编译代码defects4j compile这将编译源代码和测试代码。运行测试defects4j test默认情况下这将运行所有测试。你也可以指定特定测试类或方法defects4j test -t org.apache.commons.lang.StringUtilsTest::testAbbreviate查看触发测试每个缺陷都有对应的触发测试即能暴露该缺陷的测试用例defects4j export -p tests.trigger这将列出能触发当前检出缺陷的测试方法。 步骤5高级分析功能Defects4J还提供了代码覆盖率分析和突变分析等高级功能帮助深入理解缺陷特性。代码覆盖率分析defects4j coverage这将生成代码覆盖率报告展示测试对代码的覆盖情况。突变分析defects4j mutation突变分析通过修改代码引入人工缺陷来评估测试集的质量帮助你了解测试是否能检测出这些人工缺陷。导出版本特定属性你可以导出各种版本特定的属性如修改的类、相关测试等# 导出修改的类 defects4j export -p classes.modified -o modified_classes.txt # 导出发触发测试 defects4j export -p tests.trigger -o trigger_tests.txt 使用技巧与最佳实践时区设置Defects4J在America/Los_Angeles时区生成和执行测试为确保一致性建议设置环境变量export TZAmerica/Los_Angeles并行执行测试对于大规模分析可以使用GNU parallel工具加速测试执行./jobs_cmd.pl ./test_verify_bugs.sh | parallel -j20 --progress查阅文档项目提供了详细的HTML文档可通过访问framework/doc目录下的脚本生成。查看测试脚本示例framework/test/目录包含了使用Defects4J的示例脚本可作为编写自定义脚本的参考。 资源与进一步学习官方文档项目根目录的README.md提供了完整的使用说明bug挖掘框架framework/bug-mining/目录包含了缺陷挖掘相关的工具和指南测试执行框架framework/bin/目录提供了测试生成和分析的脚本通过以上5个步骤你已经掌握了Defects4J的基本使用方法。这个强大的缺陷数据库可以帮助你进行软件测试、缺陷定位、自动程序修复等多种软件工程研究。无论是学术研究还是工业界应用Defects4J都能为你提供真实、可复现的缺陷数据助力软件质量提升。【免费下载链接】defects4jA Database of Real Faults and an Experimental Infrastructure to Enable Controlled Experiments in Software Engineering Research项目地址: https://gitcode.com/gh_mirrors/de/defects4j创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考