基于大语言模型的 AI 链针对静态类型部分代码的无监督控制流图生成
软件工程
2023-06-02 v1
摘要
控制流图(CFG)对于可视化、理解和分析程序行为至关重要。对于像 Java 这样的静态类型编程语言,开发者通过使用基于字节码的方法获取可编译代码的 CFG,并使用基于抽象语法树(AST)的方法获取部分不可编译代码的 CFG。然而,AST 构建过程中的显式语法错误以及不良编码实践引起的隐式语义错误可能导致 CFG 的行为丢失和偏差。为了解决这个问题,我们提出了一种新方法,利用预训练大语言模型(LLM)的容错和理解能力来生成 CFG。我们的方法包含一个四步思维链:结构层次提取、嵌套代码块提取、嵌套代码块的 CFG 生成,以及所有嵌套代码块 CFG 的融合。为了解决原始 CoT 单提示方法(即在单次生成中完成所有步骤)的局限性,这种方法可能导致行为难以控制和错误累积的“史诗级”提示,我们将 CoT 分解为具有明确子步骤的 AI 链。每个子步骤对应一个独立的 AI 单元,为每个单元分配有效的提示以与 LLM 交互来实现特定目的。我们的实验证实,我们的方法在节点和边覆盖率方面优于现有的 CFG 工具,特别是对于不完整或错误的代码。我们还进行了消融实验,并证实了 AI 链设计原则的有效性:分层任务分解、单元组合以及 AI 单元与非 AI 单元的混合。我们的工作为基于 LLM 构建基础软件工程工具(而非传统程序分析方法)开辟了新的可能性。
引用
@article{arxiv.2306.00757,
title = {AI Chain on Large Language Model for Unsupervised Control Flow Graph Generation for Statically-Typed Partial Code},
author = {Qing Huang and Zhou Zou and Zhenchang Xing and Zhenkang Zuo and Xiwei Xu and Qinghua Lu},
journal= {arXiv preprint arXiv:2306.00757},
year = {2023}
}