Generating Question Titles for Stack Overflow from Mined Code Snippets
Stack Overflow已被软件开发人员大量使用,作为通过互联网从同行中寻求编程相关信息的流行方式。Stack Overflow社区建议用户在创建问题时提供相关代码片段,以帮助其他人更好地理解并提供帮助。以前的研究表明,这些问题中有相当一部分是低质量的,对Stack Overflow中的其他潜在专家没有吸引力。这些问得不好的问题不太可能得到有用的答案,并阻碍了整个知识生成和共享过程。考虑到在SO中引入低质量问题的原因之一是,许多开发人员可能无法澄清和总结他们所呈现的代码片段背后的关键问题,因为他们缺乏与问题相关的知识和术语,和/或他们的写作技巧很差,在这项研究中,我们提出了一种方法来帮助开发人员编写高-通过使用深度序列到序列学习方法为代码片段自动生成问题标题来生成高质量的问题。我们的方法是完全数据驱动的,并使用一个注意力机制来执行更好的内容选择,一个复制机制来处理罕见的单词问题和覆盖机制,以消除单词重复问题。我们在各种程序设计语言(例如,Python,Java,JavaScript,C#和SQL)和我们的实验结果表明,我们的方法显着优于几个国家的最先进的基线在自动和人工评估。我们已经发布了我们的代码和数据集,以方便其他研究人员验证他们的想法并激发后续工作。
2020-07-13 cs.SE
No Man is an Island: Towards Fully Automatic Programming by Code Search, Code Generation and Program Repair
本文提出一个自动编程框架,首次整合代码搜索、代码生成和程序修复,利用大型语言模型提升生成代码质量,并在编程问题上取得62.53%的提升。
2024-09-05 cs.SE
DepRes: A Tool for Resolving Fully Qualified Names and Their Dependencies
重用其他程序员在Q&A论坛上共享的代码片段(例如,StackOverflow)是软件开发人员遵循的常见做法。但是,如果缺少关于借用代码段中标识符的完全限定名(FullyQualified Name,简称CQN)的足够信息,则会导致严重的编译错误。程序员要么必须手动搜索标识符的正确序列号,这是一个繁琐且容易出错的过程,要么使用开发的工具来自动识别正确的序列号。尽管研究人员努力自动识别代码片段中的CSN,但目前的方法在实践中的准确性很低。此外,虽然这些工具专注于解析代码片段中标识符的CNON,但它们留下了找到正确的第三方库(即,依赖性)实现未解决的CSDN。使用不正确的依赖项或依赖项的不正确版本可能会导致编译器无法检测到的语义错误。因此,它可能会在运行时造成严重损害。在本文中,我们将介绍DepRes,这是一个利用基于草图的方法来解析基于Java的代码片段中的CDN的工具,并为每个CDN推荐正确的依赖关系。DepRes工具的源代码、文档以及演示视频可从其代码库https://github.com/SoftwareDesignLab/DepRes-Tool获得。
2021-08-02 cs.SE
Code2API: A Tool for Generating Reusable APIs from Stack Overflow Code Snippets
针对Stack Overflow代码片段无法直接测试复用的问题,提出Chrome扩展Code2API,利用LLMs的思维链推理和少样本学习自动将其转换为可调用API,评估显示其显著优于基于规则的方法。
2025-04-19 cs.SE
Towards Summarizing Code Snippets Using Pre-Trained Transformers
本研究针对细粒度代码片段摘要生成数据稀缺问题,通过构建注释数据集、训练多任务注释分类关联模型,构建大规模带文档代码片段数据集并训练摘要模型,性能优于现有基线方法。
2024-02-01 cs.SE
A Language-Agnostic Model for Semantic Source Code Labeling
Two Six Labs, LLC.(Two Six Labs有限责任公司);Sophos(Sophos公司)
近年来,由于可用源代码的快速扩展,代码搜索和理解变得更加困难。当前的工具缺乏一种方法来大规模地标记任意代码,同时保持新的程序设计语言、库和功能的最新表示。对源代码的全面标记使用户能够搜索感兴趣的文档并对其内容进行深入了解。我们使用Stack Overflow代码片段及其标签来训练一个与语言无关的深度卷积神经网络,以自动预测源代码文档的语义标签。在Stack Overflow代码片段上,我们展示了在4,508个标签的长尾列表上ROC下的平均面积为0.957。我们还在从Github检索的各种未标记源代码文档上手动验证了模型输出,我们获得了86.6%的top-1准确率。这强烈表明该模型成功地将其知识从Stack Overflow片段转移到任意源代码文档。
2019-06-03 cs.CL cs.LG cs.SE
COMCAT: Leveraging Human Judgment to Improve Automatic Documentation and Summarization
COMCAT利用专家引导上下文增强大语言模型,自动生成代码注释,显著提升开发者代码理解能力,优于ChatGPT生成注释,并发布相关数据集。
2024-07-18 cs.SE
I Know What You Are Searching For: Code Snippet Recommendation from Stack Overflow Posts
Stack Overflow已经被软件开发人员大量使用来寻找与编程相关的信息。越来越多的开发人员使用社区问答论坛(如Stack Overflow)来搜索如何完成特定编码任务的代码示例。这通常被认为比从源文档,教程或完整的工作示例中工作更有效。然而,由于这些在线问答论坛的复杂性以及它们包含的大量信息,开发人员可能会被大量的可用信息所淹没。这使得很难找到和/或甚至知道最相关的代码示例来满足他们的需求。为了缓解这个问题,在这项工作中,我们提出了一个查询驱动的代码推荐工具,名为Que 2Code,它可以从Stack Overflow帖子中识别用户查询的最佳代码片段。我们的方法有两个主要阶段:(i)语义等价的问题检索和(ii)最佳代码片段推荐。为了评估我们提出的模型的性能,我们进行了一个大规模的实验,以评估语义等价的问题检索任务和最佳代码片段推荐任务的有效性分别在Python和Java数据集堆栈溢出。我们还进行了一项人类研究,以衡量现实世界的开发人员如何看待我们的模型生成的结果。自动和人工评估结果都证明了我们模型的良好性能,我们已经发布了我们的代码和数据来帮助其他研究人员。
2022-10-28 cs.SE
Towards Better Answers: Automated Stack Overflow Post Updating
针对Stack Overflow评论常被忽略、问题代码片段难以及时修正的现状,研究提出Soup框架,通过有效评论-编辑预测和自动帖子更新两项任务实现帖子自动更新,实验效果优于基准,且真实环境提交的50条编辑中有21条被平台维护者采纳。
2024-08-17 cs.SE
GENCNIPPET: Automated Generation of Code Snippets for Supporting Programming Questions
GENCNIPPET是一个与Stack Overflow集成的工具,利用微调的Llama-3模型自动生成缺失的代码片段,以帮助编程问题获得及时解决方案。
2025-04-22 cs.SE
From Absolute to Relative Code Comprehensibility Prediction
William & Mary(威廉与玛丽学院);New Jersey Institute of Technology(新泽理工学院)
该研究针对现有绝对代码可理解性预测模型表现不佳的问题,提出相对可理解性预测任务,通过实验证明其在多数配置下优于基线模型,且受从业者青睐。
2026-08-07 cs.SE
Is this Snippet Written by ChatGPT? An Empirical Study with a CodeBERT-Based Classifier
本文提出基于 CodeBERT 的 GPTSniffer 方法,用于检测 ChatGPT 生成的代码片段,并通过实证研究证明其分类准确率优于 GPTZero 和 OpenAI Text Classifier,同时分析了训练数据相似性与成对代码片段上下文对分类性能的提升作用。
2023-08-07 cs.SE
NCQ: Code reuse support for node.js developers
代码重用是软件开发的重要组成部分。代码重用实践的采用在Node.js开发人员中尤其普遍。Node.js包管理器NPM索引了超过100万个包,开发人员经常寻找包来解决编程任务。由于软件包数量众多,选择合适的软件包既困难又耗时。为了提高通过第三方包大量重用代码的开发人员的生产力,我们提出了节点代码查询(NCQ),一个读取-评估-打印-循环环境,允许开发人员1)使用自然语言查询搜索NPM包,2)搜索与这些包相关的代码片段,3)自动纠正这些代码片段中的错误,4)快速设置新的环境来测试这些片段,以及5)在搜索和编辑模式之间转换。在两项共有20名参与者的用户研究中,我们发现参与者使用NCQ比基线方法更快地开始编程并更快地完成任务,并且他们喜欢搜索代码片段和包等功能。我们的研究结果表明,NCQ使Node.js开发人员在重用代码方面更有效率。
2023-01-02 cs.SE
Evaluating Code Summarization Techniques: A New Metric and an Empirical Characterization
本文针对代码摘要评估中现有自动度量依赖参考摘要的缺陷,提出一种基于对比学习的新度量,以捕捉生成摘要与代码语义的一致性,并通过实证验证其能更有效表征开发人员评估。
2023-12-24 cs.SE
Text Classification for Task-based Source Code Related Questions
有一个关键的需求是为开发人员的小任务自动生成代码。像StackOverflow这样的网站提供了一种简单的方法,通过提供小片段的解决方案,为开发人员想要编码的任何任务问题提供完整的答案。自然语言处理,特别是语音识别系统在解决和处理这些任务方面非常有帮助。在本文中,我们开发了一个双重深度学习模型:Seq2Seq和一个二元分类器,它接受意图(自然语言)和Python中的代码片段。我们在Seq2Seq模型中训练意图和代码话语,其中我们决定比较来自编码器的隐藏层嵌入用于表示意图的效果,并且类似地,使用解码器的隐藏层嵌入用于代码序列。然后,我们结合这两个嵌入,然后训练一个简单的二进制神经网络分类器模型,用于预测如果意图是正确回答的预测代码序列从seq2seq模型。我们发现,隐藏状态层的嵌入执行略好于常规的标准嵌入从构造的词汇表。除了StaQC数据库(由简单的基于任务代码片段的对组成)之外,我们还在CoNaLa数据集上进行了测试。我们根据经验确定,与使用seq2seq模型中的隐藏状态上下文向量相比,在Python中为代码片段使用额外的预训练嵌入较少基于上下文。
2021-10-31 cs.CL cs.LG cs.SE
LLMSecEval: A Dataset of Natural Language Prompts for Security Evaluations
Institute of Software Security(软件安全研究所);Hamburg University of Technology(汉堡工业大学)
像Codex这样的大语言模型(LLM)是执行代码完成和代码生成任务的强大工具,因为它们是在来自公开源的数十亿行代码上训练的。此外,这些模型能够通过从公共GitHub存储库学习语言和编程实践,从自然语言(NL)描述中生成代码片段。尽管LLM承诺轻松地部署软件应用程序的NL驱动,但它们生成的代码的安全性尚未得到广泛的调查或记录。在这项工作中,我们提出了LLMSecEval,一个包含150个NL提示的数据集,可以用来评估这些模型的安全性能。这些提示是对MITRE的前25个常见弱点枚举(CWE)排名中列出的各种安全漏洞的代码片段的NL描述。我们数据集中的每个提示都带有一个安全的实现示例,以便于与LLM生成的代码进行比较评估。作为一个实际的应用程序,我们展示了如何LLMSecEval可以用于评估自动生成的NL描述的片段的安全性。
2023-03-16 cs.IR cs.LG cs.SE
Code4ML: a Large-scale Dataset of annotated Machine Learning Code
程序代码作为数据源在数据科学社区越来越受欢迎。在这些资产上训练的模型的可能应用范围从数据降维的分类到自动代码生成。然而,如果没有注释,可以应用的方法的数量是有限的。为了解决缺乏注释数据集的问题,我们提出了Code4ML语料库。它包含代码片段、任务摘要、竞赛和数据集描述,可从Kaggle公开获取,Kaggle是举办数据科学竞赛的领先平台。该语料库由大约250万个ML代码片段组成,这些代码片段是从大约10万个字节的笔记本中收集的。人类评估员通过专门为此目的设计的用户友好界面对片段的代表性部分进行注释。Code4ML数据集可以通过数据驱动的方法帮助解决许多软件工程或数据科学挑战。例如,它可以帮助语义代码分类,代码自动完成,以及用自然语言指定的ML任务的代码生成。
2022-10-28 cs.SE
Automated Snippet-Alignment Data Augmentation for Code Translation
本文提出利用大语言模型自动生成片段对齐数据,并结合两阶段训练策略增强代码翻译模型,在TransCoder-test上最高提升pass@k达3.78%。
2025-10-16 cs.AI cs.SE
Can We Generate Shellcodes via Natural Language? An Empirical Study
University of Naples Federico II(那不勒斯费德里科二世大学);University of North Carolina at Charlotte(北卡罗来纳大学夏洛特分校)
编写软件漏洞是攻击性安全分析人员调查和防止攻击的重要实践。特别是,shellcode是特别耗时和技术挑战,因为它们是用汇编语言编写的。在这项工作中,我们解决了自动生成shellcode的任务,纯粹从自然语言的描述开始,提出了一种基于神经机器翻译(NMT)的方法。然后,我们使用一个新的数据集(Shellcode_IA32),其中包括3,200个汇编代码片段的真实Linux/x86外壳代码从公共数据库,使用自然语言注释的实证研究。此外,我们提出了新的指标来评估NMT在生成shellcodes的准确性。实证分析表明,NMT可以生成汇编代码片段的自然语言具有较高的准确性,在许多情况下,可以生成完整的shellcode没有错误。
2022-02-08 cs.LG cs.SE
PATCH: Empowering Large Language Model with Programmer-Intent Guidance and Collaborative-Behavior Simulation for Automatic Bug Fixing
针对现有大语言模型(LLMs)自动漏洞修复方法忽视协作性、仅以漏洞代码为输入的局限,提出分阶段框架PATCH,通过补充依赖上下文与意图信息、模拟程序员协作的四阶段任务流程,在BFP基准上性能优于现有LLMs。
2025-02-16 cs.SE
Automatic Program Repair with OpenAI's Codex: Evaluating QuixBugs
OpenAI的Codex是一个在大型代码语料库上训练的类似GPT-3的模型,已经成为学术界内外的头条新闻。给定用户提供的简短描述,它能够合成在大多数情况下语法和语义上有效的代码段。在这项工作中,我们要调查法典是否能够本地化和修复错误,在自动程序修复领域的中心感兴趣的任务。我们的初始评估使用多语言菜Bugs基准测试(Python和Java中有40个bug)。我们发现,尽管没有接受过APR培训,Codex是令人惊讶的有效,并与最近的最先进的技术竞争。我们的研究结果还表明,Codex在修复Python方面比Java稍微成功一些。
2021-11-06 cs.SE
Retrieve and Refine: Exemplar-based Neural Comment Generation
Peking University(北京大学);Monash University(莫纳什大学)
代码注释生成是软件自动开发领域的一项重要任务,其目的是自动生成源代码的自然语言描述。传统的注释生成方法使用手工制作的模板或信息检索(IR)技术来生成源代码摘要。近年来,基于神经网络的方法利用广受好评的编码器-解码器深度学习框架从大规模并行代码语料库中学习注释生成模式,取得了令人印象深刻的结果。然而,这些新兴的方法仅将代码相关信息作为输入。软件重用在软件开发过程中很常见,这意味着相似代码片段的注释有助于注释生成。受基于IR和基于模板的方法的启发,本文提出了一种神经注释生成方法,其中我们使用相似代码片段的现有注释作为范例来指导注释生成。具体来说,给定一段代码,我们首先使用IR技术来检索类似的代码片段,并将其注释视为范例。然后,我们设计了一种新的seq 2seq神经网络,它以给定的代码,其AST,其类似的代码,其范例作为输入,并利用来自范例的信息,以协助在目标评论生成的基础上的源代码和类似的代码之间的语义相似性。我们评估我们的方法上的一个大规模的Java语料库,其中包含约2 M的样本,实验结果表明,我们的模型优于国家的最先进的方法的大幅利润。
2020-10-09 cs.AI cs.SE
APIContext2Com: Code Comment Generation by Incorporating Pre-Defined API Documentation
University of British Columbia Okanagan(不列颠哥伦比亚大学奥肯那根分校)
代码注释对理解软件程序有很大的帮助,也可以帮助开发人员节省大量的软件维护时间。代码注释生成的目的是自动预测给定代码片段的自然语言中的注释。一些作品调查的影响,整合外部知识的质量生成的评论。在这项研究中,我们提出了一个解决方案,即APIContext 2Com,通过将预定义的应用程序编程接口(API)上下文,以提高生成的评论的有效性。API上下文包括在代码片段中使用的预定义API的定义和描述。由于详细的API信息表达了代码段的功能,因此它有助于更好地生成代码摘要。我们引入了一个seq-2-seq编码器-解码器神经网络模型,该模型具有不同的多个编码器集合,以有效地将不同的输入转换为目标评论。还开发了一个排名机制来排除非信息性的API,以便我们可以过滤掉不相关的API。我们使用CodeSearchNet的Java数据集来评估我们的方法。结果表明,该模型对BLEU 1、BLEU 2、BLEU 3、BLEU 4、METEOR、ROUGE-L的最佳基线分别提高了1.88(8.24%)、2.16(17.58%)、1.38(18.3%)、0.73(14.17%)、1.58(14.98%)和1.9(6.92%)。人类评估和消融研究证实了生成的评论的质量以及架构和排名API的效果。
2023-03-03 cs.CL cs.LG cs.SE
Low-level Comments auto-generation for Solidity Smart Contracts
背景:区块链平台上的去中心化应用通过智能合约实现。然而,缺乏编程知识的参与者往往难以阅读智能合约源代码,这导致潜在的安全风险和参与障碍。目的:我们的目标是将智能合约源代码翻译成自然语言描述,以帮助人们更好地理解、操作和学习智能合约。方法:本文提出了一种基于抽象语法树和形式语法的Solidity智能合约自动翻译工具SolcTrans。我们调查了3,000个智能合约,并确定了相应区块链术语的词性。其中,我们进一步过滤出没有详细注释的合同片段,留下811个片段来评估SolcTrans的翻译质量。结果如下:实验结果表明,即使是一个小的语料库,SolcTrans可以实现类似的性能,国家的最先进的代码注释生成模型的其他程序设计语言。此外,SolcTrans在处理不同长度和gas消耗的代码片段时具有一致的性能。结论:SolcTrans能够正确解释Solidity代码并自动将其转换为可理解的英文文本。我们将发布我们的工具和数据集,以支持相关领域的复制和进一步研究。
2022-01-08 cs.PL cs.SE
Automatic Code Summarization via ChatGPT: How Far Are We?
Nanjing University(南京大学);Nanyang Technological University(南洋理工大学);University of New South Wales(新南威尔士大学)
本文评估了ChatGPT在CSN-Python数据集上的自动代码摘要表现,发现其在BLEU和ROUGE-L指标上显著劣于NCS、CodeBERT和CodeT5等SOTA模型,并探讨了其优缺点及未来挑战。
2023-05-22 cs.AI cs.SE
Personalized Code Readability Assessment: Are We There Yet?
本文研究个性化代码可读性评估,采用少样本学习的大语言模型,发现其效果不如片段级特征模型,并揭示现有数据集存在评估矛盾,呼吁构建更可靠的数据集。
2025-03-10 cs.SE
Vulnerability-Hunter: An Adaptive Feature Perception Attention Network for Smart Contract Vulnerabilities
针对智能合约漏洞检测中预定义规则适应性差的问题,本文提出AFPNet,通过动态权重特征感知模块自动提取关键代码片段,并结合关系感知注意力机制学习片段依赖,在多个大规模数据集上显著提升了F1-score。
2024-07-07 cs.CR cs.SE
ESALE: Enhancing Code-Summary Alignment Learning for Source Code Summarization
State Key Laboratory for Novel Software Technology, Nanjing University(南京大学现代软件技术国家重点实验室);Software Institute, Nanjing University(南京大学软件学院);College of Computing and Data Science, Nanyang Technological University(南洋理工大学计算与数据科学学院);Tencent Inc.(腾讯公司)
本文提出 ESALE,通过 ULM、MLM 和 AWP 三个以摘要为中心的多任务增强代码-摘要对齐学习,并在四个数据集上显著提升代码摘要性能。
2024-07-01 cs.AI cs.SE
SkCoder: A Sketch-based Approach for Automatic Code Generation
本文提出基于草图的代码生成方法SkCoder,通过检索相似代码并提取草图再编辑成目标代码,在多个数据集上显著优于现有基线并提升多种模型性能。
2023-09-07 cs.SE
An Extractive-and-Abstractive Framework for Source Code Summarization
State Key Laboratory for Novel Software Technology, Nanjing University(南京大学计算机软件新技术国家重点实验室);Purdue University(普渡大学)
针对现有代码摘要方法难以兼顾事实准确性与自然度的问题,提出抽取-生成式框架EACS,结合抽取模块提取关键语句与生成模块并行输入生成摘要,在多语言数据集上全面超越现有最优方法。
2023-11-04 cs.AI cs.SE
Evaluation of Contrastive Learning with Various Code Representations for Code Clone Detection
Swiss Federal Institute of Technology (EPFL)(瑞士联邦理工学院(EPFL));JetBrains Research(JetBrains研究院)
代码克隆是实现类似功能的代码段对。克隆检测是源代码自动理解的一个基本分支,在重构推荐、剽窃检测和代码摘要等方面有着广泛的应用。克隆检测的一个特别有趣的情况是语义克隆的检测,即,具有相同功能但在实现上显著不同的代码片段。检测语义克隆的一种有前途的方法是对比学习(CL),这是计算机视觉中流行的机器学习范例,但尚未普遍用于代码处理。我们的工作旨在评估最流行的CL算法结合三个源代码表示两个任务。第一个任务是代码克隆检测,我们在包含104个算法实现的POJ-104数据集上进行评估。第二个任务是剽窃检测。为了评估这个任务的模型,我们引入了CodeTransformator,一个转换源代码的工具。我们使用它来创建一个数据集,该数据集模仿基于竞争性编程解决方案的剽窃代码。我们为这两项任务训练了九个模型,并将它们与六种现有方法进行了比较,包括传统工具和现代预训练神经模型。我们的评估结果表明,提出的模型在每个任务中执行diligence,但基于图的模型的性能通常高于其他模型。在CL算法中,Simplified和SwAV导致更好的结果,而Moco是最鲁棒的方法。我们的代码和训练模型可以在https://doi.org/10.5281/zenodo.6360627,https://doi.org/10.5281/zenodo.5596345上找到。
2022-06-17 cs.LG cs.SE
API2Com: On the Improvement of Automatically Generated Code Comments Using API Documentations
University of British Columbia(英属哥伦比亚大学)
代码注释可以帮助程序理解,并被认为是帮助开发人员进行软件维护的重要工件。然而,注释大多缺失或过时,特别是在复杂的软件项目中。作为一个结果,几个自动评论生成模型的开发作为一个解决方案。最近的模型探索了外部知识资源(如统一建模语言类图)的集成,以改进生成的注释。在本文中,我们提出了API2Com,一个模型,利用应用程序编程接口文档(API文档)作为知识资源的评论生成。API接口包含了更详细的方法描述,因此可以在生成的注释中提供更好的上下文。在我们的模型中,API树与代码片段和抽象树一起使用。我们将该模型应用于包含超过130,000个方法的大型Java数据集,并使用Transformer和基于RNN的架构对其进行评估。有趣的是,当使用API接口时,性能的提高可以忽略不计。因此,我们运行不同的实验来推理结果。对于只包含一个API的方法,添加API翻译平均将结果提高4% BLEU分数(BLEU分数是机器翻译中使用的自动评估指标)。然而,随着方法中使用的API数量的增加,由于输入中使用的文档很长,模型生成注释的性能会降低。我们的研究结果证实,API接口可以在生成更好的评论是有用的,但是,需要新的技术来确定最翔实的方法,而不是同时使用所有的文档。
2021-03-19 cs.CL cs.LG cs.SE
Developer-Intent Driven Code Comment Generation
现有的自动代码注释生成器主要集中于为给定的代码片段生成功能的一般描述,而不考虑开发者的意图。然而,在现实世界的实践中,注释是复杂的,其通常包含反映开发者的各种意图的信息,例如,功能总结、设计原理、实现细节、代码属性等。为了弥合自动代码注释生成和实际注释实践之间的差距,我们定义了基于意图驱动的代码注释生成,它可以为具有不同意图的相同源代码生成意图感知注释。为了解决这个具有挑战性的任务,我们提出了DOME,一种利用意图引导的选择性注意力来明确地从源代码中选择意图相关信息的方法,并产生反映不同意图的各种评论。我们的方法在两个真实的Java数据集上进行了评估,实验结果表明,我们的方法优于最先进的基线。人工评估也证实了在实际使用中应用DOME的巨大潜力,使开发人员能够根据自己的需求有效地注释代码。
2023-02-14 cs.SE
Automatic Extraction of Security-Rich Dataflow Diagrams for Microservice Applications written in Java
针对 Java 微服务应用,提出通过解析源码与配置、迭代滚雪球发现关键词并结合多类检测自动生成富安全 DFD 的工具化方法,在17个开源应用上达到93%精确率和85%召回率。
2023-04-25 cs.SE
Automatic Comment Generation via Multi-Pass Deliberation
Institute of Software, Chinese Academy of Sciences(中国科学院软件研究所);University of Chinese Academy of Sciences(中国科学院大学);York University(约克大学)
协商是人类日常生活中一种普遍而自然的行为。比如写论文或文章的时候,我们通常会先写草稿,然后反复打磨,直到满意为止。鉴于这样一个人类的认知过程中,我们提出了DECOM,这是一个多遍审议框架自动评论生成。DECOM包括多个审议模型和一个评估模型。给定一个代码片段,我们首先从代码中提取关键字,并从预定义的语料库中检索类似的代码片段。然后,我们将检索到的代码的注释作为初稿,并将其与代码和关键字一起输入到DECOM中,以开始迭代审议过程。在每次审议中,审议模型都会对草案进行润色并生成新的评论。评估模型测量新生成的评论的质量,以确定是否结束迭代过程。当迭代过程终止时,最佳生成的评论将被选为目标评论。我们的方法在Java(87K)和Python(108K)的两个真实世界的数据集上进行了评估,实验结果表明,我们的方法优于最先进的基线。一项人类评估研究也证实了DECOM生成的评论往往更具可读性,信息量更大,更有用。
2022-09-14 cs.AI cs.SE
A Vulnerability Code Intent Summary Dataset
本文提出大规模多视角代码意图摘要数据集 BADS,通过收集漏洞代码与 AI 生成代码、LLM 自动标注和人工复核,提供功能摘要与安全意图摘要,以支持代码安全分析研究。
2025-04-11 cs.SE
Improving Automatic Source Code Summarization via Deep Reinforcement Learning
Zhejiang University(浙江大学);Shenzhen Institutes of Advanced Technology, Chinese Academy of Sciences(中国科学院深圳先进技术研究院);University of Technology Sydney(悉尼科技大学);University of Illinois at Chicago(伊利诺伊大学芝加哥分校);Tsinghua University(清华大学)
代码摘要提供了对代码所执行功能的高级自然语言描述,有利于软件维护、代码分类和检索。据我们所知,大多数最先进的方法遵循编码器-解码器框架,其将代码编码到隐藏空间中,然后将其解码到自然语言空间中,具有两个主要缺点:a)它们的编码器只考虑代码的顺序内容,忽略了对于代码摘要任务也至关重要的树结构,b)它们的解码器通常被训练为通过最大化下一个地面实况词与前一个地面实况词的可能性来预测下一个词。但是,预计将在测试时从头开始生成整个序列。这种差异可能导致\textit{exposure bias}问题,使学习的解码器次优。在本文中,我们将抽象语法树结构以及代码片段的顺序内容纳入深度强化学习框架(即,演员-评论家网络)。演员网络提供了根据当前状态预测下一个词的信心。另一方面,评论家网络评估当前状态的所有可能扩展的奖励值,并可以为探索提供全局指导。我们采用BLEU指标组成的优势奖励训练两个网络。在真实数据集上的综合实验表明,与一些最先进的方法相比,我们提出的模型是有效的。
2018-11-17 cs.CL cs.LG cs.SE
EditSum: A Retrieve-and-Edit Framework for Source Code Summarization
Peking University(北京大学);Zhejiang University(浙江大学);Monash University(莫纳什大学)
本文提出名为 EditSum 的检索与编辑框架,通过检索相似代码片段作为原型摘要并自动编辑以结合模式与语义信息,显著提升了源代码摘要的关键词预测准确性和信息量。
2023-09-07 cs.CL cs.SE
ArchCode: Incorporating Software Requirements in Code Generation with Large Language Models
Seoul National University(首尔大学);SNU-LG AI Research Center(首尔大学-LG人工智能研究中心)
本文提出ARCHCODE框架,通过上下文学习从文本描述中组织并推断软件需求,生成代码和定制测试用例,并引入HumanEval-NFR基准,显著提升LLMs在功能性与非功能性需求上的代码生成表现。
2024-08-02 cs.AI cs.CL cs.SE
Natural Language-Focused Software Engineering via Code-Documentation Equivalence
CISPA Helmholtz Center for Information Security(CISPA 亥姆霍兹信息安全中心);Zhejiang University(浙江大学)
提出文档-代码等价性概念,通过自动生成等价文档的方法(Documentary)提升代码理解与编辑任务中LLM的准确性,实验显示准确率提升12.8-24.5%。
2026-06-23 cs.SE
Source Code Recommender Systems: The Practitioners' Perspective
源代码的自动生成一直是软件工程研究领域的一个重要课题。已经提出了几种技术来加速新代码的编写。例如,代码完成技术可以向开发人员推荐他们可能键入的接下来的几个令牌,而基于检索的方法可以建议与手头任务相关的代码片段。此外,深度学习已用于从自然语言描述开始自动生成代码语句。虽然这一领域的研究非常活跃,但还没有研究调查代码推荐系统的用户(即,软件开发者实际上需要这些工具。我们提出了一项研究,涉及80名软件开发人员,他们认为重要的代码推荐系统的特点进行调查。我们的研究的输出是一个分类的70个“需求”,应考虑在设计代码推荐系统。例如,开发人员希望推荐的代码使用与正在开发的代码相同的编码风格。此外,代码编译器“知道”开发人员的知识(例如,他们过去已经使用的框架/库是什么),并且能够基于这种知识定制建议,这将受到从业者的赞赏。我们研究的分类输出为代码分析师指出了一系列未来的研究方向。
2023-02-08 cs.SE
Reverse Engineering User Stories from Code using Large Language Models
Queen's University(皇后大学)
本研究探讨了利用大型语言模型从代码中自动逆向生成用户故事,发现提示设计显著影响效果,且小模型在少量示例下可媲美大模型。
2025-09-23 cs.AI cs.SE
Are Human Rules Necessary? Generating Reusable APIs with CoT Reasoning and In-Context Learning
本文提出 Code2API,利用思维链推理和少样本上下文学习自动将 Stack Overflow 代码片段转化为可复用 API,无需训练或人工规则,在参数与返回值识别上显著超越 APIzator,并验证了跨语言泛化能力。
2024-05-06 cs.SE
An Empirical Study of Retrieval-Augmented Code Generation: Challenges and Opportunities
本研究实证评估了检索增强框架对代码生成的影响,发现其能提升预训练模型性能,并推荐BM25和顺序集成融合等高效利用方式,同时探讨了性能与成本的权衡。
2025-01-23 cs.SE
Free Lunch for Testing: Fuzzing Deep-Learning Libraries from Open Source
深度学习(DL)系统可以让我们的生活变得更加轻松,因此越来越受到学术界和工业界的关注。同时,DL系统中的错误可能是灾难性的,甚至可能在安全关键应用中威胁到人类生命。迄今为止,大量的研究工作一直致力于测试DL模型。然而,有趣的是,测试底层DL库的工作仍然有限,这些库是构建、优化和运行DL模型的基础。一个潜在的原因是,底层DL库的测试生成可能相当具有挑战性,因为它们的公共API主要在Python中公开,由于动态类型,甚至很难自动确定API输入参数类型。在本文中,我们提出了FreeFuzz,第一种通过从开源中挖掘来模糊DL库的方法。更具体地说,FreeFuzz从三个不同的来源获得代码/模型:1)来自库文档的代码片段,2)库开发人员测试,以及3)野生的DL模型。然后,FreeFuzz自动运行所有收集的代码/模型,并使用插装来跟踪每个覆盖的API的动态信息,包括调用期间每个参数的类型和值,以及输入/输出张量的形状。最后,FreeFuzz将利用跟踪的动态信息对每个覆盖的API执行模糊测试。在PyTorch和TensorFlow这两个最流行的DL库上对FreeFuzz进行的广泛研究表明,FreeFuzz能够自动跟踪模糊1158个流行API的有效动态信息,比最先进的LEMON多9倍,开销比LEMON低3.5倍。到目前为止,FreeFuzz已经检测到PyTorch和TensorFlow的49个bug…
2022-02-25 cs.SE
CoCoSum: Contextual Code Summarization with Multi-Relational Graph Neural Network
源代码摘要是对代码片段的简短自然语言描述,可帮助开发人员更好地理解和维护源代码。为了减轻手动编写摘要的负担,自动代码摘要方面的工作激增。然而,大多数当代方法主要利用所概括的方法的边界内的信息(即,本地上下文),并忽略可能有助于代码摘要的更广泛的上下文。本文研究了两种全局上下文,即类内上下文和类间上下文,并提出了CoCoSUM:基于多关系图神经网络的上下文代码摘要模型。CoCoSUM首先将类名作为类内上下文来生成类语义嵌入。然后,相关的统一建模语言(UML)类图提取类间上下文,并编码到类关系嵌入使用一种新的多关系图神经网络(MRGNN)。类语义嵌入和类关系嵌入,以及来自代码令牌编码器和AST编码器的输出,被传递到配备有两级注意力机制的解码器,以生成高质量的、上下文感知的代码摘要。我们进行了大量的实验来评估我们的方法,并将其与其他自动代码摘要模型进行比较。实验结果表明,CoCoSUM是有效的,优于国家的最先进的方法。我们的源代码和实验数据在补充材料中提供,并将公开提供。
2021-07-05 cs.SE
Utilizing Precise and Complete Code Context to Guide LLM in Automatic False Positive Mitigation
提出LLM4FPM框架,通过eCPG-Slicer提取精确行级代码上下文和FARF算法线性识别相关文件,指导轻量级LLM实现高效低成本的自动误报缓解,在Juliet和D2A数据集上表现优异。
2025-05-31 cs.SE
Action Word Prediction for Neural Source Code Summarization
源代码摘要是创建源代码的简短、自然语言描述的任务。代码摘要是许多软件文档(如JavaBean)的主干,其中非常简短的注释(如“添加客户对象”)可以帮助程序员快速理解代码片段。近年来,基于神经网络的代码自动摘要方法得到了迅速的发展,成为一个很有价值的研究目标。然而,正如我们将在本文中展示的那样,好的摘要的产生依赖于这些摘要中的动作词的产生:如果“删除”被替换为“添加”,则上述示例的含义将完全改变。“在本文中,我们主张特别强调动作词预测,将其作为实现更好代码摘要的重要垫脚石问题-当前技术试图预测动作词以及整个摘要,但动作词预测本身相当困难。我们展示了代码摘要问题的价值,探索了当前基线的性能,并为未来的研究提供了建议。
2021-01-07 cs.SE
No Need to Lift a Finger Anymore? Assessing the Quality of Code Generation by ChatGPT
本研究通过多语言算法题和安全场景,从正确性、复杂度、安全性及多轮修复能力维度系统评估ChatGPT的代码生成质量,揭示其潜在问题,为改进AI代码生成技术奠基。
2024-04-13 cs.SE
From API to NLI: A New Interface for Library Reuse
开发人员经常重用现有库中的API来实现某些功能。然而,学习API是困难的,因为它们的规模和复杂性。在本文中,我们设计了一个抽象的框架NLI2Code,以减轻重用过程。在该框架下,用户可以使用高级的自动生成的NLI(自然语言接口)而不是详细的API元素来重用库功能。该框架由三个组件组成:一个功能特征提取器,以自然语言的形式总结经常使用的库函数,一个代码模式挖掘器,为每个功能特征提供一个代码模板,和一个合成器,以完成代码模式到良好类型的片段。从用户的角度来看,NLI2Code下的重用任务从选择功能特性开始,我们的框架将指导用户合成所需的解决方案。我们将框架实例化为重用Java库的工具。评估表明,我们的工具可以生成一个高质量的自然语言界面,并节省了一半的编码时间为新人解决现实世界的编程任务。
2020-07-07 cs.SE
RePaCA: Leveraging Reasoning Large Language Models for Static Automated Patch Correctness Assessment
Universidad de Alcalá(阿尔卡拉大学)
RePaCA是利用推理型大语言模型的静态APCA技术,经强化学习微调后在Defects4J测试集上达83.1%准确率,泛化能力优于现有方法,可准确识别过拟合补丁并提升可解释性。
2026-08-03 cs.AI cs.SE
Kajal: Extracting Grammar of a Source Code Using Large Language Models
University of Nebraska-Lincoln(内布拉斯加大学林肯分校)
针对手动提取DSL语法耗时易错的问题,提出Kajal方法,通过提示工程、少样本学习和反馈迭代让LLM自动推断语法,实验显示少样本下准确率60%,为自动化语法提取提供了可行方案。
2024-12-12 cs.AI cs.SE
RACK: Code Search in the IDE using Crowdsourced Knowledge
传统的代码搜索引擎通常不能很好地执行自然语言查询,因为它们主要应用关键字匹配。因此,这些引擎需要精心设计的查询,其中包含有关代码搜索编程API的信息。不幸的是,现有的研究表明,准备一个有效的查询代码搜索是既具有挑战性和耗时的开发人员。在本文中,我们提出了一种新的代码搜索工具-RACK-返回相关的源代码为一个给定的代码搜索查询写在自然语言文本。该工具首先通过从Stack Overflow的众包知识中挖掘关键字-API关联来将查询转换为相关API类的列表,然后将重新定义的查询应用于GitHub代码搜索API以收集相关结果。一旦提交了与编程任务相关的查询,该工具就会自动从数千个开源项目中挖掘相关的代码片段,并在开发人员的编程环境(IDE)的上下文中将其显示为排名列表。工具页:http://www.usask.ca/~masud.rahman/rack
2018-07-12 cs.SE
Code to Comment Translation: A Comparative Study on Model Effectiveness & Errors
George Mason University(乔治梅森大学)
自动源代码摘要是一个流行的软件工程研究主题,其中采用机器翻译模型将代码片段"翻译"成相关的自然语言描述。对这些模型的大多数评估都是使用基于参考的自动度量进行的。然而,由于程序设计语言和自然语言之间的语义差距相对较大,我们认为,这条线的研究将受益于定性调查的各种错误模式,目前国家的最先进的模型。因此,在这项工作中,我们进行了定量和定性比较最近提出的三个源代码摘要模型。在我们的定量评估中,我们比较了基于平滑BLEU-4、METEOR和ROUGE-L机器翻译指标的模型,在我们的定性评估中,我们对模型与地面实况字幕相比时最常见的错误进行了手动开放编码。我们的调查揭示了基于度量的性能和模型预测误差之间的关系的新见解,该关系基于经验得出的误差分类,可用于推动未来的研究工作
2021-06-15 cs.AI cs.CL cs.LG