Finding Regressions in Projects under Version Control Systems
版本控制系统(Version Control Systems,缩写为VCS)通常用于支持大型软件项目的开发。一个典型的大型项目的MySQL存储库可以包含由大量提交组成的各种相互交织的分支。如果在项目中发现了某种不想要的行为(例如代码中的bug),那么最好找到引入它的提交。这样的提交被称为回归点。关于回归点有两个主要问题。首先,在某个提交之后检测项目是否正确可能是非常昂贵的,因为它可能包括大规模测试和/或一些其他形式的验证。因此,期望最小化这种查询的数量。第二,在实际提交之前可能有几个回归点;也许在某个提交中引入了一个bug,后来无意中修复了几个提交,然后在更晚的提交中重新引入。为了修复实际的提交,通常需要找到最新的回归点。目前使用的分布式递归包含回归识别的方法,例如git bisect工具。在本文中,我们提出了一个新的回归识别算法,通过减少有效性查询的数量,优于当前的工具。同时,我们的算法倾向于找到最新的回归点,这是最先进的算法中缺少的功能。本文提供了一个实验评估所提出的算法,并将其与最先进的工具git bisect在一个真实的数据集。
2017-08-22 cs.SE
20-MAD -- 20 Years of Issues and Commits of Mozilla and Apache Development
长期和高知名度项目的数据对于研究野外成功的软件工程是有价值的。拥有一个包含这些项目的不同链接软件库的数据集,可以进行更深入的潜水调查。本文介绍了20-MAD,一个链接Mozilla和Apache项目的提交和发布数据的数据集。它包含了超过20年的765个项目的信息,340万次提交,230万次问题和1730万次问题评论,其压缩大小超过6 GB。数据包含有关源代码提交的所有典型信息(例如,添加和删除的行、消息和提交时间)和问题(状态、严重性、投票和摘要)。问题评论已经过自然语言处理和情感分析的预处理。这包括表情符号、效价和唤醒分数。链接代码存储库和问题跟踪器信息,允许在两种类型的存储库中研究个人,并为问题跟踪器提供更准确的时区信息。据我们所知,这是不基于GitHub的项目生命周期中最大的链接数据集。
2020-03-31 cs.SE
How to Gain Commit Rights in Modern Top Open Source Communities?
本研究通过主题分析构建顶级开源社区提交者资质分类体系,结合生存分析探究政策与实践的匹配情况,为社区权限分配和开发者发展提供参考。
2024-05-16 cs.SE
Dynamics of Open-Source Software Developer's Commit Behavior: An Empirical Investigation of Subversion
提交是开源软件版本控制的一个重要操作。最近的研究一直在探索这种操作的统计规律,但很少有这些论文对提交间隔进行实证研究(即,两个连续提交之间的等待时间)。本文从提交间隔分布的角度研究了软件开发人员的集体和个人提交行为,发现1)所分析的项目生命周期和每个版本的项目级提交间隔数据集大致遵循幂律分布; 2)类文件的生命周期和版本级集体提交间隔也可以最好地拟合幂律分布。这些发现揭示了开放源码软件项目的一些一般(集体)协作开发模式,例如,在两次连续提交到中央存储库之间的大多数等待时间都很短,但只有少数提交经历了长时间的等待。然后,我们发现的OSS研究的影响进行了概述,这可以提供一个洞察到更好地理解OSS开发过程中基于软件开发人员的历史提交行为。
2013-11-23 cs.SE
Developer Productivity With and Without GitHub Copilot: A Longitudinal Mixed-Methods Case Study
University of Oslo(奥斯陆大学);SINTEF(辛特夫研究所)
研究通过混合方法案例研究分析GitHub Copilot对开发者活动和主观生产力的影响,发现使用Copilot的开发者活动更活跃,但无显著统计学变化,表明提交指标与主观生产力体验存在差异。
2026-01-28 cs.SE
Multi-Programming-Language Commits in OSS: An Empirical Study on Apache Projects
Spark等现代软件系统通常使用多种程序设计语言(PL)编写。除了从代码重用中受益外,这些系统还可以利用特定PL来实现某些功能,以满足各种质量需求,并提高开发效率。在这种情况下,对这样的系统的改变可能需要修改在不同PL中写入的源文件。我们在版本控制系统中定义了多编程语言提交(MPLC)(例如,Git)作为提交,该提交涉及在两个或更多PL中写入的修改的源文件。据我们所知,在软件开发中的MPLCs现象还没有被探索过。鉴于多层次可编程逻辑控制器对开发难度和软件质量的潜在影响,我们进行了一项实证研究,以了解多层次可编程逻辑控制器的状态,其变化的复杂性,以及它们对问题的开放时间和源文件在现实生活中的软件项目的错误倾向的影响。通过对20个非平凡Apache项目205,994次提交中的MPLCs进行研究,我们发现:(1)所有项目中9%的提交是MPLCs,并且80%的项目中MPLCs的比例处于相对稳定的水平;(2)所有项目中超过90%的MPLCs涉及两个PL编写的源文件;(3)在所有项目中,多媒体可编程逻辑控制器的变更复杂度明显高于非多媒体可编程逻辑控制器;(4)在80%的项目中,多媒体可编程逻辑控制器中修复的问题比非多媒体可编程逻辑控制器中修复的问题需要更长的时间来解决;以及(5)在多媒体可编程逻辑控制器中修改过的源文件往往比从未在多媒体可编程逻辑控制器中修改过的源文件更容易出现错误。这些发现为…
2021-03-22 cs.SE
Cherry-Picking of Code Commits in Long-Running, Multi-release Software
本文介绍了Tartarian,一个工具,支持维护软件的长期运行,多发布分支的分布式版本控制系统。当新的维护代码(如错误修复和代码改进)提交到分支中时,这些代码可能会应用于其他分支或与其他分支重用。要做到这一点,开发人员可以手动识别一个提交并进行挑选。Tartarian可以通过提供提交主题标签来支持此活动,开发人员在提交代码时将其用作元数据来指定他们的意图。有了这些标签,Tartarian使用依赖关系图(dependency graph)和分支标识符(Branch Identifier)来识别提交的适用分支,依赖关系图表示分支的依赖关系约束,分支标识符将提交主题标签与依赖关系图匹配。使用Tartarian,开发人员可以更有效地维护多个版本的软件。
2017-08-08 cs.SE
Boosting Automatic Commit Classification Into Maintenance Activities By Utilizing Source Code Changes
背景资料:了解在源代码存储库中执行的维护活动可以帮助从业人员减少不确定性,并通过提前规划和预分配资源来提高成本效益。研究界使用3个主要的分类类别进行维护活动:纠正:故障修复;完善:系统改进;适应:新功能引入。以前在这方面的工作主要集中在评估提交分类(到维护活动)模型在一个单一的软件项目的范围。目的:在这项工作中,我们试图设计一个提交分类模型,能够提供高精度和Kappa在不同的项目。此外,我们希望比较利用词频分析、源代码变化及其组合的分类模型的准确性和Kappa特性。方法:我们提出了一种新的方法,自动分类到维护活动的提交,利用源代码的变化(例如,语句添加,方法删除等)。我们报告的结果是基于研究来自不同专业领域的11个流行的开源项目,我们手动分类了1151个提交,每个研究项目超过100个。我们的模型使用85%的数据集进行训练,而剩下的15%用作测试集。结果如下:我们的方法显示了76%的准确率和63%的科恩kappa(在这种情况下被认为是“好”)的测试数据集,超过20个百分点的改进,以及在跨项目分类的背景下相对提升约40%。结论:我们表明,通过使用源代码更改与提交消息词频分析相结合,我们能够以项目不可知的方式大大提高分类质量。
2017-11-14 cs.SE
Understanding Emotions of Developer Community Towards Software Documentation
开源项目的可用性促进了开发人员在广泛的项目上做出贡献和协作。因此,为此类开源项目做出贡献的开发人员社区也在增加。许多项目都涉及频繁更新和广泛重复使用。一个更新良好的文档有助于更好地理解软件项目,也有助于有效的贡献和重用。虽然软件文档在软件开发和维护过程中扮演着重要的角色,但它也存在着诸如不充分、不一致、可维护性差等问题,探讨开发人员对文档的看法有助于理解软件文档中普遍存在的问题背后的原因。它可以进一步帮助决定可以向开发人员社区提供的培训,以便为社会建立更可持续的项目。分析项目贡献者的情绪可以为理解开发人员的看法提供见解。因此,作为朝着这个方向迈出的第一步,我们分析了特定于软件项目文档的提交消息的情感。为此,我们考虑了GHTorrent数据集中998个GitHub项目的提交历史,并确定了10,996个提交对应于存储库的文档。此外,我们应用情感分析技术来获得对所选提交的提交消息中表达的情感类型的见解。我们观察到,大约45%的已识别提交消息表达了信任情绪。
2021-03-01 cs.SE
Commit-Aware Learning-Based Test Case Prioritization for Continuous Integration
University of Sannio(桑尼奥大学)
提出一种结合代码变更结构、测试覆盖和历史执行的提交感知学习模型,用于持续集成中的测试优先级排序,显著提升回归缺陷检测效果。
2026-06-11 cs.SE
Exploring Multi-Programming-Language Commits and Their Impacts on Software Quality: An Empirical Study on Apache Projects
本研究通过对18个Apache项目的197,566次提交进行实证分析,发现多编程语言提交(MPLCs)显著增加开发复杂度、延长问题解决时间并引入更多缺陷,从而降低软件质量。
2023-11-12 cs.SE
A Model of the Commit Size Distribution of Open Source
编程中的一个基本工作单元是开发人员对工作中的项目的代码库做出的代码贡献(“提交”)。我们使用统计方法来推导出一个模型的概率分布的提交大小在开源项目中,我们表明,该模型适用于不同的项目规模。我们使用图形和统计方法来验证我们的模型的拟合优度。通过测量和建模编程的基本维度,我们帮助改进软件开发工具和我们对软件开发的理解。
2014-08-21 cs.SE
Was It Never Collected, or Rewritten Away? A Commit-Provenance Dataset Separating Ingestion Gaps from Upstream History Edits across the World of Code
University of Tennessee, Knoxville(田纳西大学诺克斯维尔分校)
通过比较同一提交图的两种视图,即GHArchive事件流和世界代码(WoC)V2604对象数据库,分离提交缺失的不同原因,构建数据集,分析不同情况比例,发布相关数据及处理结果。
2026-07-07 cs.SE
From Commits to Confidence: Towards Stability-Informed Risk Assessment in Open Source Software
George Mason University(乔治梅森大学);Queen’s University(女王大学)
本文研究了开源软件项目稳定性与韧性,发现稳定提交模式能反映项目治理和开发流程,提出需结合社区参与等指标进行稳定性导向的风险评估。
2026-01-05 cs.SE
Evaluating a bot detection model on git commit messages
为了防止大规模社会技术实证分析中的偏见,检测分布式软件开发活动中机器人的存在是非常重要的。在以前的工作中,我们提出了一个分类模型,根据GitHub帐户的pull请求和issue评论来检测GitHub存储库中的机器人。目前的研究基于提交消息对git贡献者进行了概括。我们在一个包含6,922个git贡献者的大型数据集上对分类模型进行了训练和评估。基于pull request和issue comments的原始模型在此数据集上获得了0.77的精度。在git commit消息上重新训练分类模型将精度提高到0.80。作为概念验证,我们在BoDeGiC中实现了这个模型,BoDeGiC是一个开源命令行工具,用于检测git存储库中的机器人。
2021-03-22 cs.SE
The Corrective Commit Probability Code Quality Metric
The Hebrew University of Jerusalem(耶路撒冷希伯来大学)
我们提出了一个代码质量度量,纠正提交概率(CCP),测量的概率,提交反映纠正性维护。我们表明,这个指标符合开发人员的质量,信息和稳定的概念。通过将语言模型应用于提交消息来识别纠正提交。通过将语言模型应用于提交消息来识别纠正提交。我们计算了所有大型活跃GitHub项目的CCP(2019年至少有200个提交的7,557个项目)。这导致了一个质量等级的创建,表明质量最低的10%的项目在修复bug上花费的精力至少是前10%的6倍。对项目属性的分析表明,较低的CCP(较高的质量)与较小的文件,较低的耦合,使用JavaScript和C#等语言而不是PHP和C++,更少的开发人员,更低的开发人员流失,更好的入门和更高的生产力有关。除其他外,这些结果支持“质量是免费的”的说法,并建议实现更高的质量不需要更高的费用。
2020-07-21 cs.LG cs.SE
Detecting and Characterizing Bots that Commit Code
The University of Tennessee(田纳西大学);Carnegie Mellon University(卡内基梅隆大学)
背景资料:一些传统上手动执行的开发人员活动,例如提交代码,打开,管理或关闭问题,在许多OSS项目中越来越多地受到自动化的影响。具体而言,此类活动通常由对事件做出反应或在特定时间运行的工具执行。我们将这种自动化工具称为机器人,并且在与开发人员生产力或代码质量相关的许多软件挖掘场景中,需要识别机器人,以便将它们的动作与个人的动作分开。目标:找到一种自动化的方法来识别机器人和这些机器人提交的代码,并根据它们的活动模式来描述机器人的类型。方法和结果:我们提出了BIMAN,一个系统的方法来检测机器人使用作者姓名,提交消息,提交修改的文件,并与ommits相关的项目。对于我们的测试数据,AUC-ROC值为0.9。我们还根据代码提交的时间模式和修改的文件类型对这些机器人进行了特征分析,发现它们主要处理文档文件和网页,这些文件在HTML和JavaScript生态系统中最常见。我们编译了一个可共享的数据集,其中包含我们发现的461个机器人的详细信息(所有机器人都有超过1000次提交)和他们创建的13,762,430次提交。
2020-03-27 cs.CR cs.LG cs.SE
Detecting Refactoring Commits in Machine Learning Python Projects: A Machine Learning-Based Approach
本文提出 MLRefScanner,利用机器学习检测 Python ML 项目中的通用与 ML 特有重构提交,在 199 个项目上显著优于现有工具。
2024-04-09 cs.SE
Using Source Code Density to Improve the Accuracy of Automatic Commit Classification into Maintenance Activities
Linnaeus University(林奈大学)
源代码因某种原因而更改,例如,这个原因可以为开发过程提供有价值的见解,但是当更改提交到源代码存储库时,很少明确记录。自动提交分类使用从提交中提取的特征来估计此原因。我们介绍了源代码密度,一个提交的净大小的度量,并展示了它如何提高自动提交分类的准确性相比,以前的大小为基础的分类。我们还研究了前几代提交如何影响提交的类,以及是否考虑到以前提交的代码密度可以进一步提高准确性。对于跨项目提交分类,我们实现了高达89%的准确率和0.82的Kappa,其中模型在一个项目上训练并应用于其他项目。在单个项目上训练的模型的准确率高达93%,Kappa接近0.90。自动提交分类的准确性对利用分类的软件(过程)质量分析有直接影响,因此我们对准确性的改进也将提高此类分析的置信度。
2020-05-28 cs.LG cs.SE
Developer Belief vs. Reality: The Case of the Commit Size Distribution
软件开发工具的设计遵循这些工具的开发人员对软件开发的信念。这种信念的一个关键方面是对软件项目的代码贡献(提交)的大小。在本文中,我们表明,工具开发人员认为是真实的代码贡献的大小是不同的,从现实中超过一个数量级。我们为开源和选定的闭源项目的大样本呈现了这个现实,称为提交大小分布。我们认为,这些新的经验性的见解将有助于提高软件开发工具,调整基本的设计假设更接近现实。
2014-08-20 cs.SE
Characterizing the Roles of Contributors in Open-source Scientific Software Projects
科学软件的开发对科学实践比以往任何时候都更加重要,并且伴随着更加开放和协作的趋势。不幸的是,很少有人调查是谁在推动这种科学软件的发展,或者这种合作是如何发生的。在本文中,我们解决这个问题。我们提出了一个广泛的分析,七个开源科学软件项目,以开发一个开发过程的知识模型。这项分析得到了对72名科学软件开发人员的调查的补充。在大多数项目中,我们发现高级研究人员(例如教授)负责一半或更多的提交(平均提交份额为72%),并大量参与架构问题(高级人员更有可能与构建系统,项目元数据和开发人员文档相关的文件进行交互)。大三学生(例如研究生)也做出了很大的贡献--在一个研究项目中,大三学生几乎完成了100%的提交。尽管如此,研究生在大三学生中的贡献时间最长(1.72年,博士后为0.98年,本科生为4个月)。此外,我们还发现,第三方贡献者很少,仅为项目贡献了一天。本研究的结果旨在帮助科学家更好地了解他们自己的项目、社区和贡献者的行为,同时为未来的软件工程研究铺平道路
2020-03-23 cs.SE
Towards Exploring the Code Reuse from Stack Overflow during Software Development
作为最知名的程序员问答网站之一,Stack Overflow(即,SO)每天为数万名开发者提供服务。以前的工作表明,许多开发人员在SO上重用代码片段,当他们找到一个答案(来自SO),功能上匹配他们在开发活动中遇到的编程问题。为了研究程序员在项目开发过程中如何重用SO上的代码,我们进行了全面的实证研究。首先,为了捕捉程序员的开发活动,我们从793个开源Java项目的提交中收集了342,148个修改过的代码片段,这些修改过的代码可以反映开发过程中遇到的编程问题。我们还从SO上的1,355,617个帖子中收集了代码片段。然后,我们使用CCBACK来检测提交的修改代码与SO的代码之间的代码克隆,并进一步分析程序员在开发过程中解决编程问题时的代码重用。我们统计了不同年份每个项目提交中修改后的代码片段的代码重用率,结果显示代码重用率平均为6.32%,最高为8.38%。项目提交中的代码复用率逐年上升,新成立项目的代码复用比例高于老项目。我们还发现有些项目重用了很多年前的代码片段。此外,我们发现,有经验的开发人员似乎更有可能重用SO上的知识。此外,我们发现,在bug相关的提交(6.67%)的代码重用率略高于在非bug相关的提交(6.59%)。此外,我们还发现,代码重用率(14.44%)在Java类文件中,经历了多次修改是两倍以上的整体代码重用率(6.32%)。
2022-04-27 cs.SE
Systematic Detection of Energy Regression and Corresponding Code Patterns in Java Projects
University of Namur(南纳穆尔大学);Delft University of Technology(代尔夫特理工大学)
本文提出EnergyTrackr方法,用于检测Java项目中多提交的能源回归,识别潜在增加软件能耗的代码反模式,帮助开发者优化代码以减少能耗。
2026-04-21 cs.SE
A Task-Level Evaluation of AI Agents in Open-Source Projects
Idaho State University(爱达荷州立大学)
本文评估了五个AI代理在开源项目中的表现,发现Codex在PR接受率上表现优异,而Copilot在审查讨论量上领先,但提交质量因任务类型而异。
2026-02-02 cs.SE
The Technical Debt Dataset
技术债分析越来越受欢迎,因为现在的研究人员和行业正在采用各种静态代码分析工具来评估他们的代码质量。尽管如此,软件项目的实证研究是昂贵的,因为需要时间来分析项目。此外,由于研究通常考虑不同的项目,因此很难比较结果。在这项工作中,我们提出了技术债务数据集,这是一组来自Apache软件基金会的33个Java项目的项目测量数据。在Technical Debt Dataset中,我们使用SonarQube分析了单独定义的时间范围内的所有提交,以收集Technical Debt信息,并使用Ptidej检测代码气味。此外,我们从git日志中提取了所有可用的提交信息,使用Refactoring Miner应用的重构,以及问题跟踪器(Jira)中报告的错误信息。使用这些信息,我们执行SZZ算法来识别错误诱导和修复提交。我们分析了来自选定的33个项目的78K提交,检测到180万个SonarQube问题,38K个代码气味,28K个错误和57K个重构。项目分析花了200多天。在本文中,我们描述了数据检索管道以及用于分析的工具。该数据集通过CSV文件和SQLite数据库提供,以方便对数据的查询。技术债务数据集旨在为技术债务研究开辟多种机会,使研究人员能够比较常见项目的结果。
2019-08-02 cs.SE
Characterizing The Influence of Continuous Integration. Empirical Results from 250+ Open Source and Proprietary Projects
持续集成(CI)工具通过在提交代码更改时自动编译、构建和执行测试用例来集成代码更改。CI工具的使用越来越受欢迎,但专有项目如何获得CI的好处仍然是未知的。为了研究CI对软件开发的影响,我们分析了150个开源软件(OSS)项目和123个专有项目。对于OSS项目,我们观察到采用CI后的预期收益,例如,在bug和问题解决方面的改进。然而,对于专有项目,我们不能做出类似的观察。我们的研究结果表明,只有采用CI可能不足以改善软件开发过程。如果实践者有效地使用CI的反馈机制,通过应用频繁提交的实践,CI可以有效地用于软件开发。对于我们的专有项目,我们观察到实践者提交的频率较低,因此不能有效地使用CI来获得对提交的代码更改的反馈。根据我们的研究结果,我们建议行业从业者采用CI的最佳实践,以获得CI工具的好处,例如,频繁提交。
2018-09-14 cs.SE
An Approach and Benchmark to Detect Behavioral Changes of Commits in Continuous Integration
本研究提出名为DCI的自动化方法,通过断言扩增和基于搜索的输入空间探索生成测试变体,以检测CI中提交的行为变更,构建了首个真实行为变更数据集并验证了方法有效性,同时指出其适用范围局限。
2019-12-16 cs.SE
Bursts and Triggers: Socially-Driven Activity in Open-Source Co-Editing Networks
Julius-Maximilians-Universität Würzburg(维尔茨堡大学);DATEV eG(DATEV股份公司);Honda Research Institute Europe(本田欧洲研究院)
研究开源软件社区开发者活动的社会机制,通过建模协同编辑网络检测活动触发及级联,发现项目规模主导显著级联,还测试信号对开发者流失的预测作用,结果表明开发者自身不活跃起主要作用,刻画了开发者响应性在OSS动态中的可测性。
2026-07-14 cs.SE
The Co-Evolution of Test Maintenance and Code Maintenance through the lens of Fine-Grained Semantic Changes
自动化测试是一种被广泛采用的提高软件质量的技术。作为软件开发过程的一部分,以及在初始发布后的演变阶段,软件开发人员添加、删除和更新测试方法和测试类。在这项工作中,我们进行了大规模的研究,61个流行的开源项目,并报告之间的关系,我们已经建立了测试维护,生产代码维护,语义变化(例如,语句添加,方法删除等)。在开发人员的提交中执行。我们建立了预测模型,并表明软件项目中的测试数量可以通过使用代码维护配置文件(即,在每个维护活动中执行了多少次提交:纠正、完善、自适应)。我们的研究结果还表明,开发人员在同一提交中执行代码修复而不执行补充测试维护(例如,更新现有测试或添加新测试)。当开发人员执行测试维护时,很可能会受到他们作为提交的一部分执行的语义更改的影响。我们的工作是基于研究61个流行的开源项目,包括超过240,000个提交,其中包括超过16,000,000个语义更改类型实例,由超过4,000名软件工程师执行。
2017-09-26 cs.SE
On Relating Technical, Social Factors, and the Introduction of Bugs
随着协作编码环境使软件项目更容易做出贡献,参与这些项目的开发人员数量不断增加。这种增加使得代码审查者更难处理有bug的贡献。像GitHub这样的协作环境提供了关于开发人员贡献的丰富数据源。这样的数据可以用于提取关于开发者的关于技术的信息(例如,他们的经验)和社会(例如,的相互作用)因素。最近的研究分析了这些因素对软件开发的不同活动的影响。然而,在这些因素与错误引入之间的关系方面仍有改进的余地。我们提出了一个更广泛的研究,包括来自不同领域的8个项目和6,537个错误报告,涉及五个技术因素,三个社会因素和错误的介绍。结果表明,技术和社会因素可以区分错误和干净的承诺。但是,技术因素比社会因素更具决定性。特别是,开发人员不遵守技术贡献规范的习惯和开发人员的提交缺陷与提交缺陷的增加有关。另一方面,项目的建立、开发者提交的所有权级别和社会影响力与引入错误的机会较低有关。
2020-04-07 cs.SE
What Makes a Good Commit Message?
协作软件开发中的一个关键问题是开发人员之间的沟通。一种通信方式是提交消息,开发人员在其中描述他们在存储库中所做的更改。因此,提交消息作为一种“审计跟踪”,开发人员可以通过它了解项目的源代码是如何更改的以及更改的原因。因此,提交消息的质量会影响开发人员之间通信的有效性。提交消息通常质量很差,因为开发人员缺乏时间和动力来制作好的消息。已经提出了几种自动方法来生成提交消息。然而,这些都是基于未经策划的数据集,包括相当大比例的措辞拙劣的提交消息。在这个多方法研究中,我们首先定义什么是“好”的提交消息,然后使用来自五个高度活跃的开源项目的近1,600条消息的样本来确定提交消息中缺少信息的比例。我们发现,平均约44%的消息可以得到改进,这表明使用未经策划的数据集可能是使用此类数据训练提交消息生成器时的主要威胁。我们还观察到,以前的工作没有考虑提交消息的语义,并且令人惊讶的是,编写好的提交消息的指导很少。为此,我们开发了一个基于提交消息表达式中重复出现的模式的分类法。最后,我们调查是否可以自动识别“好”的提交消息,这样的自动化可以促使开发人员编写更好的提交消息。
2022-02-07 cs.HC cs.SE
Traceability in the Wild: Automatically Augmenting Incomplete Trace Links
Technical University Ilmenau(伊尔梅瑙工业大学);University of Notre Dame(圣母大学);McGill University(麦吉尔大学)
本文针对提交与问题之间追溯链接缺失的问题,提出利用过程与文本特征训练分类器自动识别缺失的问题标签,在六个开源项目上取得平均96%召回率和33%精确率,并能有效扩充现有追溯链接。
2018-04-06 cs.SE
Finding Relationships between Socio-Technical Aspects and Personality Traits by Mining Developer E-mails
人格特质影响着大多数(如果不是全部的话)人类活动,从人们走路、说话、穿衣和写作的方式,到与他人互动的方式。最重要的是,个性会影响人们做决定的方式,包括在开发人员的情况下,他们在选择他们想要参与的软件项目时所考虑的标准。大多数研究软件开发项目中社会、技术和人为因素的影响的工作都集中在软件质量中沟通的影响上。例如,在发布软件产品的增强版本之前,识别预测器以检测可能包含错误的文件。这些作品中只有少数关注自由/自由和开源软件项目中具有提交权限的开发人员(提交者)的个性特征及其与他们交互的软件工件的关系。本文提出了一种方法,自动识别的基础上,从电子邮件发送的提交人在FLOSS项目的个性特征,揭示在软件开发过程中发生的社会和技术方面之间的关系。我们的实验结果表明,提交者通过他们的电子邮件和他们进行的社会(沟通)和技术活动所投射的人格特质之间存在一些关系。这项工作是一个初步的研究,旨在支持建立有效的工作团队,在软件开发项目的基础上,考虑到他们的个性特征的利益相关者的适当组合。
2016-03-03 cs.SE
Refactoring-aware Block Tracking in Commit History
提出重构感知工具 CodeTracker 追踪代码块提交历史,通过 1,280 个代码块基准测试,证明其准确率与执行效率均优于 GumTree 3.0 基线。
2024-09-24 cs.SE
Leveraging Commit Size Context and Hyper Co-Change Graph Centralities for Defect Prediction
IIIT Allahabad(印度信息技术研究所阿拉哈巴德分校);IIIT Manipur(印度信息技术研究所曼尼普尔分校)
本文提出基于提交大小上下文和超共变图中心性的缺陷预测方法,通过引入高维向量和超图分析,提升预测性能。
2026-04-01 cs.SE
Is this GitHub Project Maintained? Measuring the Level of Maintenance Activity of Open-Source Projects
背景:GitHub托管了大量高质量的OSS项目。然而,选择“合适的工具”是一项具有挑战性的任务,因为我们没有关于这些高质量项目的准确信息。目的:在本文中,我们提出了一种数据驱动的方法来衡量GitHub项目的维护活动水平。我们的目标是提醒用户使用未维护项目的风险,并可能激励其他开发人员承担此类项目的维护。方法:我们训练机器学习模型来定义一个度量来表达GitHub项目的维护活动水平。接下来,我们分析了2,927个活跃项目在一年时间内的历史演变。结果:从2,927个活跃的项目中,16%在一年的时间内变得不受维护。我们还发现,与用其他语言实现的项目相比,使用Java-C的项目往往具有更低的维护活动。最后,软件工具-如编译器和编辑器-随着时间的推移具有最高的维护活动。结论:GitHub项目维护活动水平的度量可以帮助开发人员选择开源项目。
2020-03-09 cs.SE
Silent Vulnerability-fixing Commit Identification Based on Graph Neural Networks
提出VFFINDER,一种基于图神经网络的自动化静默漏洞修复识别方法,通过带注释的AST捕获代码结构变化,在精确率、召回率和F1上显著优于现有方法并加速识别过程。
2023-09-15 cs.SE
Systematic Detection of Energy Regressions in Software Version Histories
University of Namur(那慕尔大学);Delft University of Technology(代尔夫特理工大学)
本文提出EnergyTrackr方法,通过对5个Java项目1932次提交的评估,验证其可高效检测提交间能量退化,二分算法效率优于线性算法,可助力开发者优化软件能耗。
2026-10-14 cs.SE
Untangling Fine-Grained Code Changes
在工作一段时间后,开发人员将他们的代码更改提交到版本控制系统。在这样做时,他们经常捆绑不相关的更改(例如,错误修复和重构),从而创建所谓的纠结提交。共享混乱的提交是有问题的,因为它使这些提交的审查、恢复和集成变得更加困难,并且项目的历史分析不太可靠。研究人员一直致力于解开现有的提交,即,查找提交的哪个部分与哪个任务相关。在本文中,我们以两种方式为这一工作做出贡献:(1)一个公开的未纠缠代码更改数据集,在两个开发人员的帮助下创建,他们在四个月内准确地将代码更改拆分为自包含的任务;(2)一种新颖的方法,EpiceaUntangler,帮助开发人员共享未纠缠的提交(又名。原子提交)。EpiceaUntangler基于公开可用的数据集进行测试,并通过将其部署给7名开发人员进行进一步评估,这些开发人员使用了2周。我们记录了91%的平均成功率和75%的平均成功率,在自动创建未纠缠的细粒度代码更改的集群。
2015-02-24 cs.SE
Compilation of Commit Changes within Java Source Code Repositories
本文提出 JESS 方法,通过仅编译提交中修改的相关代码并自动推断存根,解决了 Java 项目中修复提交难以编译为字节码的问题,显著提升了漏洞补丁字节码的获取效率。
2024-07-25 cs.PL cs.SE
Semantic Slicing of Architectural Change Commits: Towards Semantic Design Review
软件架构变更涉及多个模块或组件,与本地代码变更相比,分析起来很复杂。旨在审查变更提交的架构方面(设计)的开发团队考虑许多基本场景,例如访问规则和跨模块使用程序实体的限制。此外,当适当的架构公式对于开发和部署系统至关重要时,设计审查是必不可少的。理清架构更改、恢复语义设计和生成设计注释是设计评审过程的关键任务。为了支持这些任务,我们构建了一个轻量级工具[4],可以检测和分解包含架构实例的提交的语义切片。语义切片由变更实例中所涉及的模块、它们的类、方法和连接的模块的关系信息的描述组成,这对于审查者来说很容易理解。我们从源代码中提取各种目录和命名结构(DANS)属性来开发我们的工具。利用DANS属性,我们的工具首先根据我们定义的指标检测架构更改实例,然后分解切片(基于字符串处理)。我们对10个开源项目(用Java和Kotlin开发)的初步调查显示,DANS属性在检测和生成建筑切片时产生了高度可靠的精确度和召回率(93-100%)。我们提出的工具将作为初步的方法,语义设计恢复和设计摘要生成的项目版本。
2021-09-02 cs.SE
Towards Software Analytics: Modeling Maintenance Activities
雷曼定律告诉我们,随着时间的推移,软件系统将越来越不令用户满意,除非它不断地适应新的需求。了解软件维护可以潜在地减轻行业从业者目前经历的许多痛苦,并有助于减少不确定性、提高成本效益、可靠性等。研究界将软件维护分为3个主要活动:纠正:故障修复;完善:系统改进;适应:新功能引入。在这项工作中,我们试图模拟软件维护活动和设计一个提交分类方法能够产生一个高质量的分类模型。我们对我们的方法和现有技术进行了比较分析,基于11个流行的开源项目,我们手动分类了1151个提交,每个研究项目中有超过100个提交。我们设计的模型能够为测试数据集实现76%的准确度和63%的Kappa(在此上下文中被认为是“良好”),提高了20个百分点以上,在跨项目分类的背景下相对提高了约40%。然后,我们利用我们的提交分类方法来演示两个应用程序:(1)一个工具,旨在提供一个直观的可视化软件维护活动随着时间的推移,(2)深入分析维护活动和单元测试之间的关系。
2019-03-09 cs.SE
A Global Author-Identity Map for the World of Code:62.7M Developer Identities from 106.8M Author Strings over 5.87B Commits
University of Tennessee, Knoxville(田纳西大学诺克斯维尔分校)
研究全球软件仓库作者身份映射难题,提出含四个工件的方法,构建无巨型集群映射,提高人工身份提交覆盖率,揭示聚类问题及映射精度真相,与黄金集对比有一定召回率和精度,工件随版本发布。
2026-07-08 cs.SE
Analysis of Commit Signing on Github
University of Tennessee(田纳西大学)
研究分析GitHub提交签名的使用情况,发现签名率 misleading,开发者难以保持一致性,签名 lapse率随账户年龄增加,开发者管理签名密钥不当,导致供应链安全框架假设不成立。
2026-07-27 cs.CR cs.SE
An empirical evaluation of the usefulness of Tree Kernels for Commit-time Defect Detection in large software systems
在提交签入时进行缺陷检测可以防止缺陷引入软件系统。目前的缺陷检测方法依赖于基于度量的模型,这些模型不是很准确,并且其结果对开发人员没有直接的用处。我们提出了一种方法来检测bug诱导提交通过比较传入的更改与项目中所有过去的提交,同时考虑那些引入缺陷和那些没有。我们的方法在方法级的粒度上单独考虑提交中的单个更改。这样做有助于开发人员,因为他们被告知需要进一步关注的特定方法,而不是被告知整个提交都有问题。我们的方法将源代码表示为抽象语法树,并使用树内核来估计代码与以前提交的相似性。我们使用子树内核(STK),子集树内核(SSTK)或部分树内核(PTK)进行实验。然后使用K-NN分类器对过去的更改进行分类。我们使用NiCad克隆检测器作为基线,在BigCloneBench基准和Technical Debt数据集上评估我们的方法。我们的BigCloneBench基准测试的实验表明,树内核的方法可以检测克隆与NiCad的MAP相当。此外,在使用Technical Debt数据集进行缺陷检测时,树核的效率最低,MRR、F分数和准确度分别为0.87、0.80和0.82。
2021-06-21 cs.SE
ZeroIn: Characterizing the Data Distributions of Commits in Software Repositories
现代软件开发是基于一系列快速增量更改,这些更改由具有不同经验和专业知识水平的开发人员对大型源代码存储库进行协作。ZeroIn项目旨在分析这些动态现象的元数据,包括关于存储库、提交和开发人员的数据,以快速准确地标记提交到达存储库时的质量。在这种情况下,本文提出了一个表征的软件开发元数据的分布数据,最好的捕捉趋势的数据集。为此,我们分析了多个数据集,包括开发人员特性的Stack Overflow和超过4.52亿个存储库的GitHub数据,其中包含1600万次提交。这种表征旨在使生成多个合成数据集成为可能,这些数据集可用于训练和测试基于机器学习的新解决方案,以提高软件的可靠性,即使它在发展。它还旨在服务于开发过程,以利用跨存储库和开发人员的聚合空间的许多关键特征向量之间的潜在相关性。本文的数据特征化旨在为ZeroIn的机器学习组件提供信息,包括应用二进制分类器来早期标记有缺陷的软件提交,以及开发基于图的学习方法来利用存储库、提交和开发人员之间的稀疏连接。
2022-04-16 cs.SE
Bug-Fix Variants: Visualizing Unique Source Code Changes across GitHub Forks
分叉是开发人员在现有项目上进行构建时的常见做法。这些分叉创建了变体,这些变体具有共同的代码基础,但随后在不同的方向上发展代码,这是特定于分叉的项目需求的。拥有多个fork的一个有趣的副作用是能够在代码的不同演化方向之间进行选择,这是基于开发人员修复代码库中的bug。然而,关键问题在于,这种分散的信息形式很难分析。在这项研究中,我们提出了一个可视化来分析尚未合并回原始项目的fork存储库中的活动更改。我们的可视化显示了多个fork中的代码提交活动,突出显示了fork历史中的bug修复提交。虽然每个存储库的提交活动的可视化类似于GitHub的代码频率视图,但我们的视图仅显示fork存储库独有的提交。为了说明我们的可视化的有效性,我们将我们的视图应用于两个用例:从不再维护的存储库中识别fork,以及在fork中识别bug修复。在第一种情况下,我们识别了一个名为Obfuscator-LLVM的挂起项目的分支。我们的视图显示了原始存储库及其最活跃的分支,这些分支在顶部继续开发。在第二种情况下,我们在Clipy项目的一个分支中发现了一个bug修复。我们的视图显示,最活跃的分支有自己的bug修复;我们可以很容易地为视图中突出显示的bug识别补丁。作为一个新的想法论文,我们提出了我们的三个研究问题的大纲,以激发现实世界的用例和目标,我们的可视化有可能发现。我们的可视化原型可在\textcolor{…
2022-08-05 cs.SE
Exploiting Token and Path-based Representations of Code for Identifying Security-Relevant Commits
University of Waterloo(滑铁卢大学);SAP Security Research(SAP安全研究院)
公共漏洞数据库(如CVE和NVD)仅占开源项目中存在的安全漏洞的60%,并且已知质量不一致。在过去的两年中,在NPM和Maven Central等各种存储库中可用的项目中,已知漏洞的数量有了相当大的增长。这种日益增加的风险要求建立一种机制,以及时推断安全威胁的存在。我们提出了新的分层深度学习模型,用于从提交差异或Java类的源代码中识别安全相关的提交。通过将我们的模型与code2vec(一种从基于路径的代码表示中学习的最先进的模型)和逻辑回归基线进行比较,我们发现深度学习模型在识别安全相关的提交方面显示出有希望的结果。我们还对各种深度学习模型如何在不同的输入表示中学习以及正则化对模型泛化的影响进行了比较分析。
2019-11-15 cs.CL cs.SE
Dynamics of Team Library Adoptions: An Exploration of GitHub Commit Logs
当一群人努力理解新信息时,各种各样的想法争夺注意力。陡峭的学习曲线随着团队的共同学习而被克服。为了理解这些团队动态在软件开发中是如何发挥作用的,我们探索了Git日志,它提供了软件存储库的完整更改历史。在这些存储库中,我们观察到代码添加,这代表成功实现的想法,以及代码删除,这代表失败或被取代的想法。通过检查这些提交类型之间的模式,我们可以开始理解团队如何采用新信息。我们专门研究软件库被项目采用后会发生什么,即,在项目中首次使用库时。我们发现,各种因素,包括团队规模,库的流行程度和流行的堆栈溢出与团队学习和成功地采用新的软件库的速度有关。
2019-07-10 cs.SE cs.SI
Apples, Oranges & Fruits -- Understanding Similarity of Software Projects Through The Lens of Dissimilar Artifacts
开源项目的日益增长的可用性促进了开发人员重用现有的软件工件并利用它们开发新软件。然而,很难理解相似性的概念,因为它因开发人员而异。有些开发人员可能会搜索具有类似源代码的存储库,而有些开发人员可能会搜索具有类似需求或问题的存储库。现有的方法倾向于通过比较类似的工件来找到类似的项目,例如源代码与源代码,API使用与API使用,文档与文档等。即使两个类似的工件之间存在差异,两个不同的工件之间也可能存在相似性。因此,在本文中,我们的目标是回答这个问题-我们可以通过不同的工件找到软件存储库的相似性吗?为此,我们进行了一个实验,以找到三个存储库之间的相似之处,两个类似的项目和一个不同的项目比较相似和不同的工件(文档,提交和源代码)。我们观察到了不同工件之间的相似性,例如在相似和不同存储库的上下文中的提交、源代码和自述文件。
2021-03-02 cs.SE
From First Use to Final Commit: Studying the Evolution of Multi-CI Service Adoption
本研究分析近 1.9 万个 GitHub Java 项目在 2008—2024 年间对八种 CI 服务的采用与迁移,揭示多 CI 共存和替换的普遍模式及维护差异。
2025-07-27 cs.SE
Does the duration of rapid release cycles affect the bug handling activity?
软件项目通过所谓的发布定期更新新功能和错误修复。近年来,许多软件项目已经转向更短的发布周期,这可能会影响错误处理活动。过去的研究主要集中在从传统的切换到快速发布周期方面的错误处理活动的影响,但快速发布周期的持续时间的影响尚未被研究。我们实证研究了420个具有快速发布周期的开源项目的发布,以了解可变和快速发布周期持续时间对错误处理活动的影响。我们将这些项目的发布分为五类发布周期持续时间。对于每个项目,我们调查的顺序是如何发布相关的错误处理活动的指标,我们研究的周期持续时间的变化对错误修复的影响。我们的研究结果并没有显示出任何统计学上的显着差异,研究的错误处理活动的指标存在可变的快速发布周期的持续时间。这表明快速发布周期的持续时间似乎不会影响bug处理活动。
2021-03-15 cs.SE
Analyzing the Effects of CI/CD on Open Source Repositories in GitHub and GitLab
许多文章强调了在软件开发中实现持续集成和交付(CI/CD)管道的好处。这些管道有望提高项目的声誉,并减少存储库中的提交和问题数量。虽然CI/CD的采用最初可能会很慢,但从长远来看,它可以加速服务的交付和部署。本研究旨在调查CI/CD对两个开源存储库GitLab和GitHub中的提交速度和问题数量的影响。通过分析超过12,000个存储库并记录每个提交和问题,我们发现CI/CD将提交速度提高了141.19%,但问题数量也增加了321.21%。
2023-03-29 cs.SE
Deforking the World of Code: A Project-Provenance Map that Recovers Cross-Forge Fork Families that Platform Graphs Cannot See
University of Tennessee, Knoxville(田纳西大学诺克斯维尔分校)
针对Git分叉导致代码度量膨胀的问题,提出基于全局共享提交关系的去分叉映射p2PFull,通过集线节点星编码和并行Louvain聚类构建项目来源图,并验证了跨平台分叉家族的发现。
2026-07-14 cs.SE