SoliDiffy:面向 Solidity 智能合约的 AST 差分
软件工程
2025-03-20 v4 编程语言
摘要
结构化代码差分是通过抽象语法树(AST)比较代码的层级结构以捕获修改的行为。基于 AST 的源代码差分能够实现传统基于行的差分难以胜任的任务,如漏洞检测和自动修复。我们推出了 SoliDiffy,这是首个面向 Solidity 智能合约的 AST 差分工具,能够生成编辑脚本,利用插入、删除、更新、移动操作可靠地展示两个智能合约之间的结构差异。在对 353,262 对合约的评估中,SoliDiffy 达到了 96.1% 的差分成功率,超越了最先进水平,并生成了显著更短的编辑脚本。对 925 个真实提交的额外实验进一步确证了其相对于 Git 基于行的差分的优势。即使存在多处复杂的源代码修改,SoliDiffy 也能提供智能合约演化的准确表征。SoliDiffy 已在 https://github.com/mojtaba-eshghie/SoliDiffy 公开发布。
引用
@article{arxiv.2411.07718,
title = {SoliDiffy: AST Differencing for Solidity Smart Contracts},
author = {Mojtaba Eshghie and Viktor Åryd and Cyrille Artho and Martin Monperrus},
journal= {arXiv preprint arXiv:2411.07718},
year = {2025}
}