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 Large Scale Analysis of Android-Web Hybridization
许多Android应用程序通过WebView组件嵌入网页,并在Android中执行JavaScript代码。混合应用程序利用专用API加载资源并在WebView中呈现。此外,Android对象可以与JavaScript世界共享。然而,桥接Android和JavaScript世界的接口也可能招致严重的安全威胁:潜在不受信任的网页及其JavaScript可能会干扰Android环境及其对本地功能的访问。目前还没有一般性的分析来评估这种连接两个世界的混合应用程序的影响。为了理解混合应用程序的语义和效果,我们对混合API的使用进行了大规模的研究。我们分析并分类了7,500个随机选择的混合API的参数和196个来自Google Play商店的最流行的应用程序以及1000个恶意软件样本。我们的研究结果促进了对混合应用程序的普遍理解,以及对潜在程序分析和当前安全状况的影响:我们发现了数千个从Android到JavaScript的敏感数据流,其中绝大多数可能流向潜在的不可信代码。我们的分析确定了许多网页嵌入漏洞,我们示范性地利用了这些漏洞。此外,我们发现了大量的应用程序,其中潜在的不受信任的JavaScript代码可能会干扰(受信任的)Android对象,无论是在良性还是恶性应用程序中。
2020-08-05 cs.CR cs.PL 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
Exception-aware Lifecycle Model Construction for Framework APIs
本文提出基于静态分析和多步匹配的异常感知API生命周期模型构建方法及工具JavaExP,解决了现有API存在性模型忽略语义变化的问题,在F1分数和效率上显著优于现有工具并能识别更多兼容性隐患。
2024-01-05 cs.SE
From Struggle to Simplicity with a Usable and Secure API for Encryption in Java
针对 Java 加密 API 难用且静态分析难以发现全部误用的问题,本文提出基于 Java Cryptography Architecture 的 SafEncrypt,以屏蔽低层复杂性并提升不同经验开发者的加密安全性。
2024-09-08 cs.CR cs.SE
Usability and Security Effects of Code Examples on Crypto APIs - CryptoExamples: A platform for free, minimal, complete and secure crypto examples
上下文:据说加密API不可用,研究人员建议在文档中添加示例代码。目的:我们希望为加密代码示例创建一个免费平台,以提高非安全专家创建的应用程序的可用性和安全性。方法:我们创建了开源网络平台CryptoExamples,并进行了一项受控实验,其中58名学生将对称加密添加到Java程序中。然后我们测量了可用性和安全性。结果如下:使用该平台的参与者不仅效率显著提高(+73%),而且他们的代码包含的安全漏洞也显著减少(-66%)。结论:通过CryptoExamples,可以弥合难以更改的API文档与完整安全的代码示例之间的差距。不过,该平台还需要更多的代码示例。
2018-07-03 cs.CR cs.SE
Dragon-Alpha&cu32: A Java-based Tensor Computing Framework With its High-Performance CUDA Library
Dragon-Alpha是一个基于Java的张量计算框架,通过异步API和优化的CUDA库cu32,在Cifar-10上训练典型神经网络时比PyTorch&cuDNN更省时省内存。
2023-05-15 cs.LG cs.SE
CrySL: Validating Correct Usage of Cryptographic APIs
各种研究经验表明,大多数Java和Android应用程序滥用加密库,导致破坏性的数据安全漏洞。因此,在开发过程的早期发现此类误用至关重要。事实上,不安全的使用并不是例外,而是规范,这排除了基于属性推断和异常检测的方法。在本文中,我们提出了CrySL,一种定义语言,使密码学专家能够指定他们提供的密码库的安全使用。CrySL将方法调用序列和数据流约束的一般概念与与加密算法及其参数相关的特定于域的约束相结合。我们已经实现了一个编译器,将CrySL规则转换为上下文和流敏感的需求驱动的静态分析。分析会自动检查给定的Java或Android应用程序是否违反了CrySL编码的规则。我们通过分析10,001个Android应用程序来实证评估我们的规则。我们的研究结果表明,加密API的滥用仍然很普遍,96%的应用程序至少包含一个滥用。然而,我们观察到较少的误用,在以前的工作中报告。
2017-10-02 cs.SE
From Retrieved Evidence to Security Outcomes: A Data-Driven Analysis of Java Security API Misuse in LLM-Generated Code
School of Computer Science University of Auckland Auckland, New Zealand
本研究复制并扩展了Mousavi等人的工作,评估GPT-5.5和Llama-3.3-70B-Instruct在Java安全API(JCA和JSSE)使用中的误用情况,发现外部安全知识能显著改善但效果依赖模型,且误用问题仍未消除。
2026-10-04 cs.CR cs.SE
Generating Accurate OpenAPI Descriptions from Java Source Code
Department of Informatics Systems University of Klagenfurt(克拉根福大学信息系统系)
针对现有从字节码或运行时信息生成OpenAPI描述的方法存在的不足,提出直接从Java源码检测REST端点等信息的AutoOAS方法,在7个真实项目上的表现优于三种现有最先进方法,且是唯一支持配置文件、数据模型描述最准确详细的方法。
2024-10-31 cs.SE
Python Crypto Misuses in the Wild
背景:先前的研究表明,高达99.59%的使用加密API的Java应用程序至少滥用过一次API。然而,这些研究都是在Java和C上进行的,而对其他语言的实证研究则缺失。例如,一项针对Python中加密任务的受控用户研究表明,68.5%的专业开发人员为加密任务编写了安全的解决方案。目的:为了了解这种观察是否适用于现实世界的代码,我们对Python中的加密误用进行了研究。方法:我们开发了一个静态分析工具,涵盖了5种不同Python加密API的常见误用。通过这项分析,我们分析了来自GitHub的895个流行Python项目和51个嵌入式设备的MicroPython项目。此外,我们将我们的结果与以前的研究结果进行了比较。结果:我们的分析显示,52.26%的Python项目至少有一个误用。此外,一些Python加密库API设计可以帮助开发人员避免滥用加密函数,这在使用Java和C代码进行的研究中更为常见。结论:我们得出结论,我们可以看到良好的API设计对Python应用程序的加密滥用产生了积极的影响。此外,我们对MicroPython项目的分析揭示了混合分析的重要性。
2021-09-02 cs.CR cs.SE
Fluid Intelligence Doesn't Matter! Effects of Code Examples on the Usability of Crypto APIs
上下文:程序员经常寻找以前解决的问题的代码,他们可以适应自己的问题。尽管网络上存在示例代码,但在Stack Overflow等网站上,加密应用程序编程接口(API)通常被滥用。关于是什么让示例有助于开发人员使用加密API,我们知之甚少。类比问题解决是一种心理学理论,研究人们如何使用已知的解决方案来解决新问题。有证据表明,推理和解决新问题的能力,也就是流体智能(Gf)和结构和程序上类似的解决方案支持解决问题。目的:我们的目标是了解相似性和Gf是否在使用密码API的上下文中也有影响,并提供代码示例。方法:我们对76名学生参与者进行了一项对照实验,他们开发了两个Java加密库之一,使用或不使用程序相似的示例,并测量了参与者的Gf以及对可用性(有效性,效率,满意度)和安全漏洞的影响。结果:我们观察到一个强大的效果代码的例子,所有的因变量具有较高的程序相似性。流体智力Gf没有影响。参与者使用哪个图书馆也没有区别。结论:示例代码必须与具体的解决方案高度相似,而不是非常抽象和通用,以便在开发任务中产生积极的影响。
2020-04-08 cs.CR cs.SE
Method Chaining Redux: An Empirical Study of Method Chaining in Java, Kotlin, and Python
将方法链接在一起可能有好处和缺点,就像在流畅的API中经常做的那样。之前的一项研究调查了Java开发人员如何在超过2700个开源项目中链接方法。该研究观察到,对于所分析的数据集,Java中方法链的使用很流行,并且似乎随着时间的推移而增加。然而,该研究仅限于较小的Java项目样本,并且也不清楚结果是否适用于其他语言。在这项工作中,我们首先通过构建类似的数据集和我们自己的分析脚本来复制先前的结果。然后,我们通过分析89k个Java项目的更大数据集来扩展这些结果,并通过分析26k个Kotlin项目和98k个Python项目来推广到其他程序设计语言。结果显示,链接在Java和Kotlin中比Python更受欢迎,Kotlin中的链接使用没有增长,Python在非测试代码中的使用更多。
2023-03-20 cs.SE
AFGNN: API Misuse Detection using Graph Neural Networks and Clustering
IIT Hyderabad(印度理工学院海德拉巴分校);Oracle(甲骨文公司);Yokogawa Electric(横河电机);Microsoft Research(微软研究院);IIT Kharagpur(印度理工学院卡拉格普尔分校)
本文提出AFGNN框架,利用API流程图捕捉代码中的执行序列、数据和控制流信息,通过自监督预训练和聚类识别不同API使用模式,有效检测Java代码中的API误用。
2026-04-09 cs.SE
How do annotations affect Java code readability?
本文通过332人调查和15对Java代码片段,研究了代码注解对可读性的影响,发现开发者对注解提升可读性的看法存在分歧但无共识,为API设计提供了参考。
2024-04-26 cs.SE
RACK: Automatic API Recommendation using Crowdsourced Knowledge
传统的代码搜索引擎通常不能很好地执行自然语言查询,因为它们主要应用关键字匹配。因此,这些引擎需要精心设计的查询,其中包含有关代码搜索编程API的信息。不幸的是,现有的研究表明,准备一个有效的代码搜索查询是既具有挑战性和耗时的开发人员。在本文中,我们提出了一种新的API推荐技术--RACK,它通过利用Stack Overflow的众包知识中的关键字-API关联,为代码搜索的自然语言查询推荐相关API列表。我们首先使用11个核心Java包和来自Stack Overflow的344 K Java帖子进行探索性研究来激励我们的技术。使用150个代码搜索查询随机选择的三个Java教程网站的实验表明,我们的技术建议正确的API类的前10名的结果约79%的查询,这是非常有前途的。与最先进技术的两个变体的比较还表明,RACK不仅在Top-K准确率方面,而且在平均平均精确率和平均召回率方面都大大优于它们。
2018-07-09 cs.SE
JMigBench: A Benchmark for Evaluating LLMs on Source Code Migration (Java 8 to Java 11)
University College London(伦敦大学学院);Nanjing University(南京大学)
JMigBench基准评估了大语言模型在Java 8到Java 11源代码迁移任务中的表现,发现其在简单API替换上有效,但对复杂迁移任务仍存在不足。
2026-02-10 cs.SE
A critical analysis of string APIs: The case of Pharo
除了C之外,大多数程序设计语言都为字符串提供了本地抽象,但字符串API在大小、表达能力和主观便利性方面因语言而异。在Pharo中,虽然乍一看String类的API似乎很丰富,但在实践中往往感觉很麻烦;为了提高其可用性,我们面临着评估其设计的挑战。然而,我们几乎没有发现任何关于设计力及其如何构建设计空间的指导方针,也没有对预期的字符串操作及其不同变化进行全面分析。在本文中,我们首先分析了Pharo 4 String库,然后将其与Haskell、Java、Python、Ruby和Rust的对应库进行了对比。我们收集标准来描述字符串API,并反映功能和设计张力。这种分析应该有助于语言设计者理解字符串的设计空间,并将作为未来重新设计Pharo中字符串库的基础。
2017-11-29 cs.PL cs.SE
APIzation: Generating Reusable APIs from StackOverflow Code Snippets
像StackOverflow这样的开发者论坛已经成为现代软件开发实践的重要资源。然而,许多代码片段缺乏定义良好的方法声明,因此它们通常不完整,无法立即重用。开发人员必须通过参数化所涉及的变量并标识返回值来调整检索到的代码片段。这个活动,我们称之为代码段的API化,可能是乏味和耗时的。在本文中,我们提出了APIzator自动执行的Java代码片段的APIzations。APIzator基于我们通过研究GitHub中的真实APIzations提取的四种常见模式。APIzator提供了一种静态分析算法,可以自动提取方法参数和返回语句。我们使用从20个开发人员收集的200个APIzations的地面事实来评估APIzator。对于113个(56.50%)和115个(57.50%)APIzation,APIzator和开发人员分别提取了相同的参数和返回语句。对于163个(81.50%)API,参数或返回语句相同。
2021-09-02 cs.SE
What's in a Package? Getting Visibility Into Dependencies Using Security-Sensitive API Calls
North Carolina State University(北卡罗来纳州立大学);Endor Labs
本文提出通过调用图分析构建生态系统安全敏感 API 列表,并以 Java 实现,用于比较功能相似包的安全风险;110 人调查显示过半开发者愿意使用该信息选择依赖。
2026-10-27 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
SAT-Based Extraction of Behavioural Models for Java Libraries with Collections
本研究针对Java库行为模型提取问题,提出从含集合的Java源码提取FSM的方法,通过布尔谓词编码集合操作语义、SAT求解器确定转移条件,所得模型便于开发者理解与集成。
2023-11-08 cs.FL cs.SE
Does the Vulnerability Threaten Our Projects? Automated Vulnerable API Detection for Third-Party Libraries
本文提出 VAScanner,通过补丁筛选与增强机制识别漏洞根方法,并结合后向调用图分析检测 Java 项目实际使用的第三方库漏洞 API,显著降低误报和漏报。
2024-09-04 cs.CR 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
LegacyTranslate: LLM-based Multi-Agent Method for Legacy Code Translation
Radboud University(拉德堡德大学);ING(荷兰国际集团)
本文提出LegacyTranslate多智能体框架,通过三个智能体提升遗留代码翻译质量,实验显示初始翻译智能体达到45.6%可编译输出,结合API grounding和refinement智能体进一步提升编译和测试通过率。
2026-03-14 cs.SE
CognixShield: PoV-Guided Vulnerable API Usage Detection in Large Codebases via LLMs
Virginia Tech(弗吉尼亚理工大学);Nanyang Technological University(南洋理工大学);Wake Forest University(维克森林大学)
CognixShield是一款LLM驱动的框架,通过保留语义的AST碎片化、感知漏洞的多智能体RAG、PoV引导的语义推理三个核心组件,在57个Java应用上实现了优于现有工具的漏洞API使用检测性能。
2026-08-11 cs.CR 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
From API to NLI: A New Interface for Library Reuse
开发人员经常重用现有库中的API来实现某些功能。然而,学习API是困难的,因为它们的规模和复杂性。在本文中,我们设计了一个抽象的框架NLI2Code,以减轻重用过程。在该框架下,用户可以使用高级的自动生成的NLI(自然语言接口)而不是详细的API元素来重用库功能。该框架由三个组件组成:一个功能特征提取器,以自然语言的形式总结经常使用的库函数,一个代码模式挖掘器,为每个功能特征提供一个代码模板,和一个合成器,以完成代码模式到良好类型的片段。从用户的角度来看,NLI2Code下的重用任务从选择功能特性开始,我们的框架将指导用户合成所需的解决方案。我们将框架实例化为重用Java库的工具。评估表明,我们的工具可以生成一个高质量的自然语言界面,并节省了一半的编码时间为新人解决现实世界的编程任务。
2020-07-07 cs.SE
An Empirical Study of Flaky Tests in Python
在没有任何代码更改的情况下导致虚假故障的测试,即,干扰测试,妨碍回归测试,增加维护成本,可能会隐藏真正的bug,并降低对测试的信任。虽然片状的普遍性和重要性已经得到了很好的证实,但之前的研究主要集中在Java项目上,因此提出了如何推广研究结果的问题。为了提供一个更好的理解,在软件开发中的作用,超越Java的,我们实证研究的流行,原因,和在Python,目前最流行的程序设计语言编写的软件中的flakiness程度。为此,我们从流行的PyPI包索引中抽取了22352个开源项目,并分析了它们的876186个测试用例。我们的调查表明,flakiness在Python中和在Java中一样普遍。然而,原因是不同的:顺序依赖是Python中一个更主要的问题,在我们的数据集中,7571个重复测试中有59%是由顺序依赖引起的。另外28%是由测试基础设施问题引起的,这是以前没有记录的片状原因。剩下的13%主要归因于项目对网络和随机性API的使用,这表明了通常用Python编写的软件类型。我们的数据还表明,找到可重复测试需要比文献中经常做的更多的运行:一个通过测试的案例平均不重复的95%的置信度将需要170次重新运行。
2021-01-22 cs.SE
Collective Intelligence for Smarter API Recommendations in Python
软件开发人员在编写程序时广泛使用库和框架的应用程序编程接口(API)。在这种情况下,代码完成弹出窗口中提供的建议可以帮助开发人员选择所需的方法。然而,这些工具推荐的候选人名单往往很大,顺序混乱,有时甚至不完整。最近已经做了大量的工作来提高这些代码完成结果的相关性,特别是对于像Java这样的静态类型语言。然而,这些建议的技术依赖于对象的静态类型,因此不适用于像Python这样的动态类型语言。在本文中,我们提出了PyReco,一个智能的代码完成系统的Python,它使用挖掘的API使用从开源存储库的结果排序的基础上的相关性,而不是传统的字母顺序。为了推荐与工作上下文相关的建议,使用最近邻分类器来识别所有提取的使用模式中的最佳匹配使用。为了评估我们的系统的有效性,代码完成查询自动提取项目和测试定量使用十倍交叉验证技术。评估表明,我们的方法优于顺序的API推荐系统推荐的API标准,以及,第三方库。
2016-08-31 cs.SE
De-Hallucinator: Mitigating LLM Hallucinations in Code Generation Tasks via Iterative Grounding
针对大语言模型在代码生成中易虚构不存在API的幻觉问题,提出De-Hallucinator方法,基于初始预测迭代检索适配的项目API参考加入提示,在5种LLM的两类代码任务上均显著提升生成效果。
2024-06-19 cs.SE
Can ChatGPT replace StackOverflow? A Study on Robustness and Reliability of Large Language Model Code Generation
University of California, San Diego(加利福尼亚大学圣地亚哥分校)
针对现有代码评估基准偏离真实开发场景、LLM生成代码的API误用风险未被充分关注的问题,本研究构建了含1208个StackOverflow Java编码问题的RobustAPI数据集,评估发现主流LLM生成代码的API误用率较高,揭示了其可靠性与鲁棒性的不足。
2024-01-27 cs.AI cs.CL cs.SE
Lightweight Syntactic API Usage Analysis with UCov
本文提出基于语法使用模型的概念框架及工具UCov,通过分析客户端代码的语法使用足迹和覆盖分数,帮助Java库开发者理解API实际使用情况,识别测试与文档不足的代码。
2024-02-19 cs.SE
From Things' Modeling Language (ThingML) to Things' Machine Learning (ThingML2)
Technical University of Munich(慕尼黑工业大学);Software AG(Software AG公司)
在本文中,我们说明了如何增强现有的最先进的建模语言和工具的物联网(IoT),称为ThingML,支持机器学习的建模水平。为此,我们扩展了ThingML的领域特定语言(DSL)及其代码生成框架。我们的DSL允许人们定义负责执行数据分析的事物。此外,我们的代码生成器可以自动生成Java和Python的完整实现。生成的Python代码负责数据分析,并采用机器学习库的API,如Keras,Tensorflow和Scikit Learn。我们的原型在Github上作为开源软件提供。
2020-09-22 cs.LG cs.SE
AceCoder: Utilizing Existing Code to Enhance Code Generation
Peking University(北京大学)
针对LLM代码生成需求理解与实现难题,提出AceCoder提示技术,通过引导代码生成与示例检索机制,显著提升多语言、多规模模型在基准测试中的Pass@k表现及人类偏好。
2023-09-07 cs.AI cs.SE
A Comprehensive Framework for Evaluating API-oriented Code Generation in Large Language Models
University of Manitoba(曼尼托巴大学);Concordia University(康考迪亚大学);Queen’s University(女王大学)
提出AutoAPIEval框架,系统评估LLM在面向API代码生成中的API推荐和代码示例生成能力,发现不同模型表现差异并验证检索增强生成的提升作用。
2024-09-26 cs.AI cs.LG cs.SE
I Can't Share Code, but I need Translation -- An Empirical Study on Code Translation through Federated LLM
本文提出基于联邦大语言模型的代码翻译方法,使多方在不共享敏感代码的情况下协同训练 C# 与 Java 翻译器,CodeBLEU 较独立模型提升超 40%。
2025-01-10 cs.SE
Identifying and Mitigating API Misuse in Large Language Models
Monash University(莫纳什大学);CSIRO’s Data61(澳大利亚联邦科学与工业研究组织数据61);Singapore Management University(新加坡管理大学);Australian National University(澳大利亚国立大学)
本文提出Dr.Fix方法,通过分类法指导LLM自动修复生成代码中的API误用问题,提升修复精度。
2025-12-18 cs.SE
Guiding Language Models of Code with Global Context using Monitors
Microsoft Research(微软研究院)
本文提出监视器指导解码 MGD,利用静态分析为代码语言模型注入仓库级全局上下文,并通过 PragmaticCode 证明其可提升编译率、标识符匹配及小模型表现。
2023-11-03 cs.AI cs.CL cs.LG
TypeWriter: Neural Type Prediction with Search-based Validation
由于缺少类型注释,维护以动态类型语言(如JavaScript或Python)编写的大型代码库可能具有挑战性:简单的数据兼容性错误激增,IDE支持有限,API难以理解。最近的工作试图通过静态类型推断或概率类型预测来解决这些问题。不幸的是,动态语言的静态类型推断是固有的限制,而概率方法遭受不精确。本文介绍了TypeWriter,第一次结合概率类型预测与基于搜索的细化预测类型。TypeWriter的预测器通过将代码的自然语言属性与程序设计语言级信息相结合,学习从部分注释的代码库中推断函数的返回和参数类型。为了验证预测的类型,TypeWriter使用预测类型的不同组合调用渐进的类型检查器,同时以反馈导向的方式导航可能的类型组合的空间。我们为Python实现了TypeWriter方法,并在两个代码语料库上进行了评估:Facebook的数百万行代码库和1,137个流行开源项目的集合。我们发现,TypeWriter的类型预测器在返回类型的前1(前5)预测中达到了0.64(0.79)的F1得分,参数类型达到了0.57(0.80),这明显优于以前的类型预测模型。通过将预测与基于搜索的验证相结合,TypeWriter可以在随机选择的语料库中完全注释14%到44%的文件,同时确保类型正确性。与静态类型推断工具的比较表明,TypeWriter添加了更多的非平凡类型。TypeWriter目前向Faceboo…
2020-03-06 cs.SE
Multilingual Code Co-Evolution Using Large Language Models
UT Austin(德克萨斯大学奥斯汀分校)
本文提出使用大型语言模型Codeditor将代码更改从一种编程语言翻译到另一种编程语言的新任务,该模型将代码更改建模为编辑序列并学习跨语言关联,在6613个对齐代码更改语料库上大幅优于现有方法。
2023-09-11 cs.AI cs.SE
Byam: Fixing Breaking Dependency Updates with Large Language Models
KTH Royal Institute of Technology(皇家理工学院);New York University Abu Dhabi(阿布扎比纽约大学);Université de Montréal(蒙特利尔大学)
本文利用大型语言模型自动修复因依赖更新导致的客户端代码问题,通过BUMP数据集验证,o3-mini模型在修复构建和编译错误方面表现最佳。
2026-02-17 cs.SE
Structural Code Search using Natural Language Queries
本文提出利用 LLM 将自然语言查询翻译为结构化代码搜索 DSL(如 Semgrep 和 GQL)查询,并在 400 条查询的基准上取得 55%-70% 的精确率与召回率,显著优于语义搜索和 LLM 检索基线。
2025-07-02 cs.PL cs.SE