SWIM: Synthesizing What I Mean
现代编程框架都带有大型库,具有不同的应用程序,例如匹配正则表达式,解析XML文件和发送电子邮件。程序员经常使用Google和Bing等搜索引擎来了解现有的API。在本文中,我们描述了SWIM,一个工具,它建议代码片段给出API相关的自然语言查询,如“生成md5哈希码”。我们使用来自Bing搜索引擎的点击数据将用户查询转换为感兴趣的API。然后,基于从开源代码库中学习的模式,我们合成了描述这些API使用的惯用代码。我们引入\emph{structured call sequences}来捕获API使用模式。结构化调用序列是方法调用序列的一般形式,使用if分支和while循环来表示条件和重复的API使用模式,并且易于提取和合成。我们使用Bing收到的30个常见的C#API相关查询来评估SWIM。对于70%的查询,第一个建议的片段是相关的解决方案,并且相关的解决方案存在于所有基准查询的前10个结果中。工作流的在线部分也非常响应,平均每个片段1.5秒。
2016-02-13 cs.SE
V2: Fast Detection of Configuration Drift in Python
代码片段很普遍,但很难重用,因为它们通常缺乏相应的环境配置。大多数都不是主动维护的,随着时间的推移,代码片段会过时,从而导致最新可能的配置和代码片段之间出现漂移。最近的工作已经将验证和检测过期代码片段的问题确定为代码重用的最重要考虑因素。然而,确定一个片段是否正确,但只是过时,是一个不平凡的任务。在最好的情况下,破坏性的更改都有很好的文档记录,允许开发人员手动确定代码段何时包含过时的API用法。在最坏的情况下,确定是否以及何时进行了破坏性更改需要对以前的依赖项版本进行详尽的搜索。我们提出了V2,这是一种通过检测配置漂移的离散实例来确定代码片段是否过时的策略,其中代码片段使用的API已经发生了重大变化。配置漂移的每个实例根据验证期间遇到的故障和配置补丁进行分类,配置补丁由依赖版本更改组成,用于修复底层故障。V2使用反馈导向搜索来探索代码片段的可能配置空间,减少了需要验证的潜在环境配置的数量。当运行在之前研究的公共Python片段语料库上时,V2识别出248个配置漂移实例。
2019-09-13 cs.SE
WebAPIRec: Recommending Web APIs to Software Projects via Personalized Ranking
School of Information Systems, Singapore Management University(新加坡管理大学信息系统学院)
应用程序编程接口(API)为开发人员提供了大量的功能,可以重用,而无需重新发明轮子。根据项目需求确定适当的API对于项目的成功至关重要,因为许多功能可以重用以实现更快的开发。然而,大量的API往往会阻碍开发人员快速找到合适的API的能力。在这种情况下,我们提出了一种新的自动化方法,称为WebAPIRec,它将项目配置文件作为输入,并输出可用于实现项目的{web} API的排名列表。在其核心,WebAPIRec采用了个性化的排名模型,对特定于(个性化)项目的Web API进行排名。基于{web} API使用的历史数据,WebAPIRec学习了一个模型,该模型最大限度地减少了web API的错误排序,即,当使用的{web} API的排名低于未使用的(或尚未使用的)web API时。我们已经在一个数据集上评估了我们的方法,该数据集包括来自ProgrammableWeb的9,883个Web API和4,315个Web应用程序项目,结果令人鼓舞。对于84.0%的项目,WebAPIRec能够成功返回正确的API,这些API用于实现前5名的项目。这比ProgrammableWeb的本机搜索功能提供的建议要好得多。WebAPIRec也优于McMillan等人。的应用搜索引擎和基于流行度的推荐。
2017-05-01 cs.AI cs.IR cs.SE
ARIST: An Effective API Argument Recommendation Approach
Faculty of Information Technology, VNU University of Engineering and Technology(越南国立大学工程技术大学信息技术学院)
针对现有API辅助技术极少关注参数推荐的问题,本文提出结合程序分析、语言模型与专用特征的ARIST方法,在多类参数推荐任务上显著优于现有基线与最优方法。
2023-06-11 cs.AI cs.SE
Plot2API: Recommending Graphic API from Plot via Semantic Parsing Guided Neural Network
Chongqing University(重庆大学);Pengcheng Laboratory(鹏城实验室);Zhejiang University(浙江大学);Monash University(莫纳什大学)
基于绘图的图形API推荐(Plot2API)是一个未被研究但有意义的问题,它在软件工程和数据可视化方面有几个重要的应用,如初学者的绘图指导、图形API相关性分析和绘图代码转换。Plot2API是一项非常具有挑战性的任务,因为每个图通常与多个API相关联,并且由于参数的不同设置,同一API绘制的图形的外观可能会非常不同。此外,不同原料药的样品也极不平衡。考虑到Plot2API中缺乏技术,我们提出了一种新的深度多任务学习方法,称为语义解析引导神经网络(SPGNN),它将Plot2API问题转化为多标签图像分类和图像语义解析任务。在SPGNN中,最近先进的卷积神经网络(CNN)命名为EfficientNet被用作API推荐的骨干网络。同时,在特征学习中引入语义解析模块,充分利用语义相关的视觉信息,剔除可能混淆基于视觉信息的API推荐的外观相关视觉信息。此外,最近的数据增强技术称为随机擦除也被用于缓解API类别的不平衡。我们使用Stack Overflow中的图形API来收集图,并发布了三个新的Plot2API数据集,对应于R和Python程序设计语言的图形API,用于评估Plot2API技术的有效性。大量的实验结果不仅证明了我们的方法优于最近的深度学习基线,而且还显示了我们的方法在图形API推荐中的实用性。
2021-04-02 cs.AI cs.CV cs.SE
Recommending Stack Overflow Posts for Fixing Runtime Exceptions using Failure Scenario Matching
使用在线Q&A论坛(如Stack Overflow(SO))来指导解决程序错误以及其他开发问题,在现代软件开发实践中很常见。异常(RE)是SO上积极讨论的一类重要的bug。在这项工作中,我们提出了一种技术和原型工具,称为MAESTRO,可以自动推荐一个SO后,是最相关的开发人员的代码中给定的Java RE。MAESTRO将开发人员代码中的异常生成程序场景与SO帖子中讨论的场景进行比较,并返回最接近的匹配帖子。为了有效地提取和比较异常场景,MAESTRO首先使用帖子中的答案代码片段来暗示帖子的问题代码片段中的一个行子集负责异常,然后将这些行与开发人员的代码进行比较,以各自的抽象程序图(APG)表示。APG是一个简化和抽象的衍生抽象语法树,在这项工作中提出的,它允许一个有效的比较体现在高层次的程序结构的功能,同时丢弃许多低层次的语法或语义差异。我们评估MAESTRO的基准测试的Java RE的78个实例中提取的前500名Java项目在GitHub上,并表明,MAESTRO可以返回一个高度相关或有点相关的SO后对应的异常实例在71%的情况下,相比之下,相关的职位返回只有8% - 44%的情况下,由四个竞争对手的工具基于最先进的技术。我们还进行了用户体验研究MAESTRO与10个Java开发人员,其中参与者判断MAESTRO报告高度相关或有点相关的职位在80%的情况下。在某些情况下,该帖子…
2020-09-21 cs.SE
Aroma: Code Recommendation via Structural Code Search
程序员编写的代码通常与在某处编写的现有代码相似。一个可以帮助程序员搜索类似代码的工具将是非常有用的。这样的工具可以帮助程序员扩展部分编写的代码片段以完全实现必要的功能,帮助发现其他程序员通常包括的部分代码的扩展,帮助交叉检查其他程序员编写的类似代码,或者帮助添加额外的代码来修复常见的错误和错误。我们提出了Aroma,这是一种通过结构化代码搜索进行代码推荐的工具和技术。Aroma索引了一个包含数千个开源项目的巨大代码语料库,将部分代码片段作为输入,搜索语料库中包含部分代码片段的方法体,并对搜索结果进行聚类和交叉,以推荐一小部分简洁的代码片段,这些代码片段既包含查询片段,又作为语料库中几个方法的一部分出现。我们对Aroma进行了评估,包括从语料库中随机选择的2000个查询,以及从Stack Overflow(一个流行的代码讨论网站)获得的64个代码片段查询。我们为4种不同的语言实现了Aroma,并为Aroma开发了IDE插件。此外,我们进行了一项研究,要求12名程序员使用Aroma完成编程任务,并收集他们的反馈。我们的研究结果表明,Aroma能够有效地检索和推荐相关的代码片段。
2019-10-17 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
iJTyper: An Iterative Type Inference Framework for Java by Integrating Constraint- and Statistically-based Methods
School of Software Engineering Sun Yat-sen University China;Sun Yat-sen University
针对现有Java代码片段类型推断方法召回率或精确率低的问题,提出融合约束与统计方法的迭代框架iJTyper,通过迭代上下文扩充与知识库缩减提升推断效果,在多个基线和数据集上表现更优。
2024-02-15 cs.SE
SOTorrent: Studying the Origin, Evolution, and Usage of Stack Overflow Code Snippets
Stack Overflow(SO)是最受软件开发人员欢迎的问答网站,提供了大量可复制的代码片段。像其他软件工件一样,SO上的代码会随着时间的推移而演变,例如,当bug被修复或API被更新到最新版本时。为了能够分析SO上的代码和周围的文本是如何演变的,我们构建了SOTorrent,这是一个基于官方SO数据转储的开放数据集。SOTorrent提供了对整个帖子以及单个文本和代码块级别的SO内容的版本历史的访问。它通过聚合来自周围文本块和评论的URL,以及通过收集来自GitHub文件的引用来将SO帖子中的代码片段连接到其他平台。我们的愿景是,研究人员将使用SOTorrent来调查和了解SO上代码的演变和维护,以及它与其他平台(如GitHub)的关系。
2019-03-09 cs.SE
FACOS: Finding API Relevant Contents on Stack Overflow with Semantic and Syntactic Analysis
Singapore Management University(新加坡管理大学);University of British Columbia(不列颠哥伦比亚大学)
收集API示例、用法和与特定API方法相关的提及,而不是在Stack Overflow等场所进行讨论,这不是一个简单的问题。它需要努力正确识别讨论是否涉及开发人员/工具正在搜索的API方法。由描述API方法在讨论中的参与的文本段落和包含API调用的代码片段组成的线程的内容可以引用给定的API方法。利用这一观察,我们开发FACOS,上下文特定的算法来捕获的段落和代码片段的语义和语法信息的讨论。FACOS将基于语法单词的分数与来自CodeBERT微调的预测模型的分数相结合。FACOS在F1得分方面比最先进的方法高出13.9%。
2021-11-14 cs.AI cs.PL 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
On the Use of Context in Recommending Exception Handling Code Examples
研究表明,软件开发人员经常滥用异常处理功能或使用效率低下,这样的做法可能会导致一个正在进行的软件项目的脆弱,不安全和非鲁棒的应用系统。在本文中,我们提出了一种上下文感知的代码推荐方法,该方法推荐来自GitHub上托管的许多流行开源代码库的异常处理代码示例。它收集利用GitHub代码搜索API的代码示例,然后通过利用结构(即,基于图的)和词汇特征,而且还包括示例中的异常处理程序的启发式质量度量。4,400个代码示例和65个异常处理场景的实验以及与四种现有方法的比较表明,该方法是非常有前途的。
2018-07-06 cs.SE
Collective Intelligence for Smarter API Recommendations in Python
软件开发人员在编写程序时广泛使用库和框架的应用程序编程接口(API)。在这种情况下,代码完成弹出窗口中提供的建议可以帮助开发人员选择所需的方法。然而,这些工具推荐的候选人名单往往很大,顺序混乱,有时甚至不完整。最近已经做了大量的工作来提高这些代码完成结果的相关性,特别是对于像Java这样的静态类型语言。然而,这些建议的技术依赖于对象的静态类型,因此不适用于像Python这样的动态类型语言。在本文中,我们提出了PyReco,一个智能的代码完成系统的Python,它使用挖掘的API使用从开源存储库的结果排序的基础上的相关性,而不是传统的字母顺序。为了推荐与工作上下文相关的建议,使用最近邻分类器来识别所有提取的使用模式中的最佳匹配使用。为了评估我们的系统的有效性,代码完成查询自动提取项目和测试定量使用十倍交叉验证技术。评估表明,我们的方法优于顺序的API推荐系统推荐的API标准,以及,第三方库。
2016-08-31 cs.SE
From API to NLI: A New Interface for Library Reuse
开发人员经常重用现有库中的API来实现某些功能。然而,学习API是困难的,因为它们的规模和复杂性。在本文中,我们设计了一个抽象的框架NLI2Code,以减轻重用过程。在该框架下,用户可以使用高级的自动生成的NLI(自然语言接口)而不是详细的API元素来重用库功能。该框架由三个组件组成:一个功能特征提取器,以自然语言的形式总结经常使用的库函数,一个代码模式挖掘器,为每个功能特征提供一个代码模板,和一个合成器,以完成代码模式到良好类型的片段。从用户的角度来看,NLI2Code下的重用任务从选择功能特性开始,我们的框架将指导用户合成所需的解决方案。我们将框架实例化为重用Java库的工具。评估表明,我们的工具可以生成一个高质量的自然语言界面,并节省了一半的编码时间为新人解决现实世界的编程任务。
2020-07-07 cs.SE
Enhancing Software Development Process (ESDP) using Data Mining Integrated Environment
如今,重用现有的应用程序编程接口(API)、类库和框架已成为快速软件开发的基本需求。软件开发人员经常通过调用相应的API或库来重用它。但在这样做的时候,开发人员在搜索适当的代码段时通常会遇到不同的问题。在大多数情况下,API和库是复杂的,没有良好的结构或良好的文档记录。在线搜索引擎的搜索耗时长,但匹配的相关性不高,表示性不好。为了根据查询获得建议,我们可以使用搜索引擎或代码搜索引擎在线找到该片段。在某些情况下,依赖于数据库的搜索和基于远程Web服务器的挖掘存储库搜索给开发人员带来了问题。在代码搜索引擎上查找API建议通常会处理超大文件,最终会减慢软件开发过程。我们在整个工作过程中一直在寻找解决办法,并努力取得更好的结果。作为替代行动,我们已经实施了一个系统,我们称之为增强软件开发过程(ESDP)工具,该工具能够为开发人员提供一个高效的集成环境,更好地抽象和表示搜索结果,程序员需要从源代码中派生。我们还构建并应用了一个基于XML的丰富存储库,以从客户端的挖掘存储库中获得推荐,而无需与依赖于互联网的服务器进行交互,以节省复杂性和时间。我们使用基于图的表示为程序员或开发人员提供最相关的代码框架或映射。
2020-05-06 cs.SE
Data-Driven Vulnerability Detection and Repair in Java Code
Java平台提供了各种API来促进安全编码。然而,对于缺乏网络安全培训的开发人员来说,正确使用安全API通常具有挑战性。先前的工作表明,许多开发人员滥用安全API;这种滥用可能会将漏洞引入软件,使安全保护无效,并向黑客提供安全漏洞。为了消除这种API相关的漏洞,本文提出了SEADER -我们的新方法,检测和修复安全API滥用。给定一个示例性的不安全代码片段及其安全对应代码片段,SEADER会比较这些代码片段并进行数据依赖性分析,以推断安全API滥用模板和相应的修复操作。根据推断的信息,给定一个程序,SEADER执行过程间静态分析,以搜索任何安全API滥用,并针对这些漏洞提出定制的修复建议。为了评估SEADER,我们将其应用于25个<不安全,安全>代码对,SEADER成功地推断出18个独特的API误用模板和相关修复。通过这些漏洞修复模式,我们进一步将SEADER应用于10个开源项目,这些项目总共包含32个已知漏洞。我们的实验表明,SEADER检测漏洞的准确率为100%,召回率为84%,准确率为91%。此外,我们将SEADER应用于100个Apache开源项目,并检测到988个漏洞; SEADER始终正确地定制修复建议。根据SEADER的输出,我们提交了60个pull requests。截至目前,已有18个项目的开发商对SEADER的建议给予了积极的反馈。我们的研究结果表明,SEADE…
2021-02-13 cs.CR cs.SE
A Systematic Evaluation of Large Code Models in API Suggestion: When, Which, and How
本文系统评估了大型代码模型在API建议任务中的能力,构建了涵盖176个API的基准,并针对何时使用、哪个使用和如何使用三个场景进行了全面分析。
2024-09-20 cs.SE
Helping Software Developers through Offline Repository Based API Searching in Data MiningIntegrated Environment
软件开发变化如此之快。如果能够通过对开发人员的指导来加快软件开发的进程,将是非常有益的。在开发过程中给开发人员提供适当的指导和准确的建议,可以减少软件开发费用,也可以节省开发人员宝贵的时间。有很多方法可以加速软件开发过程。这可以通过代码辅助工具来完成,这些工具通过从应用程序编程接口(API)的特定存储库中推荐相关项目来帮助开发人员。一些方法是基于在线搜索,由于请求和响应延迟,因为它必须处理服务器中的超大文件,因此具有一些缺点。开发人员通常使用以前完成的资源以及库或框架来生成相关的代码片段,这些代码片段由API的引用存储库提供。开发人员发现很难选择合适的方法,因为有成千上万的方法,其中一些没有正确的文档。在本文中,我们提出了一个概念及其相应的框架,以指导开发人员从离线挖掘的存储库中建议相关的API方法。从我们所做的调查,我们可以说,我们的方法比一些现有的方法工作得更好。
2020-06-21 cs.SE
Automating API Documentation with LLMs: A BERTopic Approach
École de Technologie Supérieure(高等技术学院)
针对官方API文档冗长复杂的问题,提出利用BERTopic从360万条Stack Overflow帖子中提取主题并生成摘要,用户研究显示该方法提升了开发者生产力。
2025-09-06 cs.LG cs.SE
Recommending Comprehensive Solutions for Programming Tasks by Mining Crowd Knowledge
开发人员经常在Web上搜索相关的代码示例以完成编程任务。不幸的是,他们面临两个主要问题。首先,由于他们的查询(任务描述)和与解决方案相关联的信息之间的词汇差距,搜索受到损害。其次,检索到的解决方案可能不全面,即,代码段可能会缺少简洁的解释。这些问题使得开发人员浏览数十个文档,以便综合出合适的解决方案。为了解决这两个问题,我们提出了CROKAGE(人群知识答案生成器),一个工具,需要描述的编程任务(查询),并提供了一个全面的解决方案的任务。我们的解决方案不仅包含相关的代码示例,还包含简洁的解释。我们提出的方法扩展了任务描述与相关的API类从堆栈溢出Q&A线程,然后减轻词汇差距的问题。此外,我们对最高质量的答案进行自然语言处理,然后返回包含代码示例和代码解释的编程解决方案,这与以前的研究不同。我们使用48个编程查询来评估我们的方法,并表明它的性能优于六个基线,包括统计上显著的优势。此外,我们对29名开发人员使用24个任务(查询)进行的评估证实了CROKAGE在建议代码示例的相关性,代码解释的好处和整体解决方案质量(代码+解释)方面优于最先进的工具。
2019-03-20 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
APIRO: A Framework for Automated Security Tools API Recommendation
安全部署、自动化和响应(SOAR)平台集成并协调各种安全工具,以加速安全运营中心(SOC)的运营活动。SOAR平台中安全工具的集成主要是使用API、插件和脚本手动完成的。SOC团队需要浏览不同安全工具的API调用,以找到合适的API来定义或更新事件响应操作。分析具有不同API格式和表示结构的各种类型的API文档涉及重大挑战,例如数据可用性、数据异构性和语义变化,以自动识别特定于特定任务的安全工具API。鉴于这些挑战可能对SOC团队有效和高效地处理安全事件的能力产生负面影响,我们认为制定合适的自动化支持解决方案来应对这些挑战非常重要。我们提出了一种新的基于学习的自动化安全工具框架API推荐安全演示,自动化和响应,APIRO。为了缓解数据可用性约束,APIRO通过应用各种各样的数据增强技术来丰富安全工具API描述。为了了解安全工具的数据异构性和API描述中的语义变化,APIRO由特定于API的词嵌入模型和卷积神经网络(CNN)模型组成,用于预测任务的前3个相关API。我们通过实验证明了APIRO在使用3种安全工具和36种增强技术为不同任务推荐API方面的有效性。我们的实验结果表明,APIRO实现91.9%的Top-1准确度的可行性。
2022-01-20 cs.CR cs.SE
SEED: Semantic Graph based Deep detection for type-4 clone
第四类克隆是指一对语义相似但语法不同的代码片段,这对现有的代码克隆检测技术提出了挑战。然而,以往的研究高度依赖于句法结构和文本标记,这不能精确地表示代码的语义信息,并可能引入不可忽略的噪声到检测模型。为了克服这些限制,我们设计了一种新的基于语义图的深度检测方法,称为SEED。对于一对代码片段,SEED基于中间表示来构造每个代码片段的语义图,以与基于词法和句法分析的表示相比更精确地表示代码语义。为了适应Type-4克隆的特征,构建了一个语义图,重点关注操作符和API调用,而不是所有标记。然后,SEED通过使用图匹配网络生成特征向量,并基于向量之间的相似性执行克隆检测。大量的实验表明,我们的方法显着优于两个基准方法在两个公共数据集和一个定制的数据集。特别是,SEED以F1分数的形式平均优于其他基线方法25.2%。我们的实验表明,种子可以达到最先进的,是有用的4型克隆检测在实践中。
2022-06-28 cs.SE
Uncovering Intention through LLM-Driven Code Snippet Description Generation
Graduate School of IST(信息科学研究生院);University of Osaka(大阪大学);Nara Institute of Science and Technology(奈良科学技术大学)
本研究通过分析NPM代码片段及其描述,手动分类与LLM(Llama)生成对比,发现多数描述为示例型,LLM识别准确率高但生成描述相似度中等,表明文档意图因任务而异。
2025-06-18 cs.AI cs.SE
Revolutionizing API Documentation through Summarization
École de Technologie Supérieure(蒙特利尔高等技术学院)
本文利用 Stack Overflow 用户内容,结合 BERTopic 和抽取式摘要自动生成 API 摘要,以解决官方文档冗长难用的问题,并通过开发者评估验证其实用性。
2024-01-21 cs.AI cs.CL cs.SE
Chatbots As Fluent Polyglots: Revisiting Breakthrough Code Snippets
PeopleTec(PeopleTec公司)
该研究应用人工智能驱动的代码助手来分析一系列有影响力的计算机代码,这些代码塑造了现代技术,包括电子邮件、互联网浏览、机器人和恶意软件。这项研究的最初贡献是检查过去50年中最重要的代码进步的一半,并在某些情况下,在清晰度或性能方面提供显着的改进。AI驱动的代码助手可以在所有检查的情况下提供对模糊代码或缺乏解释性注释的软件的见解。我们基于错误更正和代码优化生成了额外的示例问题,这些问题需要比传统Google搜索更深入的推理。未来的工作重点是添加自动化文档和代码注释,并将选定的大型代码库转换为具有多个新应用程序编程接口(API)和链式多任务的更现代版本。人工智能驱动的代码助手为软件工程提供了一个有价值的工具,特别是它能够提供人类级别的专业知识,并帮助重构遗留代码或简化高价值存储库的解释或功能。
2023-01-05 cs.CL cs.LG cs.SE
Example-Based Vulnerability Detection and Repair in Java Code
Java库JCA和JSSE提供了加密API以促进安全编码。当开发人员滥用某些API时,他们的代码容易受到网络攻击。为了消除这些漏洞,人们构建了通过模式匹配检测安全API滥用的工具。然而,大多数工具不(1)修复误用或(2)允许用户扩展工具的模式集。为了克服这两个限制,我们创建了Seader--一种基于示例的方法来检测和修复安全API滥用。给定一个示例<insecure,secure>代码对,Seader比较代码片段以推断任何API滥用模板和相应的修复编辑。根据推断出的信息,给定一个程序,Seader执行过程间静态分析来搜索安全API误用并提出定制的修复方案。为了进行评估,我们将Seader应用于28个<不安全,安全>代码对; Seader成功地推断出21个独特的API误用模板和相关修复。通过这些<vulnerability,fix>模式,我们将SEADER应用于一个有86个已知漏洞的程序基准测试。Seader以95%的准确率、72%的召回率和82%的F分数检测到漏洞。我们还将Seader应用于100个开源项目,并手动检查了77个建议的修复;其中76个修复是正确的。Seader可以帮助开发人员正确使用安全API。
2022-04-28 cs.CR cs.SE
A Survey on Query-based API Recommendation
本文综述近十年基于查询的 API 推荐研究,从论文发表、数据源、数据表示与提取、建模技术、排序策略和评价指标等方面梳理现状,并指出挑战与未来方向。
2024-01-27 cs.IR 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
Large Language Model Unlearning for Source Code
Key Laboratory of High Confidence Software Technologies (Peking University), Ministry of Education(北京大学计算机学院,教育部高可信软件技术重点实验室);School of Computer Science, Peking University(阿里巴巴集团通义实验室);Tongyi Lab, Alibaba Group(Verdent AI);Verdent AI
本研究提出PROD方法,通过精确去学习源代码中的违规片段,提升代码生成的可靠性与安全性。
2025-11-24 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
CodeGlance: Understanding Code Reasoning Challenges in LLMs through Multi-Dimensional Feature Analysis
Zhejiang University(浙江大学);Hangzhou City University(杭州城市大学)
CodeGlance通过多维特征分析揭示LLM在代码推理中的挑战,发现未见过的函数推理对小型模型尤为困难,提出改进策略并提供开发指导。
2026-02-15 cs.SE
IPSynth: Interprocedural Program Synthesis for Software Security Implementation
IPSynth提出一种跨过程程序合成方法,自动学习安全战术规格并合成相互关联的代码片段,添加到现有代码库中,实验表明其优于ChatGPT。
2024-03-16 cs.SE
Recommendation of Exception Handling Code in Mobile App Development
在现代程序设计语言中,异常处理是避免意外运行时错误的有效机制。因此,未能捕获和处理异常可能会导致严重的问题,如系统崩溃、资源泄漏或负面的最终用户体验。然而,在移动应用程序开发中,编写正确的异常处理代码通常具有挑战性,这是由于移动应用程序的API库的快速变化特性以及其文档和源代码示例的不足。我们之前的研究表明,在实践中,移动应用程序开发人员会导致许多与异常相关的错误,并且仍然使用糟糕的异常处理实践(例如,捕获异常并不做任何事情)。为了解决这些问题,在本文中,我们介绍了两种新的技术,建议正确的异常处理代码。一种技术XRank推荐代码来捕获可能发生在代码段中的异常。另一个是XHand,它为这种发生的异常推荐了更正代码。我们开发了ExAssist,一个使用XRank和XHand进行异常处理的代码推荐工具。实证评估表明,我们的技术是非常有效的。例如,XRank的top-1准确率为70%,top-3准确率为87%。XHand的结果分别为89%和96%。
2019-08-19 cs.SE
A Novel Approach to Identify Security Controls in Source Code
本文利用 StackOverflow 代码片段构建安全控制数据集,并结合 BERT 与 Tactic Detector 识别源代码中的安全战术实现,F-Measure 超过 0.9。
2023-07-10 cs.SE
Knowledge-Enhanced Program Repair for Data Science Code
针对数据科学领域LLM生成的缺陷代码,本文提出知识增强修复方法DSrepair,结合知识图谱RAG与AST错误定位,在DS-1000数据集上显著优于现有基线,同时提升修复效率。
2025-02-13 cs.SE
PSCS: A Path-based Neural Model for Semantic Code Search
为了获得代码片段以供重用,程序员更喜欢搜索相关文档,例如,博客或问答,而不是代码本身。主要原因是由于查询和代码片段之间的语义多样性和不匹配。已经提出了深度学习模型来应对这一挑战。与使用信息检索技术的方法相比,深度学习模型不会因将用户意图细化为关键字而导致信息丢失。然而,以前的工作的性能并不令人满意,因为他们忽略了代码结构的重要性。当代码的语义(例如,标识符名称(API)是模糊的,代码结构可能是模型使用的唯一功能。在这种情况下,以前的作品重新学习的结构信息,从词汇标记的代码,这是非常困难的模型没有任何领域知识。在这项工作中,我们提出了PSCS,一个基于路径的神经模型的语义代码搜索。我们的模型编码的AST路径所代表的代码的语义和结构。我们训练和评估我们的模型超过330 k-19 k查询函数对,分别。评估结果表明,当考虑匹配的前10个结果时,PSCS实现了47.6%的成功率和30.4%的平均倒数排名(MRR)。所提出的方法显着优于DeepCS,第一种将深度学习应用于代码搜索任务的方法,以及CARLCS,一种最先进的方法,在DeepCS的基础上引入了共同关注的表示学习模型。通过对代码特征的消融研究,论证了代码结构的重要性,为进一步研究模型设计提供了启示。
2020-08-17 cs.SE
Enhancing Software Development Process Using Automated Adaptation of Object Ensembles
软件开发一直在快速变化。这个开发过程可以通过改变开发人员友好的方法来影响。在软件开发过程中,如果能够自动引导程序员,可以节省开发时间,加快开发速度。有一些方法可以向开发人员推荐相关的代码片段和API项。一些方法应用通用代码、搜索技术,而一些方法使用基于在线存储库的挖掘策略。但是,当程序员需要解决特定的类型转换问题时,很难帮助他们。更具体地说,当他们想要根据他们的期望调整现有的接口时。在这种情况下,指导开发人员的一个常见的成功是通过对象集成的自动适应来适应集合和数组。但是,它如何帮助一个新手在实时的软件开发,没有明确规定?在本文中,我们已经开发了一个系统,作为一个插件工具集成到一个特定的数据采掘集成环境(DMIE)推荐相关的接口,而他们寻求一个类型转换的情况。我们有一个挖掘的存储库,其中包含相应的适配器类和相关的API,开发人员可以从其中搜索他们的查询,并使用相关的Transformer类获得结果。推荐开发人员的系统名为自动化目标集成(AOE插件)。从我们曾经做过的调查中,我们可以看到我们的方法比现有的一些方法要好得多。
2020-05-07 cs.SE
An Empirical Study of Java Code Improvements Based on Stack Overflow Answer Edits
Faculty of Information and Communication Technology, Mahidol University(马希达大学信息与通信技术学院);State University of Ceara (UECE)(塞阿拉州立大学)
本研究通过分析Stack Overflow的Java回答编辑,识别可改进的开源Java代码,发现近7%的采纳回答有多次修订,近半数编辑代码可应用于开源项目,11个bug修复方案被接受。
2026-08-25 cs.SE
Development of recommendation systems for software engineering: the CROSSMINER experience
为了执行日常任务,开发人员通过咨询开源软件(OSS)存储库来集中利用现有资源。这样的平台包含丰富的数据源,例如,代码片段、文档和用户讨论,这些对支持开发活动很有用。在过去的几十年里,已经推广了一些技术和工具,为开发人员提供创新功能,旨在提高开发工作量,节省成本和生产力。在欧盟H2020 CROSSMINER项目的背景下,一套建议系统已经被构思出来,以帮助软件程序员在开发过程的不同阶段。这些系统为开发人员提供了各种工件,例如第三方库、有关如何使用所采用的API的文档或相关API函数调用。为拟订这些建议,作出了各种技术选择,以克服与若干方面有关的问题,包括缺乏基线、数据有限、关于业绩计量的决定以及评价方法。本文是一份经验报告,介绍了通过CROSSMINER项目开发的一套推荐系统的相关知识。我们详细解释了我们必须应对的挑战,以及在开发和评估这些系统时学到的相关经验教训。我们的目标是为研究社区提供具体的外卖信息,这些信息预计对那些想要开发或定制自己的推荐系统的人有用。报告的经验,可以促进有趣的讨论和研究工作,这最终有助于推荐系统的进步,应用于解决不同的问题,在软件工程。
2021-03-11 cs.SE
An Extensive Replication Study of the ABLoTS Approach for Bug Localization
State Key Laboratory for Novel Software Technology, Nanjing University(南京大學新型軟件技術國有重點實驗室);Institute for Software Systems Engineering, Johannes Kepler University(約瀚內斯·克普勒大學軟件系統工程研究所);Department of Computer Science, North Carolina State University(北卡羅來納州立大學計算機科學系);Department of Computer Science, Southern Methodist University(南衛理公會大學計算機科學系)
本文通过复制研究评估ABLoTS在扩展数据集上的表现,发现核心组件TraceScore效果稳定,但因错误选择截止日期导致测试数据泄露,影响了复现结果。
2026-05-12 cs.SE
Revisiting File Context for Source Code Summarization
University of Notre Dame(圣母大学)
本文重新审视文件上下文在源代码摘要中的作用,提出一种专门编码文件上下文的Transformer改进架构,在传统方法难以处理的挑战性示例上取得改进。
2023-09-05 cs.AI cs.SE
FRANC: A Lightweight Framework for High-Quality Code Generation
University of Notre Dame(圣母大学)
本文提出FRANC,一个轻量级代码生成框架,通过静态过滤器、质量感知排序器和提示工程提升代码安全性与质量,无需重训模型,在多语言和多个数据集上验证了其有效性。
2024-08-28 cs.LG cs.SE
AstraAI: LLMs, Retrieval, and AST-Guided Assistance for HPC Codebases
AstraAI通过整合LLM、RAG和AST分析,实现对复杂科学代码库的上下文感知代码生成,支持HPC环境中的代码修改与结构保持。
2026-03-28 cs.AI cs.SE
Deep Learning-based Code Completion: On the Impact on Performance of Contextual Information
本文通过实验评估8类编码、过程与开发者上下文及其组合,发现额外上下文可使深度学习代码补全的正确预测相对提升最高22%。
2025-01-09 cs.SE
CCCI: Code Completion with Contextual Information for Complex Data Transfer Tasks Using Large Language Models
PolyTechnique Montréal(蒙特利尔理工学院)
针对数据传输任务中代码补全接受率低的问题,提出CCCI方法,通过将数据库表关系等上下文信息集成到LLMs中提升补全准确性,在289个Java片段上实现了49.1%的Build Pass率和41.0%的CodeBLEU分数。
2025-03-29 cs.AI cs.SE
Open-Source Intelligence for Code Provenance and the Security Patterns that Separate Human and Large-Language-Model Implementations of Common Programming Tasks
Department of Computer Science AI and Media Analysis Lab Berlin, Germany(柏林计算机科学与AI与媒体分析实验室)
研究开发者代码来源(人类答案和大语言模型输出)的差异,利用开源构建管道收集样本,训练分类器区分溯源,报告安全差异,通过案例研究发现修复情况及问题,管道数据驱动可添加新任务或语言。
2026-07-15 cs.CR cs.SE