论文标题

跨语言程序分类的统一抽象语法树表示学习

Unified Abstract Syntax Tree Representation Learning for Cross-Language Program Classification

论文作者

Wang, Kesu, Yan, Meng, Zhang, He, Hu, Haibo

论文摘要

Program classification can be regarded as a high-level abstraction of code, laying a foundation for various tasks related to source code comprehension, and has a very wide range of applications in the field of software engineering, such as code clone detection, code smell classification, defects classification, etc. The cross-language program classification can realize code transfer in different programming languages, and can also promote cross-language code reuse, thereby helping developers to write code quickly and reduce the development time of code 转移。现有的大多数研究都集中在规范的语义学习上,而很少的研究则致力于跨语言任务。跨语言程序分类的主要挑战是如何提取不同编程语言的语义特征。为了应对这种困难,我们提出了一个统一的抽象语法树(即本文中的Uast)神经网络。详细说明,UAST的核心思想由两个统一的机制组成。首先,UAST通过统一捕获语义代码特征的AST遍历序列和类似图的AST结构来学习AST表示。其次,我们构建了一种称为统一词汇的机制,可以减少不同编程语言之间的特征差距,以便它可以实现跨语言程序分类的作用。此外,我们收集一个包含20,000个编程语言的文件的数据集,这些文件可用作跨语言程序分类任务的基准数据集。我们在两个数据集上进行了实验,结果表明,我们所提出的方法在四个评估指标(精度,召回,F1得分和准确性)方面优于最先进的基准。

Program classification can be regarded as a high-level abstraction of code, laying a foundation for various tasks related to source code comprehension, and has a very wide range of applications in the field of software engineering, such as code clone detection, code smell classification, defects classification, etc. The cross-language program classification can realize code transfer in different programming languages, and can also promote cross-language code reuse, thereby helping developers to write code quickly and reduce the development time of code transfer. Most of the existing studies focus on the semantic learning of the code, whilst few studies are devoted to cross-language tasks. The main challenge of cross-language program classification is how to extract semantic features of different programming languages. In order to cope with this difficulty, we propose a Unified Abstract Syntax Tree (namely UAST in this paper) neural network. In detail, the core idea of UAST consists of two unified mechanisms. First, UAST learns an AST representation by unifying the AST traversal sequence and graph-like AST structure for capturing semantic code features. Second, we construct a mechanism called unified vocabulary, which can reduce the feature gap between different programming languages, so it can achieve the role of cross-language program classification. Besides, we collect a dataset containing 20,000 files of five programming languages, which can be used as a benchmark dataset for the cross-language program classification task. We have done experiments on two datasets, and the results show that our proposed approach outperforms the state-of-the-art baselines in terms of four evaluation metrics (Precision, Recall, F1-score, and Accuracy).

扫码加入交流群

加入微信交流群

微信交流群二维码

扫码加入学术交流群,获取更多资源