CodeLens: 一个用于可视化代码表示的交互式工具
在软件工程领域,编程语言理解与表示(即代码表示学习)一直是一个备受关注和具有挑战性的任务,其旨在应用深度学习技术生成源代码特征的数值表示同时保持其语义,这些表示可用于促进后续与代码相关的任务。然而,AST(抽象语法树)作为一种基本的代码特征,在代码表示学习中广泛应用,但目前缺乏对 AST-based 代码表示如何促进后续代码相关任务的系统和定量评估。本文通过详细的实证研究首次探索了 AST-based 代码表示在促进后续代码相关任务方面的有效性,并比较了基于代码标记序列和基于 AST 的代码表示方法在三种常见类型的代码相关任务上的性能。令人惊讶的是,整体定量统计结果表明,与基于代码标记的代码表示方案相比,基于 AST 的代码表示方法在所有三个任务中的表现均较差。进一步的定量分析显示,基于 AST 的代码表示方法在所有三个任务的某些子样本中优于基于代码标记的代码表示方法。我们还进行了全面的实验,评估和揭示了 AST 解析 / 预处理 / 编码方法的选择对基于 AST 的代码表示和后续代码相关任务的影响。本研究为未来的研究人员提供了关于如何选择每个阶段的解决方案以充分利用 AST 的详细指导。
Dec, 2023
CV4Code 是一种针对源代码的紧凑而有效的计算机视觉方法,不需要词法分析或语法树解析的步骤,它将代码片段视为二维图像,并使用 ASCII 码点图像表示方法,利用这种方法生成源代码图像非常快速且无冗余,进一步使用卷积神经网络和 transformer 网络学习进行功能预测和检索,实验结果表明,该方法在处理源代码理解任务方面显著优于其他方法。
May, 2022
该研究介绍了一种将源代码表示为图像的新方法,可以将其直接输入深度学习算法,以实现漏洞预测,并在公共数据集上进行了性能评估,并与现有最先进解决方案进行比较。
May, 2021
研究报告探讨了现有的基于机器学习的方法,展示了不同网络安全任务和编程语言所使用的展示形式,并发现了基于图形的展示形式最受欢迎,Tokenizer 和 ASTs 是最受欢迎的展示形式,漏洞检测是最受欢迎的网络安全任务,C 语言是最多技术涵盖的编程语言,而基于序列的模型是最受欢迎的模型类型,支持向量机是最受欢迎的模型。
Mar, 2024
本文探讨了一种基于输入程序快照的源代码表示 ——Code2Snapshot,对其进行了多种变体的评估,并将其与利用输入程序丰富的语法和语义特征的最先进的表示方法进行了比较,研究表明,在代码概述和分类任务中,Code2Snapshot 的实用性相当于最先进的表示方法,这表明在某些任务中,神经模型可以仅依赖于输入程序的结构而提供高性能。
Nov, 2021
本文介绍了 IntelliCode Compose—— 一种通用的多语言代码自动完成工具,它可以预测任意类型的代码令牌序列,生成最多整行语法正确的代码。它利用了基于 1.2 亿行 Python、C#、JavaScript 和 TypeScript 编程语言源代码训练的最先进的生成式变换模型,在 Visual Studio Code IDE 和 Azure Notebook 中实现了按编辑时间完成建议要求的客户端树形缓存、高效的并行实现的波束搜索解码器和计算图优化。我们的最佳模型为 Python 编程语言提供了 86.7%的平均编辑相似度和 1.82 的困惑度。
May, 2020
NLP2Code 是一种用于代码块的内容辅助工具,旨在直接集成到源代码编辑器中,以提供内容辅助功能,消除开发人员需求和代码段元数据之间的词汇差距。
Jan, 2017
通过比较两个最先进模型 CodeBERT 和 CodeGraph 在两个基准数据集上的表现,本文论证了源代码克隆检测是一个图而非序列,并且基于图的方法在跨语言代码克隆检测上优于基于序列的方法。
Dec, 2023
本研究描述了一种在 JetBrains' IntelliJ 平台上构建的多标记代码补全功能,称为 Full Line Code Completion。该功能仅建议语法正确的代码,并在用户设备上完全本地工作,为用户提供更丰富的体验,同时快速、紧凑且安全。作者分享了一些满足开发限制的有用技术,并描述了离线和在线评估流程以帮助做出更好的决策。
May, 2024