Bridge:自动挖掘生态系统规模的 API 更新映射和客户端更新实例
Bridge: Automatically Mining Ecosystem-Scale API Update Mappings and Client Update Instances
摘要
库更新通常需要使客户端代码适应 API 更改。识别遗留 API 和替换 API 之间关系的 API 更新映射、这些映射应用的版本转换以及捕获具体 API 调用更改的客户端更新实例对于开发和评估自动库更新技术至关重要。现有的图书馆演化数据集仅捕获此信息的子集,并且通常覆盖少数第三方图书馆。在本文中,我们提出了 Bridge,这是一个客户端驱动的框架,用于自动构建生态系统规模的库更新数据集,连接 API 更新映射、版本转换和客户端更新实例。 Bridge 首先从客户端依赖项更新提交中大规模挖掘候选更新实例,使用库端证据对其进行验证,然后从已验证的实例中派生 API 更新映射。这一设计将每个保留的映射建立在至少一个客户端更新实例中。在手动注释的 真值 数据集上,Bridge 在 Java 中实现了 91.6% 的精度和 88.7% 的召回率,在 Python 中实现了 90.1% 的精度和 64.0% 的召回率。应用于 WoC V3 时,Bridge 挖掘了 381,661 个 Java 和 277,259 个 Python 客户端更新实例,分别代表跨 2,557 个和 999 个库的 18,900 个和 4,456 个 API 更新映射。挖掘的映射表现出明显的长尾分布,其中大多数仅出现在少数客户端更新实例中。作为该数据集的一个应用,我们评估了四个 大语言模型 的替换 API 推荐,这是库更新的关键一步。 Java 的最佳推荐准确度仅为 37.1%,Python 的最佳推荐准确度仅为 44.4%,并且所有评估的模型在频繁观察到的映射上的表现明显优于仅在少数客户端更新实例中观察到的映射,这凸显了当前 LLM 在推荐长尾映射替换时面临的困难。