中文

COMEX:一种用于生成定制化源代码表示的工具

软件工程 2023-07-11 v1 人工智能

摘要

学习源代码的有效表示对于任何面向软件工程的机器学习(ML4SE,Machine Learning for Software Engineering)系统都至关重要。受自然语言处理启发,Codex 和 CodeGen 等大型语言模型(LLM)将代码视为通用文本序列,并在海量代码数据语料上训练,在若干软件工程(SE)任务上取得最先进性能。然而,与自然语言不同,合法源代码遵循由编程语言底层语法严格规定的结构与模式。当前 LLM 未利用源代码的这一特性,因为它们将代码当作 token 序列处理,忽视了可从代码视图(如控制流图(CFG)、数据流图(DFG)、抽象语法树(AST)等)提取的关键结构与语义属性。遗憾的是,为每种编程语言生成并集成代码视图的过程繁琐且耗时。为克服这一障碍,我们提出工具 COMEX——一个允许研究人员与开发者创建并组合多种代码视图的框架,这些视图可被机器学习(ML)模型用于各类 SE 任务。本工具的一些显著特性为:(i) 直接作用于源代码(无需可编译);(ii) 目前支持 Java 与 C#;(iii) 通过过程内与过程间分析,可同时分析方法级片段与程序级片段;(iv) 易于扩展至其他语言,因其构建于 tree-sitter(一个支持超 40 种语言的广泛使用的增量解析器)之上。我们相信这一易用的代码视图生成与定制工具将推动源代码表示学习方法与 ML4SE 的研究。工具:https://pypi.org/project/comex - GitHub:https://github.com/IBM/tree-sitter-codeviews - 演示:https://youtu.be/GER6U87FVbU

关键词

引用

@article{arxiv.2307.04693,
  title  = {COMEX: A Tool for Generating Customized Source Code Representations},
  author = {Debeshee Das and Noble Saji Mathews and Alex Mathai and Srikanth Tamilselvam and Kranthi Sedamaki and Sridhar Chimalakonda and Atul Kumar},
  journal= {arXiv preprint arXiv:2307.04693},
  year   = {2023}
}

备注

The paper has been accepted for publication at ASE 2023 (Tool Demonstrations Track)