api-evolution-data-corpus
收藏github2020-11-08 更新2024-05-31 收录
下载链接:
https://github.com/kjezek/api-evolution-data-corpus
下载链接
链接失效反馈官方服务:
资源简介:
该数据集包含模拟Java中所有可能的语法API变化的数据,用于评估工具的性能和进行实验。数据集包含两个版本的库,用于模拟API的演化,并提供了具体的结构和使用方法。
This dataset encompasses simulated data representing all potential syntactic API changes in Java, designed to evaluate tool performance and facilitate experimental research. It includes two versions of libraries to simulate API evolution, along with detailed structures and usage methodologies.
创建时间:
2016-07-14
原始信息汇总
数据集概述
本数据集模拟了Java中API的演化过程,包含两个版本的库,其中包含合成的“虚拟”API类,这些类在版本之间发生了演化。
数据集结构
- lib-v1 和 lib-v2:包含API示例及其在后续版本中的演化。每个目录包含数千个包,每个包模拟一个API变更,变更通过包名体现。
- client:包含一个简单的客户端应用程序,用于模拟API的使用。
数据集用途
- 用于评估工具在处理向后兼容性问题上的表现。
- 提供测试数据以进行基准测试。
数据集操作
- 通过运行
ant jar命令可以构建数据集,生成三个JAR文件:lib-v1.jar,lib-v2.jar和client.jar。 - 使用
./compatibility.sh脚本可以生成API不兼容性的CSV文件。 - 使用
./benchmark.sh脚本可以对第三方工具进行基准测试,结果存储在benchmark.csv文件中。
测试工具
- 包括Clirr, Japicmp, Japi checker, Japitools, Java API compliance checker, Jour, Revapi, Sigtest等工具。
测试结果
- 提供了各工具在不同API变更类型上的检测结果,以百分比形式展示。
搜集汇总
数据集介绍

构建方式
该数据集通过模拟Java API的演化过程构建而成,包含两个版本的库文件(lib-v1和lib-v2),每个版本中包含了数千个模拟API变更的包。每个包的名称反映了其对应的API变更类型。此外,数据集还提供了一个简单的客户端应用程序(client),用于模拟API的调用场景。通过Ant工具编译生成JAR文件,便于后续实验和工具测试。
特点
该数据集的核心特点在于其高度结构化的API变更模拟,涵盖了多种常见的API演化场景,如数据类型变更、访问修饰符调整、异常处理变化等。每个变更均以包为单位进行组织,便于分类和分析。数据集还提供了兼容性测试脚本(compatibility.sh)和基准测试脚本(benchmark.sh),能够自动生成CSV格式的结果文件,详细记录API变更的兼容性状态及工具检测效果。
使用方法
用户可以通过Ant工具编译数据集,生成lib-v1.jar、lib-v2.jar和client.jar文件。利用compatibility.sh脚本,可以测试API变更的源兼容性和二进制兼容性,并生成详细的CSV结果文件。benchmark.sh脚本则用于评估第三方工具对API变更的检测能力,结果同样以CSV格式存储。用户还可以通过扩展src目录中的内容或修改tools/run.sh脚本,自定义测试数据和工具集,以满足特定研究需求。
背景与挑战
背景概述
api-evolution-data-corpus数据集旨在模拟Java API的演化过程,为评估API向后兼容性工具的性能提供基准测试数据。该数据集由两个版本的库组成,分别包含数千个模拟API变化的包,每个包通过包名反映其变化。数据集的核心研究问题在于如何有效评估现有工具在检测API变化时的准确性和效率。通过提供结构化的测试数据和客户端应用程序,该数据集为研究人员和开发者提供了一个标准化的环境,用于验证和改进API兼容性分析工具。自创建以来,该数据集在软件工程领域,特别是在API维护和演化研究中,产生了广泛的影响。
当前挑战
api-evolution-data-corpus数据集面临的主要挑战包括两个方面。首先,在解决领域问题方面,API演化涉及多种复杂的变化类型,如访问修饰符的修改、数据类型的调整以及异常处理的变更等,这些变化可能导致源代码或二进制代码的不兼容性。如何准确检测和分类这些变化,是现有工具面临的核心挑战。其次,在构建数据集的过程中,确保模拟的API变化具有足够的多样性和代表性,同时保持数据的一致性和可重复性,是另一大挑战。此外,扩展数据集以涵盖更多类型的API变化,并确保其与真实世界API演化的相关性,也是未来需要解决的问题。
常用场景
经典使用场景
在软件工程领域,API的向后兼容性是一个关键问题。`api-evolution-data-corpus`数据集通过模拟Java API的演变,提供了一个标准化的测试环境。研究人员和开发者可以利用该数据集中的两个版本库(lib-v1和lib-v2)来评估不同工具在检测API变化时的性能。通过运行客户端应用程序,用户可以模拟API的实际使用情况,从而验证工具在识别源兼容性和二进制兼容性方面的准确性。
衍生相关工作
基于`api-evolution-data-corpus`数据集,许多经典研究工作得以展开。例如,Clirr、Japicmp和Japi Checker等工具的性能评估均依赖于该数据集提供的测试数据。这些工具通过分析数据集中的API变化,进一步优化了其检测算法。此外,该数据集还激发了更多关于API兼容性自动化检测的研究,推动了相关工具的功能扩展和性能提升。
数据集最近研究
最新研究方向
在软件工程领域,API的向后兼容性一直是开发者和维护者面临的重要挑战。api-evolution-data-corpus数据集的推出,为评估和比较不同工具在检测API变化方面的性能提供了标准化的测试数据。该数据集通过模拟Java库的API演变,生成了两个版本的库及其客户端应用程序,涵盖了数千个模拟API变化的包。近年来,研究者们利用该数据集对多种API兼容性检测工具进行了基准测试,包括Clirr、Japicmp、Japi checker等。这些研究不仅揭示了各工具在不同类型API变化检测中的表现差异,还为工具开发者提供了改进方向。此外,随着微服务架构和持续集成/持续部署(CI/CD)的普及,API兼容性检测的重要性日益凸显,该数据集的研究成果对提升软件系统的稳定性和可维护性具有深远影响。
以上内容由遇见数据集搜集并总结生成



