基于示例的静态分析规则合成
软件工程
2022-04-20 v1 人工智能
计算机科学中的逻辑
编程语言
摘要
静态分析工具具有针对若干代码质量问题的规则,这些规则由专家手动创建。本文研究从示例中自动合成代码质量规则的问题。我们将规则合成问题表述为在代码的图表示上合成一阶逻辑公式。我们提出一种新的合成算法 RhoSynth,其基于整数线性规划的图对齐来识别规则所关注的代码元素。我们利用开发者所做的代码变更作为正负例来源来引导 RhoSynth。我们还处理了规则精化问题,即利用用户提供的额外示例对规则进行增量改进。我们通过合成超过 30 条 Java 代码质量规则来验证 RhoSynth。这些规则已作为某公司代码审查系统的一部分部署,基于实时代码审查中收集的开发者反馈,其精确率超过 75%。通过与近期基线方法的比较,我们表明当前最先进的程序合成方法无法合成其中大多数规则。
引用
@article{arxiv.2204.08643,
title = {Example-based Synthesis of Static Analysis Rules},
author = {Pranav Garg and Srinivasan Sengamedu SHS},
journal= {arXiv preprint arXiv:2204.08643},
year = {2022}
}