An Empirical Study of Flaky Tests in JavaScript
片状测试(具有非确定性结果的测试)可能会对测试效率和软件可靠性造成问题。测试套件中的零散测试也会显著延迟软件发布。已经有几项研究试图量化不同程序设计语言中测试片状性的影响(例如,Java和Python)和应用程序域(例如,移动和基于GUI)。本文对JavaScript中的JavaScript测试状态进行了实证研究。我们从两个方面研究了JavaScript项目中的重复测试:这些项目中重复测试的主要原因和常见的修复策略。通过分析来自GitHub的大型、得分最高的JavaScript项目的452次提交,我们发现并发相关问题(例如,等待、竞争条件或死锁)是测试不稳定的最主要原因。其他导致重复测试的主要原因是特定于操作系统的(例如,在特定OS或OS版本上工作的特征)和网络稳定性(例如,因特网可用性或不良套接字管理)。就如何处理恶意测试而言,大多数恶意测试(>80%)都是固定的,以消除恶意行为,开发人员有时会跳过,隔离或删除恶意测试。
2022-07-03 cs.SE
An Empirical Study of Kotlin-Java Cross-Dependency Issues and Their Detection
Nanjing University of Science and Technology, China(南京理工大学);Huawei Technologies Co., Ltd.(华为技术有限公司);School of Computer Science, Wuhan University, China(武汉大学计算机学院)
本文通过DependExtractor工具对40个Kotlin-Java项目开展实证研究,明确了跨语言依赖特征,识别出10类问题及修复策略,并实现InteropScan工具用于检测问题,为开发者提供帮助。
2026-08-06 cs.SE
An Empirical Study on README contents for JavaScript Packages
现代软件项目经常利用README.md来共享关键信息,例如与其软件相关的安装和使用示例。此外,这些文件也是软件开发人员和潜在用户更新和有用文档的重要来源。尽管如此,新手和经验丰富的开发人员有时都不确定一个好的README文件需要什么。为了理解README的内容,我们调查了43,900个JavaScript包的内容。结果表明,这些包包含共同的内容主题(即,使用、安装和许可证)。此外,我们发现特定于应用程序的包更频繁地包括诸如选项之类的内容主题,而基于库的包更频繁地包括其他特定的内容主题(即,安装和许可)。
2018-02-27 cs.SE
Making refactoring decisions in large-scale Java systems: an empirical stance
决定重构哪些类充满了困难。识别候选类的问题变得尖锐时,面对大型系统,包括数百或数千类。在本文中,我们描述了一个度量的关键类,因此重构的候选人,可以确定。从三个大型Java系统的源代码中提取了量化两种形式的耦合,继承和聚合,以及其他两个类的功能(方法和属性的数量)的使用的措施。我们的研究表明,从其他研究领域的度量可以适应软件工程过程。每个系统在所确定的关键类别方面存在很大差异,因此这些系统之间重构这些类别的机会也各不相同。
2003-06-16 cs.SE
An empirical study on Java method name suggestion: are we there yet?
一个大规模的评估,目前的命名方法证实,这种方法是准确的。然而,它是鲜为人知的,哪些类别的方法名称的工作以及通过这样的命名方法的性能。为了指出当前命名方法的优越性,本文在一个新的数据集上对这些方法进行了实证研究。此外,我们分析了上述成功的命名方法,发现:(1)大约60%的被接受的推荐名称是在get,set,is和test中使用前缀的。(2)成功推荐的方法名称中有很大一部分(19.3%)可以从给定的方法体中派生出来。比较也表明了实证研究的优越性能。
2022-01-21 cs.SE
Characterizing Structural Testability in JavaScript: An Empirical Study
Motorola Solutions(摩托罗拉解决方案);Simon Fraser University(西蒙菲莎大学)
本文针对 JavaScript 结构可测试性展开大规模实证研究,定义七维结构并汇总为 CTS,应用于 30 个开源项目,分析其分布等,发现结构有挑战的函数集中在少量文件且通过多种重复配置出现,为相关研究奠定基础。
2026-07-29 cs.SE
On the Impact of Micro-Packages: An Empirical Study of the npm JavaScript Ecosystem
用户贡献的开源软件(OSS)生态系统的兴起表明了它们在软件工程学科中的普遍性。图书馆通过在整个生态系统中相互依赖来共同工作。从这些生态系统中出现了一个最小化的库,称为微包。当一个关键的生态系统依赖性的中断对不知情的用户产生影响时,微包就成了问题.在本文中,我们研究了微包在npm JavaScript生态系统中的影响。具体来说,我们对169,964个JavaScript npm包进行了实证研究,以了解(i)微包的普遍现象,(ii)微包继承的大小依赖性以及(iii)开发人员使用成本(即,获取、安装、加载时间)。研究结果发现,微包构成了npm生态系统的重要组成部分。除了易于阅读和理解之外,我们还展示了一些微包具有很长的依赖链,并且与其他npm包一样会产生同样多的使用成本。我们设想,这项工作激发了开发人员意识到他们的第三方依赖关系对软件生态系统中的关键变化有多敏感的需求。
2017-09-14 cs.SE
An Empirical Study on Failed Error Propagation in Java Programs with Real Faults
在测试过程中,开发人员可以在方法的外部或内部放置Oracle。给定错误的执行状态,即,一个与预期的错误不同的错误,如果它被放置在不能访问不正确的程序状态或程序状态不再被破坏的程序点处,则Oracle可能无法暴露该错误。在这种情况下,oracle会受到失败的错误传播的影响。我们进行了一项实证研究,以衡量失败的错误传播缺陷4J,参考基准的Java程序与真正的故障,考虑所有6个项目(386个真正的错误和459个固定的方法)。我们的研究结果表明,失败的错误传播的流行是可以忽略不计的测试时,在单元级。然而,当提供系统级输入时,失败的错误传播的发生率大幅增加。这表明,方法后置条件仅根据外部可观察状态/数据进行预测就足够了,并且在系统级测试时应检查中间步骤。
2020-11-21 cs.SE
Transformations between Composite and Visitor implementations in Java
基本的自动化重构操作可以被链接以执行复杂的结构转换。这对于恢复源代码的初始架构是有用的,该源代码在其维护生命周期期间已经随着连续的演进而退化。这对于改变程序的结构也很有用,以便手头的维护任务在最初横切时变成模块化的。我们专注于程序结构根据复合和游客的设计模式,具有双重属性的模块化。我们认为这两个结构之间的基于重构的往返转换,我们研究如何转换的影响,这些模式的实现中的四个变化。我们通过计算所得到的转换的最小前提条件来验证这项研究。我们还自动化转换并将其应用于JHotDraw,在那里发生了研究的变化。
2013-09-12 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
JavaScript Dead Code Identification, Elimination, and Empirical Assessment
本研究提出 Lacuna 方法自动检测并消除 JavaScript 死代码,并通过实验证明其能改善移动 Web 应用加载时间并减少网络传输字节数。
2023-08-31 cs.SE
Generating Java Methods: An Empirical Assessment of Four AI-Based Code Assistants
本文针对真实开源Java项目构建的100个方法数据集,比较评估了GitHub Copilot、Tabnine、ChatGPT和Google Bard四种AI代码助手,发现Copilot准确度更高,但处理类外依赖时所有助手效果均显著下降。
2024-02-14 cs.SE
FAYE: A Java Implement of the Frame/Stream/Stop Analysis Model
FAYE,帧分析可执行文件,是一个基于Java的帧/流/停止模型的实现,用于分析数据。与传统的基于事件的分析模型不同,帧/流/停止模型对于要分析的任何数据的哪一部分没有偏好,并且事件得到与高电压中的变化相同的处理。这个模型意味着FAYE是一个适合于许多不同类型的数据分析的分析框架,例如检测器趋势或作为可视化核心。在FAYE的设计过程中,重点一直是清晰地划分每个可执行程序的职责,并尽可能保持它们的实现完全独立。这导致FAYE的大部分是实验独立的通用核心,而较小的部分将该核心定制为实验自己的数据结构。这种定制甚至可以在C++中使用JNI来完成,而可执行文件的控制权仍然保留在Java中。本文回顾了帧/流/停止模型,然后着眼于FAYE如何接近其实现,重点是哪些责任是由通用核心处理,以及实验必须提供的可执行文件的定制部分的一部分。
2003-06-13 cs.SE
Empirical Review of Java Program Repair Tools: A Large-Scale Experiment on 2,141 Bugs and 23,551 Repair Attempts
在过去的十年中,基于测试套件的自动程序修复的研究有了显着增长。每年,新的方法和实现都会出现在主要的软件工程场所。然而,大多数这些方法都是在单一的bug基准上进行评估的,其他研究人员也很少复制这些bug。在本文中,我们提出了一个大规模的实验,使用11个Java测试套件为基础的修复工具和5个基准的错误。我们的目标是更好地了解自动程序修复工具在大量基准测试中的现状。我们的调查是指导的假设,修复工具的可修复性可能不会在不同的基准程序错误的一般化。我们发现,这11个工具1)能够为5个基准测试中21%的bug生成补丁,2)与其他基准测试相比,在Defects 4J上具有更好的性能,通过为Defects 4J中47%的bug生成补丁,而其他基准测试中的bug只有10-30%。我们的实验总共包括23,551次修复尝试,我们用来找到非补丁生成的原因。本文对这些原因进行了分析,有助于维修工具设计人员改进技术和工具。
2019-05-28 cs.SE
Syntax Is Not Enough: An Empirical Study of Small Transformer Models for Neural Code Repair
MIT World Peace University(麻省理工学院世界和平大学)
本研究通过实验证明,小型Transformer模型在修复Java错误时,虽然能生成语法正确的代码,但无法达到语义正确的修复效果。
2025-12-22 cs.SE
An Empirical Study of Usages, Updates and Risks of Third-Party Libraries in Java Projects
第三方库是开发软件系统的核心构建块。然而,过时的第三方库通常被使用,开发人员通常不太了解潜在的风险。因此,对第三方图书馆的使用、更新和风险进行定量和全面的研究,可以为可持续地改善生态系统提供实践性的见解。在本文中,我们在Java生态系统中进行了这样的研究。具体而言,我们进行库使用分析(例如,使用强度和过时性)和库更新分析(例如,更新强度和延迟)使用806个开源项目。这两项分析旨在从开源项目和第三方库的角度全面量化使用和更新实践。然后,我们进行库风险分析(例如,潜在的风险和开发人员的反应)的错误与15个常用的第三方库。该分析旨在量化使用过时库的潜在风险以及开发人员对风险的响应。我们从三个分析中得出的结论为开发人员和研究人员提供了关于维护第三方库(例如,智能警报和自动更新过时的库)。为了证明我们的研究结果的有用性,我们提出了一个错误驱动的警报系统,以帮助开发人员在更新第三方库版本时做出自信的决定。我们已经发布了我们的数据集,以促进有价值的应用程序和改善生态系统。
2020-02-25 cs.SE
Bridging Behavior and Implementation: Automated Java Glue Code Generation for Behavior-Driven Development
University of Alberta(阿尔伯塔大学)
研究针对行为驱动开发中胶水代码开发维护难题,提出分层多智能体框架AutoGlue,遵循行为优先工作流程。经实验评估,相比少样本提示,其在代码生成指标上有显著提升,能有效连接行为规范与项目代码,支持软件开发。
2026-07-23 cs.SE
Deterministic vs. Probabilistic Summarisation: An Empirical Trade-off Study in Design Pattern Centric Java Code
Monash University(莫纳什大学);Singapore Management University(新加坡管理大学)
本文通过对比确定性(基于启发式)和概率性(基于LLM)管道在面向意图的设计模式Java代码摘要中的表现,研究了摘要方法的权衡问题,发现概率性摘要在语义对齐和上下文覆盖上更优,而确定性方法在简洁性和可重复性上更胜一筹。
2026-05-21 cs.SE
Characterizing the Usage, Evolution and Impact of Java Annotations in Practice
注释自Java 5开始正式引入Java。从那时起,注释被Java社区广泛用于不同的目的,例如编译器指导和运行时处理。尽管使用不断增长,但关于注释在实践中的实际使用,软件演化期间对注释的更改以及注释对代码质量的潜在影响的经验知识仍然有限。为了填补这一空白,我们对GitHub上托管的1,094个著名开源项目进行了第一次关于Java注释的大规模实证研究。我们的研究系统地调查了注释的使用,注释的演变和注释的影响,并产生了10个新的和重要的发现。我们还提出了我们的研究结果的影响,为开发人员,研究人员,工具构建者,语言或库设计人员,以改善Java注释工程的各个方面。
2019-04-05 cs.PL cs.SE
How to Implement Dependencies in Server Pages of JEE Web Applications
Java企业版(JEE)应用程序是根据一组基于几种JEE技术开发的组件来实现的,这些技术包括但不限于Servlet、JSP、JSF、EJB、JavaBean。这些JEE技术依赖于一组不同的通信机制来相互通信。这些通信机制的示例包括HTTP请求、远程方法调用(RMI)、Java数据库连接(JDBC)等。这些通信机制表示JEE组件之间的程序依赖性。然而,不同的JEE技术可以采用不同的实现方式来实现同一种通信机制.因此,为了能够检测相关的依赖关系,我们确定了一组JEE技术使用的这些实现方式。在本技术报告中,我们将重点介绍Web层技术,即Servlet、JSP和JSF。此外,我们还介绍了这些技术如何访问JavaBean和管理Bean组件。
2018-03-14 cs.SE
Evaluation of Static Analysis Tools for Finding Vulnerabilities in Java and C/C++ Source Code
安全测试被推迟到软件开发之后是很常见的,但是漏洞可能会在整个实施阶段被发现,并且发现得越早,修复它们就越容易,越便宜。软件开发过程(如安全软件开发生命周期)在设计和开发过程的每个阶段都包含安全性。静态代码扫描工具通过突出潜在的安全缺陷来发现代码中的漏洞,并提供如何解决这些漏洞的示例,有些甚至可以修改代码以消除敏感性。本文比较了Java和C/C++源代码的静态分析工具,并探讨了它们的优缺点。
2018-05-24 cs.SE
Reproduction Test Generation for Java SWE Issues
IBM
本文针对Java企业软件中的SWE问题,提出首个Java仓库级再现测试基准TDD-Bench-Java和高绩效的e-Otter++工具,填补了Python以外语言的研究空白。
2026-05-07 cs.SE
Empirical study of software quality evolution in open source projects using agile practices
我们分析了两个开源Java项目的时间演变:Eclipse和Netbeans,这两个项目都是按照敏捷实践开发的,尽管程度不同。我们的研究是集中在质量分析的系统,衡量缺陷的存在,其与软件度量的演变。这两个项目通过软件图来描述,其中节点由Java文件表示,边描述节点之间的现有关系。本文在Chidamber和Kemerer度量套件的基础上提出了一个Java文件度量套件,并利用它来研究软件演化及其与bug计数的关系。
2009-05-20 cs.PL cs.SE
ASTOR: Evolutionary Automatic Software Repair for Java
背景:在过去的几年里,许多自动软件修复方法已经提出了软件工程研究社区。根据相应的论文,这些方法能够修复开源项目中的实际缺陷。问题:自动修复领域以前的一些出版物没有提供其方法的实现。因此,研究界不可能重新执行原始评估,建立新的评估(例如,针对新的缺陷评估性能)或相互比较方法。解决方案:我们提出了一个公开的自动软件修复工具,称为Astor。它在Java程序的上下文中实现了三种最先进的自动软件修复方法(包括GenProg和PAR模板的子集)。Astor的源代码在GNU通用公共许可证(GPL v2)下许可。
2014-10-24 cs.SE
Comprehending Test Code: An Empirical Study
开发人员花费大量的时间和精力来理解源代码。虽然许多研究已经调查了开发人员如何处理这些理解任务以及哪些因素影响他们的成功,但很少有人知道开发人员如何理解测试代码,尽管测试的重要性无可争议。在本文中,我们报告的实证研究结果与44名开发人员了解哪些因素影响开发人员理解Java测试代码时。我们测量了三个因变量:阅读测试套件所花费的总时间,识别测试套件总体目的的能力,以及生成额外测试用例以扩展测试套件的能力。我们研究的主要发现,对未来的研究和实践者有几个影响,是(i)软件项目的先验知识减少了总的阅读时间,(ii)Java的经验影响了测试用例的安排和断言部分所花费的时间比例,(iii)Java的经验和软件项目的先验知识对生成某些类别的附加测试用例的能力有积极的影响,和(iv)自动化测试的经验是理解和扩展自动化测试套件的一个影响因素。
2019-07-31 cs.SE
JEDI: Java Evaluation of Declarative and Imperative Queries
Università della Svizzera italiana (USI)(瑞士意大利语大学)
提出JEDI基准测试套件,通过自动将SQL基准转换为Java基准,分析Stream API与命令式实现的性能差异,以指导开发者优化代码。
2026-05-22 cs.PL cs.SE
An Empirical Study on Method-Level Performance Evolution in Open-Source Java Projects
本研究分析了15个开源Java项目中1499次方法级代码变更对性能演化的影响,发现32.7%的变更产生可测量影响且衰退多于提升,挑战了基于变更类型的风险分层策略,并建议将自动化性能测试集成至持续集成流水线。
2025-08-09 cs.PF cs.SE
Do I really need all this work to find vulnerabilities? An empirical case study comparing vulnerability detection techniques on a Java application
应用漏洞检测技术是使用软件项目有限资源的许多任务之一。目的:本研究的目标是通过实证研究的效率和有效性的四种技术对基于Java的Web应用程序的使用软件漏洞检测技术,以帮助管理人员和其他决策者作出明智的选择。实验方法:我们将四种不同类别的漏洞检测技术\textendash-系统性手动渗透测试(SMPT)、探索性手动渗透测试(EMPT)、动态应用程序安全测试(DAST)和静态应用程序安全测试(SAST)\textendash应用于开源病历系统。结果:我们使用SAST发现了最多的漏洞。然而,EMPT发现了更严重的漏洞。对于每种技术,我们都发现了使用其他技术没有发现的独特漏洞。手动技术(EMPT、SMPT)的效率在每小时漏洞(VpH)方面与自动技术(DAST、SAST)的效率相当或更好。结论:从业者应该选择的漏洞检测技术可能会因项目的目标和可用资源而异。如果组织的目标是找到项目中的“所有”漏洞,那么他们需要在资源允许的范围内使用尽可能多的技术。
2022-08-02 cs.CR cs.SE
RocketRML - A NodeJS implementation of a use-case specific RML mapper
从理论上讲,从原始数据源创建关联数据不是火箭科学(双关语)。根据输入的性质和所使用的映射技术,它可能会成为一项非常繁琐的任务。在我们将真实的旅游数据映射到schema.org词汇表的工作中,我们使用了RML,但很快就遇到了现有的Java映射器实现达到了极限,不足以满足我们的用例。在本文中,我们描述了一个新的实现的RML映射。它是用基于JavaScript的NodeJS框架编写的,在我们处理大型XML和JSON文件的用例中表现得非常好。RML测试用例的性能测试和执行表明,该实现具有在合理时间内执行繁重映射任务的巨大潜力,但在JOIN,命名图以及XML和JSON以外的输入方面存在一些限制-由于给定用例的性质,目前还不错。
2019-03-12 cs.SE
Code Generation for Event-B
逐步求精和契约设计是两种形式化的系统建模方法。这些方法在系统开发中被广泛使用。这两种方法都有(缺点)。本论文的目的是回答,是否有可能结合这两种方法在系统的开发,为用户提供两者的好处?我们通过将Event-B的逐步细化方法翻译为Java和JML的契约式设计来回答这个问题,因此用户可以充分利用这两种正式方法而不会失去他们的好处。本文提出了一套语法规则,将Event-B转换为带XML注释的Java代码。它还介绍了作为EventB 2 Java工具的语法规则的实现。我们使用该工具翻译了几个Event-B模型。它为所有考虑的模型生成了XML注释的Java代码,这些代码用作初始实现。我们还使用EventB 2 Java开发了两个软件应用程序。此外,我们还将EventB 2 Java与其他两个用于Event-B代码生成的工具进行了比较。EventB 2 Java使用户能够在Event-B中开始软件开发过程,用户可以在Event-B中对系统进行建模并证明其一致性,然后过渡到带XML注释的Java代码,用户可以在Event-B中继续开发过程。
2016-02-05 cs.SE
A Minimal Executable Proof for Multi-Language Contract Traceability
Verivus OSS
本文通过一个包含六种语言实现的DAG-TOML合约的最小可执行证明,展示了合约、实现图、可追溯性链和审查门如何通过可执行见证者进行验证。
2026-05-27 cs.SE
On the Interaction of Relational Database Access Technologies in Open Source Java Projects
本文对开放源代码Java项目中关系数据库访问技术的使用如何随时间演变进行了实证研究。我们的观察可能有助于项目经理做出更明智的决定,将哪些技术引入现有项目以及何时引入。我们在GitHub上选择了2,457个Java项目,这些项目使用了底层JDBC技术和更高级的对象关系映射,例如Hibernate XML配置文件和JPA注释。在粗粒度级别上,我们分析了随着时间的推移引入这些技术的可能性,以及在同一项目中同时出现多种技术的可能性。在细粒度级别上,我们分析了在同一组项目文件中使用这些不同技术的程度。我们还探讨了在Java项目中引入新的数据库技术如何影响现有技术的使用。我们观察到,与预期相反,对象关系映射技术并不倾向于取代现有的映射技术,而是对它们进行补充。
2017-01-02 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
Designing and Implementing Robust Test Automation Frameworks using Cucumber BDD and Java
本文提出基于Cucumber BDD和Java的健壮测试自动化框架,通过模块化架构和自然语言语法提升沟通与可维护性,实证表明能减少手动测试并增强缺陷检测与软件可靠性。
2025-05-22 cs.SE
Memory and Resource Leak Defects and their Repairs in Java Projects
尽管在软件工程方面付出了巨大的努力,并且有程序设计语言的支持,但资源和内存泄漏仍然是一个棘手的问题,即使在内存管理语言(如Java)中也是如此。了解导致泄漏的缺陷的属性、泄漏如何表现以及如何修复它们是设计更好的方法来避免、诊断和修复泄漏相关错误的基本前提。我们对15个大型开源Java项目的491个问题进行了详细的实证研究。这项研究提出了分类的泄漏类型,导致他们的缺陷,并为修复行动。我们调查,在几个方面,每个分类内的分布和它们之间的关系。我们发现,手动代码检查和手动运行时检测仍然是泄漏检测的主要方法。我们发现,大多数的错误表现在无错误的执行路径,和开发人员修复泄漏的缺陷在更短的时间比非泄漏的缺陷。我们还确定了13个经常性的代码转换的修复补丁。根据我们的研究结果,我们得出了开发人员如何避免,检测,隔离和修复泄漏相关的错误的各种影响。
2019-06-27 cs.SE
A Java Data Security Framework (JDSF) and its Case Studies
我们提出的东西,我们称之为机密性,完整性和身份验证子框架,这是一个更一般的Java数据安全框架(JDSF)的一部分,旨在支持与数据安全(机密性,源身份验证,完整性和SQL随机化)的各个方面。JDSF最初是在2007年设计的,用于MARF和HSQLDB这两个用例,以允许各种安全方面及其泛化的插件式实现和验证。JDSF项目从两个项目中的数据安全的角度探讨了安全数据存储相关的问题。考虑了各种常见的安全方面和任务,以提取一系列可能的参数,这些方面需要设计一个可扩展的框架API及其实现。正在解决的一个特殊挑战是将不同的方法和算法聚合到一组通用的Java API中,以覆盖所有或至少是最常见的方面,同时保持框架尽可能简单。作为框架的一部分,我们提供了上述子框架的API,以允许MARF和HSQLDB数据库的机密性、完整性和身份验证方面的通用算法实现。与此同时,我们对数据和数据库安全方面的相关工作和文献进行了详细的概述,我们认为这些工作和文献是设计JDSF的可能输入。
2016-03-31 cs.CR cs.SE
How Do Java Developers Reuse StackOverflow Answers in Their GitHub Projects?
本文通过克隆检测、关键词搜索和人工检查的混合方法,挖掘并研究了GitHub Java项目中复用的StackOverflow回答特征,发现被复用的回答得分更高、代码更长,且开发者多采用部分复用或重写而非完全复制。
2024-08-29 cs.SE
An Empirical Study on Quality of Android Applications written in Kotlin language
内容:在过去的几年中,移动应用程序的开发人员有可能使用新的范例和工具来开发移动应用程序。例如,自2017年以来,Android开发人员可以使用Kotlin语言编写Android应用程序。Kotlin是一种与Java完全互操作的程序设计语言,它结合了面向对象和函数特性。目的:本文的目的是双重的。首先,它旨在研究Kotlin语言在开源Android应用程序开发中的采用程度,并衡量Android应用程序中的Kotlin代码量。其次,它旨在衡量使用Kotlin编写的Android应用程序的质量,并将其与使用Java编写的Android应用程序的质量进行比较。方法:我们首先定义了一种从开源Android应用程序数据集中检测Kotlin应用程序的方法。然后,我们分析这些应用程序来检测代码气味的实例,并计算应用程序的质量估计。最后,我们研究了Kotlin代码的引入如何影响Android应用程序的质量。结果如下:我们的实验发现,在一个包含2,167个开源应用程序的数据集中,有11.26%的应用程序是(部分或全部)使用Kotlin语言编写的。我们发现,Kotlin代码的引入提高了大多数最初用Java编写的Android应用程序的质量(就代码气味的存在而言)。
2019-07-18 cs.SE
An Empirical Study on the Characteristics of Database Access Bugs in Java Applications
本研究通过分析423个Java应用中的数据库访问错误,归纳出五大类根本原因,发现SQL查询、模式和API错误占84.2%,为开发者和研究者提供了改进建议。
2024-05-23 cs.DB cs.SE
Proactive Empirical Assessment of New Language Feature Adoption via Automated Refactoring: The Case of Java 8 Default Methods
随着时间的推移,程序设计语言和平台不断改进,有时会产生新的语言功能,提供许多好处。然而,尽管有这些好处,开发人员可能并不总是愿意在他们的项目中采用它们。在本文中,我们描述了一个实证研究,我们评估通过一个特定的新的语言功能。研究开发人员如何使用(或不使用)新的语言功能在程序设计语言研究和工程中很重要,因为它使设计人员了解语言的可用性,从而用该语言创建有意义的程序。反过来,这些知识可以推动该领域未来的创新。在这里,我们探索Java 8默认方法,它允许接口包含(实例)方法实现。默认方法可以简化接口的演化,使某些普遍存在的设计模式变得多余,并提高模块性和可维护性。这项工作的重点是通过科学的方法和新的技术,发现开发人员发现这些构造有用的情况,以及它们没有的原因。虽然有几项研究围绕着评估新的语言特征,但据我们所知,这种结构以前没有被考虑过。尽管有这些好处,但我们发现开发人员并不是在所有情况下都采用默认方法。我们的研究包括提交pull request,将语言特性引入19个真实世界的开源Java项目,而不改变原始程序语义。这种新颖的评估技术是主动的,因为采用是由自动重构方法驱动的,而不是等待开发人员自己发现和集成功能。通过这种方式,我们提出了更早而不是更晚有效使用语言功能的最佳实践和模式,并且能够指导(不久的)未来的语言发展。我们预见这种技术在评估其他新的语言特性、设计模式和其他编程习惯方面是有用…
2018-03-27 cs.PL cs.SE
OpenJML: Software verification for Java 7 using JML, OpenJDK, and Eclipse
OpenJML是一个检查Java程序的代码和规范的工具。我们描述了我们的经验,建立在JML,OpenJDK和Eclipse的基础上的工具,以及在基于规范的软件验证的许多进步。该实现展示了直接在软件开发IDE中集成规范工具的价值,以及尽可能多地自动化任务的价值。该工具,虽然仍在进行中,现在已被用于几个大学水平的课程,软件规范和验证,并对现有的Java程序的小规模研究。
2014-04-26 cs.LO cs.PL cs.SE
Verifying OpenJDK's LinkedList using KeY
作为一个特殊的情况下研究的形式化验证的国家的最先进的,真正的软件,我们讨论的规范和验证的正确版本的实现的链表所提供的Java集合框架。关键词:Java,标准库,演绎验证,KeY,Java建模语言,案例研究,错误
2019-11-11 cs.LO cs.SE
Benchmarking of Java Verification Tools at the Software Verification Competition (SV-COMP)
通过基准测试对验证工具进行经验性评估是软件验证研究中常用的方法。软件验证竞赛(SV-COMP)旨在通过对C程序的全自动软件验证器的比较评估,每年在软件验证社区内实现基准测试的标准化和可重复性。在此成功的基础上,我们将介绍如何重用围绕SV-COMP开发的生态系统来对Java验证工具进行基准测试。我们提供了一个详细的描述的基准测试验证任务的规则,新的工具集成到SV-COMP的基准测试框架,并给出了一个基准测试运行在最先进的Java验证工具,JPF,SPF,JayHorn和JBMC的实验结果。
2019-03-04 cs.LO cs.SE
An Empirical Study of Fault Localization in Python Programs
本文首次对真实 Python 程序开展多系列大规模故障定位实证研究,基于 BugsInPy 的 135 个故障评估七类技术,并通过 FauxPy 工具复现和比较 Java 相关结论。
2024-03-20 cs.SE
On the diversity and frequency of code related to mathematical formulas in real-world Java projects
在本文中,术语公式代码是指实现数学公式的源代码片段。我们提出了实证研究,分析公式代码的多样性和频率在开源软件项目。在一项探索性研究中,我们调查了在现实世界的Java项目中实现了哪些类型的公式,并导出了语法模式和约束。我们改进了求和和乘积公式的这些模式,以自动检测软件存档中的公式代码,并以数学符号重建实现的公式。在对GitHub上的大量工程Java项目进行的定量研究中,我们分析了公式代码的频率,并估计该示例中的700行代码中有一行实现了求和或乘积公式。对于一个科学计算项目的样本,我们发现100行代码中有一行实现了一个求和或乘积公式。为了评估对工具支持的需求,我们调查了公式代码片段样本中的程序理解评论的有用性,并进行了在线调查。我们的研究结果提供了第一个洞察公式代码的特点,可以激励进一步研究公式代码在软件项目中的作用和公式相关工具的设计。
2020-11-26 cs.SE
Formal Methods Meets Readability: Auto-Documenting JML Java Code
本文评估 JML 形式化规范对 LLM 生成 Java Javadoc 质量的影响,发现其显著提升类级完整性与契约覆盖,尤其适合不变式丰富的类。
2025-06-10 cs.SE
Embedding Software Intent: Lightweight Java Module Recovery
Department of Informatics, University of California, Irvine(信息学院,加州大学伊文斯顿分校)
本文提出ClassLAR方法,通过类和语言模型恢复Java模块,提升架构恢复效率和准确性。
2025-12-17 cs.AI cs.SE
Does Python Smell Like Java? Tool Support for Design Defect Discovery in Python
这项工作的背景是规范,检测和最终删除源代码中与软件设计和实现中的缺陷相关的可检测有害模式。特别是,我们调查了五个代码气味和四个以前在论文和书籍中定义的反模式。我们的调查是关于检测那些在Python程序设计语言编写的源代码,这是从所有以前的研究,其中大部分涉及Java或C类语言有很大的不同。我们的方法是软件工程师的方法:我们处理了关于这个主题的现有研究文献,提取了九个设计缺陷的抽象定义及其具体的实现规范,在我们编写的工具中实现了它们,并将其释放在从数千个GitHub项目的开源代码中获得的巨大测试集上。当涉及到知识时,我们发现Python中被认为太长的方法是Java中的两倍多(从统计学上看,比同一项目中的相邻方法要长得多),但在Python代码中发现长参数列表的可能性是Java代码的七倍。我们还发现,函数分解(Functional Decomposition)在Java中的定义方式,在Python代码中根本找不到,意大利面条代码和上帝类也非常罕见。这些结果的基础和信心来自于我们在32'058'823行Python代码上进行的实验,这是迄今为止免费提供的Python解析器的最大测试集。我们还设计了这样一种方式,它与以前的研究在Java中的设计缺陷检测,以方便比较,如果我们把我们自己的行动作为一个复制对齐的实验。因此,这项工作的重要性在于它独特的、最高质量的开放式Python语法,经过数百…
2017-03-31 cs.PL cs.SE
Towards an Application of Update Propagation on Logic Programs Representing Java Source Code
逻辑程序现在被用作学术原型中面向对象源代码的表示已有大约十年的时间。这种表示允许对面向对象的源代码进行清晰而简洁的分析。这一方法的全部潜力远未得到开发。在本文中,我们报告了一个应用程序的完善的更新传播理论内的逻辑程序。给定面向对象代码作为逻辑程序中的事实的表示,代码的改变对应于这些事实的更新。我们演示了如何更新传播提供了一种通用的方法来生成增量版本的这种分析。
2013-01-11 cs.PL cs.SE
Investigating and Recommending Co-Changed Entities for JavaScript Programs
JavaScript(JS)是最流行的程序设计语言之一,由于其灵活性和多功能性,但维护JS代码是繁琐和容易出错的。在我们的研究中,我们进行了一项实证研究来描述共同变更的软件实体之间的关系(例如,函数和变量),并构建了一个基于机器学习(ML)的方法来推荐额外的实体来编辑给定的开发人员的代码更改。具体来说,我们首先在10个开源项目中抓取了14,747个提交;对于每个提交,我们创建了一个或多个更改依赖图(CDG)来建模共同更改实体之间的引用者-引用者关系。接下来,我们提取了CDG之间的公共子图,以定位实体之间的重复共变模式。最后,基于这些模式,我们从共同更改的实体中提取代码特征,并训练了一个ML模型,该模型在给定程序提交的情况下推荐要更改的实体。根据我们的实证调查,(1)三种重复模式普遍存在于所有项目中;(2)80%-90%的共同更改函数对调用相同的函数,访问相同的变量,或包含类似的语句;(3)我们基于ML的方法CoRec推荐的实体更改具有很高的准确性(73%-78%)。CoRec补充了之前的工作,因为它建议基于程序语法,文本相似性以及软件历史的更改;在我们的评估中,它比两个现有工具实现了更高的准确性。
2021-02-17 cs.PL cs.SE
A Modular Multi-Document Framework for Scientific Visualization and Simulation in Java
Christopher Newport University(克里斯托弗纽波特大学)
本文提出了一种模块化多文档框架,用于在Java环境中实现科学可视化和模拟,通过分离架构组件提升系统模块化和可扩展性。
2026-02-24 cs.SE physics.comp-ph
AI-Generated Code Is Not Reproducible (Yet): An Empirical Study of Dependency Gaps in LLM-Based Coding Agents
本文实证研究了基于LLM的编码代理生成代码的可重复性,发现仅68.3%的项目能在干净环境中成功执行,且不同语言存在显著差异,同时发现依赖项存在显著隐藏依赖。
2026-03-23 cs.AI cs.MA cs.SE
An Empirical Analysis of CodeQL False Positives and Query Refinements for Java Vulnerabilities
College of Computing & Informatics Drexel University(德雷塞尔大学计算与信息学院);Department of Computer Science Cornell University(康奈尔大学计算机科学系)
该研究分析Java漏洞的CodeQL误报模式,实现查询优化可减少大量误报,还验证了智能编码工具能将优化模式适配新项目,支持以优化为导向的SAST工作流以降低排查工作量。
2026-09-16 cs.CR cs.PL cs.SE
Modular Workflow Engine for Distributed Services using Lightweight Java Clients
在这篇文章中,我们介绍了一个轻量级的客户端-服务器-框架的概念和第一个实现作为中间件的分布式计算。在客户端,没有管理权限或特权端口的安装可以将任何计算机变成工作节点。只需要一个Java运行时环境和组成工作流客户端的JavaScript文件。要将所有客户端连接到引擎,一个开放的服务器端口就足够了。该引擎将数据提交给客户端,并通过来自中央数据库的工作流描述来协调他们的工作。客户端定期请求新的任务描述,因此系统对网络故障具有鲁棒性。在基本设置中,数据上传和下载通过与服务器的HTTP通信进行处理。模块化系统的性能还可以使用专用文件服务器或分布式网络文件系统来改进。我们展示了所提出的发动机在实际应用中的机械工程的设计特点。我们已经使用了这个系统的计算集群的实验研究,参数优化和有限元结构的鲁棒性验证的设计。
2009-12-03 cs.CE cs.SE