通过合成与轻量级错误反馈进行输入修复
软件工程
2022-08-18 v1 编程语言
摘要
很多时候,输入数据表面上符合给定的输入格式,却无法被合规程序解析,例如由于人为错误或数据损坏。在这种情况下,数据工程师需要负责输入修复,即必须手动修复损坏数据使其遵循给定格式,从而能被合规程序处理。此类手动修复可能耗时且容易出错。特别是在没有输入规范(例如输入文法)或程序分析的情况下,输入修复具有挑战性。在这项工作中,我们展示了向解析器加入轻量级失败反馈(例如输入不完整)足以以最大程度贴近输入数据语义的方式修复任何损坏的输入数据。我们提出了一种方法(称为 FSYNTH),它利用轻量级错误反馈和输入合成来修复无效输入。FSYNTH 与文法无关,且不需要程序分析。给定一个合规程序和任意无效输入,FSYNTH 提供一组按修复与原输入距离排序的修复方案。我们使用四种知名输入格式(即 INI、TinyC、SExp 和 cJSON)在 806 个(真实世界)无效输入上评估了 FSYNTH。在我们的评估中,发现 FSYNTH 恢复了 91% 的有效输入数据。FSYNTH 在输入修复上也高效且有效:它在四分钟内修复了 77% 的无效输入。它比此前已知最佳方法 DDMax 有效性高出至多 35%。总体而言,我们的方法在可修复内容以及所提供的修复集合两方面都解决了 DDMax 的若干局限。
引用
@article{arxiv.2208.08235,
title = {Input Repair via Synthesis and Lightweight Error Feedback},
author = {Lukas Kirschner and Ezekiel Soremekun and Rahul Gopinath and Andreas Zeller},
journal= {arXiv preprint arXiv:2208.08235},
year = {2022}
}