A Survey of Third-Party Library Security Research in Application Software
本文综述了应用软件中第三方库的使用、生态系统、检测与防御加固研究,总结了现有成果与未来方向,旨在帮助开发者防范安全风险并促进软件生态健康发展。
2024-04-27 cs.SE
Giving Back: Contributions Congruent to Library Dependency Changes in a Software Ecosystem
第三方库在当代软件开发中的普遍采用导致了大型相互依赖网络的创建,其中单个库的可持续性问题可能具有广泛的网络效应。这些图书馆的维护人员往往超负荷工作,依靠志愿人员的贡献来维持这些图书馆。在这项工作中,我们测量与依赖关系变化一致的贡献,以了解它们来自哪里(即,非维护者、客户端维护者、库维护者、以及库和客户端维护者),分析它们是否有助于库休眠(即,缺乏活动),并调查这些贡献与开发人员的典型贡献之间的相似性。因此,我们利用社会技术来衡量依赖-贡献一致性(DC一致性),即,贡献与依赖的一致程度。我们进行了一项大规模的实证研究,使用170万个问题,97万个拉取请求(PR)和属于107,242个NPM包的超过530万个提交来测量NPM生态系统的DC一致性。在生态系统层面,我们在时间上精确定位与依赖性变化一致的峰值(即,16%DC一致性评分)。令人惊讶的是,这些贡献来自生态系统本身(即,客户端和库的非维护者)。在项目层面上,我们发现,DC一致性共享一个统计上显着的关系,一个包成为休眠的可能性。最后,通过比较贡献的源代码,我们发现,一致的贡献是统计上不同的典型贡献。我们的工作对鼓励和维持贡献有影响,特别是支持需要依赖关系更改的库维护者。
2022-05-26 cs.SE
ReadMe.LLM: A Framework to Help LLMs Understand Your Library
本文提出ReadMe.LLM框架,通过为软件库编写面向LLM的专用文档并附加到查询中,显著提升LLM在小众库代码生成任务上的准确率,最高可达100%。
2025-05-08 cs.SE
Selecting third-party libraries: The practitioners' perspective
选择第三方库是几乎任何软件开发项目的基本要素。然而,决定选择哪些库是一个具有挑战性的实际问题。选择错误的库会在成本、时间和开发工作方面严重影响软件项目,影响的严重程度取决于库在软件架构中的角色。尽管遵循仔细的图书馆选择过程很重要,但在实践中,第三方图书馆的选择仍然是以临时的方式进行的,其中数十个因素在决定中发挥着影响作用。在本文中,我们研究的因素,影响图书馆的选择过程中,所感知的行业开发人员。为此,我们对来自11个不同企业的16名开发人员进行了一项横断面访谈研究,并调查了115名参与选择库的开发人员。我们系统地设计了一套全面的26个技术、人力和经济因素,供开发人员在选择软件库时考虑。其中八个因素是新的文献。我们将解释这些因素中的每一个,以及它们如何在决策中发挥作用。最后,我们讨论了我们的工作的图书馆维护人员,潜在的图书馆用户,包管理器开发人员和经验的软件工程研究人员的影响。
2020-09-09 cs.SE
Automatic Diversity in the Software Supply Chain
尽管有明显的好处,但越来越多地采用包管理器来自动化库的重用,这为一类新的危险打开了大门:供应链攻击。通过在一个库中注入恶意代码,攻击者可能会危及依赖于该库的所有应用程序的所有实例。为了减轻供应链攻击的影响,我们提出了库替代框架的概念。这个新颖的概念利用了一个关键的观察:当应用程序依赖于一个库时,很可能存在提供类似功能的其他库。库替代框架的主要目标是使应用程序的开发人员能够利用其供应链中的库的多样性。该框架允许他们生成一系列应用程序变体,每个变体都依赖于提供类似功能的不同替代库。为了研究这个概念的相关性,我们开发了ARGO,这是这个框架的概念验证实现,它利用了JSON供应商的多样性。我们研究了图书馆替代的可行性及其对368个客户端的影响。我们的实证结果表明,在368个测试的Java应用程序中,有195个可以用至少15个其他JSON库来替换客户端使用的原始JSON库,而无需修改客户端的代码。这些结果表明,图书馆替代框架的能力,以多样化的供应链的客户端应用程序的图书馆,它的目标。
2021-11-04 cs.SE
"How do people decide?": A Model for Software Library Selection
基于对全球24位专业人士的访谈,运用Straussian grounded theory推导出由六种选择模式主导的软件库选择过程模型,为开发兼顾技术与非技术因素的软件库选择工具奠定基础。
2024-03-24 cs.HC cs.SE
Modx: Binary Level Partial Imported Third-Party Library Detection through Program Modularization and Semantic Matching
随着软件的快速增长,使用第三方库(TPL)变得越来越流行。程序库使用的繁荣为软件工程师提供了许多方便和促进程序开发的方法。不幸的是,这也带来了巨大的挑战,因为管理大量的图书馆变得更加困难。已经提出了检测和理解软件中的TPL的研究和学习。然而,大多数现有的方法依赖于句法特征,当这些特征被敌对方改变或故意隐藏时,这些特征是不鲁棒的。此外,这些方法通常将每个导入的库建模为整体,因此不能应用于主机软件仅部分使用库代码段的场景。为了检测完全和部分导入的TPL在语义层面上,我们提出了ModX,一个框架,利用新的程序模块化技术分解成细粒度的功能为基础的模块的程序。通过提取语法和语义特征,度量模块之间的距离,检测程序中相似库模块的重用。实验结果表明,ModX优于其他模块化工具,通过区分更连贯的程序模块,模块质量分数提高353%,并击败其他TPL检测工具,平均精度提高17%,召回率提高8%。
2022-04-18 cs.SE
pyRecLab: A Software Library for Quick Prototyping of Recommender Systems
本文介绍了pyRecLab,一个用C++编写的软件库与Python绑定,允许快速训练,测试和开发推荐系统。虽然有几个软件库用于此目的,但只有少数几个可以让开发人员快速开始使用最传统的方法,允许他们尝试不同的参数并处理多个任务,而不会显着降低性能。在少数几个具有所有这些功能的库中,它们可以在Java,Scala或C#等语言中使用,这对于经验不足的程序员来说是一个缺点,他们更习惯于流行的Python程序设计语言。在这篇文章中,我们将详细介绍pyRecLab,并从错误度量(MAE和RMSE)和训练/测试时间方面进行性能分析。我们将其与流行的基于Java的库LibRec进行基准测试,结果相似。我们希望经验不足的程序员和对快速原型化推荐系统感兴趣的人能够从pyRecLab中受益。
2017-07-11 cs.IR cs.SE
Dynamics of Team Library Adoptions: An Exploration of GitHub Commit Logs
当一群人努力理解新信息时,各种各样的想法争夺注意力。陡峭的学习曲线随着团队的共同学习而被克服。为了理解这些团队动态在软件开发中是如何发挥作用的,我们探索了Git日志,它提供了软件存储库的完整更改历史。在这些存储库中,我们观察到代码添加,这代表成功实现的想法,以及代码删除,这代表失败或被取代的想法。通过检查这些提交类型之间的模式,我们可以开始理解团队如何采用新信息。我们专门研究软件库被项目采用后会发生什么,即,在项目中首次使用库时。我们发现,各种因素,包括团队规模,库的流行程度和流行的堆栈溢出与团队学习和成功地采用新的软件库的速度有关。
2019-07-10 cs.SE cs.SI
Towards Understanding Third-party Library Dependency in C/C++ Ecosystem
第三方库(TPL)经常在软件中重用,以降低开发成本和上市时间。但是,外部库依赖性可能会在主机应用程序中引入漏洞。图书馆的依赖性问题已经引起了相当大的关注。许多包管理器,如Maven,Pip和NPM,被提议用于管理TPL。此外,大量的努力已经投入到研究语言生态系统中的依赖关系,如Java,Python和JavaScript(C/C++除外)。由于缺乏统一的C/C++包管理器,现有的研究对C/C++生态系统中的TPL依赖了解甚少,特别是在大规模的情况下。为了深入理解C/C++生态系统中的TPL依赖,本文收集了现有的TPL数据库、包管理工具和依赖检测工具,总结了C/C++项目的依赖模式,构建了一个全面而精确的C/C++依赖检测器。使用我们的检测器,我们从GitHub上包含24 K C/C++存储库的大型数据库中提取依赖关系。基于提取的依赖关系,我们提供了实证研究的结果和发现,其目的是了解第三方物流的依赖关系的特点。我们进一步讨论了C/C++依赖管理的意义以及未来软件工程研究人员和开发人员在库开发、软件组合分析和C/C++包管理等领域的研究方向。
2022-09-20 cs.SE
DUETS: A Dataset of Reproducible Pairs ofJava Library-Clients
软件工程研究人员寻找软件工件来研究它们的特性或评估新技术。本文介绍了DUETS,这是一个新的软件库及其客户端数据集。可以利用这个数据集来获得许多不同的见解,例如API使用情况、使用情况输入或关于客户端和库的测试套件的新观察。DUETS旨在支持静态和动态分析。这意味着库和客户端编译正确,它们是可执行的,并且它们的测试套件通过。该数据集由在GitHub上获得五星以上评价的开源项目组成。最终的数据集包含395个库和2,874个客户端。此外,我们还提供了用于创建此数据集的原始数据,例如34,560个pom.xml文件或来自34,560个项目的完整文件列表。该数据集可用于研究客户如何使用库,或作为成功构建的软件项目的列表。客户端的测试套件可以用作修改库的代码转换技术的附加验证步骤。
2021-03-17 cs.SE
MigMate: A VS Code Extension for LLM-based Library Migration of Python Projects
New York University Abu Dhabi(阿布扎比纽约大学);University of Alberta(阿尔伯塔大学)
MigMate是一款基于LLM的VS Code插件,通过集成自动化迁移过程,帮助开发者更高效地完成Python项目库迁移任务。
2026-03-02 cs.SE
How Research Software Engineers Can Support Scientific Software
我们是桑迪亚国家实验室软件工程和研究部的研究软件工程师和团队成员,该组织旨在推进计算科学领域的软件工程。我们的团队希望促进流程和原则,从而在科学软件中实现算法和应用程序的高质量,严谨性,正确性和可重复性。我们用我们的经验来论证,有一套容易实现的软件工具和最佳实践,具有很大的投资回报,可以传授给科学研究人员,这将显着提高软件的质量,因此,研究的质量。
2020-10-14 cs.SE
Forecasting the risk of software choices: A model to foretell security vulnerabilities from library dependencies and source code evolution
本文提出一个白盒轻量级模型,通过形式化源代码演化与库依赖,在库级别预测软件项目未来面临CVE披露的概率,辅助项目特定技术决策与生态系统健康度量。
2024-11-17 cs.CR cs.ET cs.SE
Exit the Code: A Model for Understanding Career Abandonment Intention Among Software Developers
本文通过调查221名开发人员并基于改编的Investment Model构建结构方程模型,揭示了技术满意度、职业投资等因素对当前在职软件开发人员职业放弃意向的影响,为制定人员保留策略提供了理论依据。
2025-03-06 cs.HC cs.SE
CompSuite: A Dataset of Java Library Upgrade Incompatibility Issues
本文提出CompSuite数据集,包含123个真实Java客户端-库升级不兼容问题及测试用例和命令行工具,支持一键检查与逐步重现,促进兼容性检查、调试和回归测试选择等研究。
2023-05-15 cs.SE
A Metric For The Activeness Of An Object-Oriented Component Library
本文对面向对象构件库的活动性进行了分析,提出了一种称为构件活动商的软件度量方法。CAQ的优点包括可以在各种OOCL之间进行比较,从而选择最佳OOCL用于开发任务,并且可以通过CAQ的值来衡量软件的稳定性。CAQ的缺点是由于其主观性和随机性,可能存在一定的误差。本文还尝试对积极商的计算方法进行改进。RQ大于1且MQ等于0的软件组织的极端情况不能通过取RQ和MQ的平均值来计算AQ。即兴发挥是AQ必须等于MQ和RQ的乘积,这在附录中提到。
2012-09-20 cs.SE
Building and Maintaining a Third-Party Library Supply Chain for Productive and Secure SGX Enclave Development
随着对隐私泄露的担忧飙升,大数据行业正面临新的挑战。隐私泄露事件的补救措施之一是在硬件辅助的可信执行环境(TEE)中封装敏感数据上的计算。这种基于TEE的软件被称为安全飞地。安全飞地具有各种优势,可以竞争隐私保护计算解决方案。然而,与普通软件相比,飞地的构建更具挑战性。原因是TEE软件的开发必须遵循限制性编程模型,以有效利用硬件强制执行的强大内存加密和隔离。这些约束可传递地应用于软件的所有第三方依赖项。如果这些依赖项不正式支持TEE硬件,TEE开发人员必须花费额外的工程工作来移植它们。高开发和维护成本是在生产中采用基于TEE的隐私保护解决方案的主要障碍之一。在本文中,我们介绍了我们的经验和成就,构建和持续维护第三方图书馆供应链的TEE开发人员。特别是,我们将大量Rust第三方库移植到英特尔SGX中,这是最成熟的可信计算平台之一。我们的供应链通过特定于新交所的安全审计及时接受上游补丁。我们已经能够以合理的运营成本维护159个开源Rust库的SGX端口。我们的工作可以有效地降低开发SGX安全区的工程成本,以保护隐私的数据处理和交换。
2020-05-09 cs.SE
Import2vec - Learning Embeddings for Software Libraries
Nokia Bell Labs(诺基亚贝尔实验室)
我们认为,开发合适的学习表示(嵌入)库包,捕捉库之间的语义相似性的问题。已知这样的表示可以提高下游学习任务(例如分类)或应用(例如上下文搜索和类比推理)的性能。我们应用自然语言处理(NLP)中的词嵌入技术来训练库包(“库向量”)的嵌入。库向量通过类似的使用上下文来表示库,这些上下文由源代码中存在的导入语句确定。在三个大型开源软件语料库上训练这种嵌入所获得的实验结果表明,库向量捕获了软件库之间的语义上有意义的关系,例如框架及其插件与生态系统中通常一起使用的库之间的关系,例如大数据基础设施项目(Java),前端和后端Web开发框架(JavaScript)和数据科学工具包(Python)。
2019-03-27 cs.IR cs.LG cs.SE
Bridging the Language Gap: An Empirical Study of Bindings for Open Source Machine Learning Libraries Across Software Package Ecosystems
University of Alberta(阿尔伯塔大学)
本文通过BindFind方法收集并实证研究跨13个软件包生态系统的2,436个ML库绑定,揭示其多由社区维护、版本覆盖有限且技术滞后严重,为开发者集成与后续研究提供依据。
2024-08-19 cs.LG cs.SE
Characterizing Python Library Migrations
本研究通过人工标注335次Python库迁移的3096处代码变更,构建迁移代码变更分类体系PyMigTax,揭示Python库迁移的多维度特征及现有迁移工具的不足。
2024-01-29 cs.SE
Is ChatGPT a Good Software Librarian? An Exploratory Study on the Use of ChatGPT for Software Library Recommendations
Concordia University(康考迪亚大学);University of Calgary(卡尔加里大学)
本研究评估了ChatGPT作为软件库管理员的有效性,发现其推荐第三方库的频率高于人类开发者,但存在未明确提示限制性许可证及部分库无法开箱即用等问题,建议开发者加强依赖管理与许可证核查。
2024-08-09 cs.AI cs.LG cs.SE
Vulnerability Propagation in Package Managers Used in iOS Development
本文分析了 Swift 生态系统中漏洞在库依赖网络内的传播机制,发现原生 iOS 语言库影响最大,且多数关键漏洞依赖可通过升级修复,但公开的漏洞代码位置信息通常缺失。
2023-05-17 cs.SE
MMPersistence: A mathematical morphology-oriented software library for computing persistent homology on cubical complexes
National University of Kaohsiung(高雄大学)
MMPersistence库结合数学形态学与持续同调,用于提取数字图像的多尺度拓扑信息。
2026-02-17 cs.SE math.AT
Intertwining Communities: Exploring Libraries that Cross Software Ecosystems
在应用程序中使用库可以帮助开发人员降低重新开发现有代码的成本。然而,不同技术栈和第三方库使用的增加导致开发人员不可避免地切换技术并搜索在新技术中实现的类似库。为了帮助寻找这些替代库,维护人员已经开始将他们的库发布到多个生态系统。我们的目标是探索这些图书馆在生态系统之间相互交织的程度。我们对来自五个不同软件生态系统的110万个库进行了大规模的实证研究,即,PyPI、CRAN、Maven、RubyGems和NPM,以识别4,146个GitHub存储库。作为一个起点,这项研究的见解为图书馆维护者、用户、贡献者和研究人员提供了启示,帮助他们了解这些不同的生态系统如何变得更加相互交织。
2023-03-16 cs.SE
A Study of Library Usage in Agent-Authored Pull Requests
King's College London(伦敦国王学院)
研究探讨了代理生成的拉取请求中图书馆使用情况,发现代理频繁导入图书馆但很少引入新依赖项,且在引入时遵循严格的版本控制实践。
2026-01-27 cs.SE
An Empirical Study on the Impact of Refactoring Activities on Evolving Client-Used APIs
背景:重构被认为是维护不断发展的软件系统的有效实践。对于软件库,我们研究了库开发人员如何重构他们的应用程序编程接口(API),特别是当它通过破坏库的API而影响客户端用户时。目标:我们的工作旨在了解使用库API的客户端如何受到重构活动的影响。我们的目标是可能影响更多图书馆客户端用户的流行图书馆。方法:我们根据客户端使用情况(称为客户端使用的API)来区分库API,以了解API损坏与重构的相关程度。我们基于工具的方法允许跨八个图书馆进行大规模研究(即,共有183个连续版本),客户项目约900个。结果:我们发现库维护者不太可能破坏客户端使用的API类。定量地说,我们发现重构活动破坏了不到37%的客户端使用的API。在更定性的分析中,我们展示了两个记录在案的案例,其中非重构API破坏性更改是由其他维护问题引起的(即,bug修复和新特性),并涉及更复杂的重构操作。结论:使用我们的自动化方法,我们发现库开发人员不太可能破坏API,并且在解决这些维护问题时倾向于破坏客户端使用的API。
2017-09-28 cs.SE
On Designing Better Tools for Learning APIs
现代软件开发需要在学习应用程序编程接口(API)方面进行大量投资。最近的研究发现,学习材料本身往往是不够的:开发人员很难找到简单的使用场景之外的答案。解决这些问题需要在工具和搜索引擎开发方面进行大量投资。为了了解进一步投资在哪些方面最有用,我们与19名专业开发人员进行了一项研究,以了解没有技术限制的解决方案可能是什么样子。在本文中,我们报告了API学习工具的设计含义,基于专业开发人员本身的现实。在参与者的反馈中反复出现的主题是可信度、机密性、信息过载和需要代码示例作为一流的文档工件。
2014-02-05 cs.SE
Req2Lib: A Semantic Neural Model for Software Library Recommendation
Tongji University(同济大学)
第三方库对于软件项目的开发至关重要。为了获得合适的库,开发人员需要通过筛选、评估和比较来搜索数百万个库。大量的库为程序员找到合适的库设置了障碍。为了帮助开发人员,研究人员提出了基于库使用模式推荐库的自动化方法。然而,这些先前的研究不能充分满足用户的需求,并遭受冷启动问题。在这项工作中,我们希望根据需求描述提出建议,以避免这些问题。为此,我们提出了一种新的神经方法,称为Req 2Lib,它推荐了项目需求描述的库。我们使用一个Sequence-to-Sequence模型来学习自然语言的需求描述的库链接使用信息和语义信息。此外,我们将特定领域的预训练word 2 vec模型应用于词嵌入,该模型是在Stack Overflow帖子的文本语料库上训练的。在实验中,我们用来自5,625个java项目的数据对模型进行了训练和评估。我们的初步评估表明,Req 2Lib可以准确地推荐库。
2020-05-24 cs.IR cs.LG cs.SE
Enhancing Security in Third-Party Library Reuse -- Comprehensive Detection of 1-day Vulnerability through Code Patch Analysis
针对第三方库复用引入的1-day漏洞检测难题,本文设计实现工具VULTURE,通过LLM构建数据库、哈希比较依赖及相似性、版本与块级分析,在10个真实项目中从178个复用TPLs识别出175个漏洞,提升复用安全性。
2024-11-29 cs.SE
Control Flow Graph Recovery for Dynamically Loaded Code via Symbolic Library Resolution
V.M. Glushkov Institute of Cybernetics of the NAS of Ukraine(乌克兰国家科学院V.M.格鲁什科夫控制论研究所)
提出结合符号执行与推测性库预加载的方法,通过拦截动态加载操作并加载实际库到分析状态,恢复二进制文件中动态加载代码的控制流图,在16个合成基准测试中平均额外恢复29.8%的节点和26.5%的边,库检测精度和召回率均达100%。
2026-05-28 cs.CR cs.SE
Ginkgo -- A Math Library designed for Platform Portability
与软件可持续性的第一个关联可能是持续集成(CI)框架的存在;由单元测试、集成测试和端到端测试组成的测试框架的存在;以及软件文档的存在。然而,当问什么是科学软件产品的常见致命打击时,通常是缺乏平台和性能可移植性。在此背景下,我们设计了Ginkgo库,主要关注平台可移植性,不仅能够移植到新的硬件架构,而且还能实现良好的性能。在本文中,我们介绍了Ginkgo库设计,从根本上将算法与硬件特定的内核分离,形成不同的硬件执行器,并报告了我们在为NVIDIA,AMD和Intel GPU添加执行后端时的经验。我们还评论了不同级别的性能可移植性,以及我们在不同硬件后端上实现的性能。
2020-11-17 cs.DC cs.MS cs.PF
JISA: A Polymorphic Test-and-Measurement Automation Library
本研究提出了Java编写的多态测试测量自动化库JISA,支持仪器无关的测量代码复用、简便数据处理及预构建GUI模块,帮助物理科研人员快速搭建实验控制软件。
2023-08-25 cs.SE physics.ins-det
Fine-Grained Network Analysis for Modern Software Ecosystems
现代软件开发越来越依赖于来自第三方供应商或开源供应商的组件、库和框架,并通过许多平台(或锻造)提供。这种编写软件的方式强调重用和组合,使现代应用程序所需的服务商品化。另一方面,存在于这样一个生态系统中的单个库中的错误和漏洞可以直接或通过传递性影响大量其他库和应用程序。目前,只有关于库依赖关系的产品级信息被用来包含这种危险,但这种知识往往显示出其本身太不精确,导致有效的(可能是自动化的)处理策略。我们将讨论细粒度的函数级依赖如何极大地提高可靠性并减少漏洞对整个软件生态系统的影响。
2020-12-08 cs.SE cs.SI
SkillOps: Managing LLM Agent Skill Libraries as Self-Maintaining Software Ecosystems
Emory University(埃默里大学);University of Illinois Urbana-Champaign(伊利诺伊大学厄巴纳-香槟分校)
SkillOps通过自维护软件生态系统方法管理LLM代理技能库,解决技能库中的技术债务问题,提升技能检索、组合和执行效率,实验表明其在ALFWorld上任务成功率高达79.5%。
2026-05-13 cs.MA cs.SE
JS-son -- A Lean, Extensible JavaScript Agent Programming Library
Umeå University(于默奥大学)
存在大量面向Agent的软件工程框架,其中大多数是由学术界的多Agent系统社区开发的。然而,这些框架经常将编程范式强加给用户,这对于习惯于现代高级程序设计语言(如JavaScript和Python)的工程师来说是一个挑战。为了展示如何通过面向代理的编程的软件工程主流可以促进,我们提供了一个精益的JavaScript库原型实现推理循环代理。该库专注于核心代理编程概念,避免对编程方法施加进一步的限制。为了说明它的有用性,我们展示了该库如何应用于网络上的多代理系统模拟,部署到云托管的功能即服务环境,并嵌入到基于Python的数据科学工具中。
2020-03-10 cs.AI cs.MA cs.SE
On the Performance of Hybrid Search Strategies for Systematic Literature Reviews in Software Engineering
内容:在进行系统性文献综述(SLR)时,研究人员通常面临的挑战是设计一个搜索策略,以适当平衡结果质量和综述工作。仅仅使用数字图书馆(或数据库)搜索或滚雪球可能不足以获得高质量的结果。另一方面,同时使用数字图书馆搜索和滚雪球可以增加总体审查工作。目的:本研究的目的是提出和评估混合搜索策略,选择性地结合数据库搜索与滚雪球。方法:我们提出了四种混合搜索策略结合数据库搜索在数字图书馆与迭代,并行,或顺序向后和向前滚雪球。我们模拟了三个现有的SLR在SE,采用数据库搜索和滚雪球的策略。我们比较了数字图书馆搜索,滚雪球,和混合策略的结果,使用精度,召回率和F-测量,以调查每种策略的性能。结果如下:我们的研究结果表明,对于所分析的SLR,将Scopus数字图书馆的数据库搜索与并行或顺序滚雪球相结合,实现了精确度和召回率的最适当平衡。结论:我们提出,根据SLR的目标和可用的资源,使用混合搜索策略,涉及一个有代表性的数字图书馆和并行或顺序滚雪球往往是一个合适的替代方案时,在SLR中搜索证据。
2020-04-21 cs.DL cs.SE
Code Librarian: A Software Package Recommendation System
JP Morgan Chase(摩根大通)
使用打包库可以通过提高代码的质量和可读性来显著缩短软件开发周期。在本文中,我们提出了一个推荐引擎称为Librarian的开源图书馆。推荐一个候选库包用于给定的上下文,如果:1)它经常与程序中导入的库一起使用; 2)它与程序中导入的库具有相似的功能; 3)它与开发人员的实现具有相似的功能; 4)它可以在所提供的代码的上下文中有效地使用。我们应用最先进的基于CodeBERT的模型来分析源代码的上下文,以向用户提供相关的库建议。
2023-02-07 cs.AI cs.SE
CodeTF: One-stop Transformer Library for State-of-the-art Code LLMs
Salesforce AI Research(Salesforce AI研究院)
CodeTF是一个面向最新代码大模型的统一Transformer库,通过模块化设计和可扩展框架,提供统一接口以快速开发和部署代码大语言模型及代码智能应用。
2025-12-22 cs.AI cs.SE
The Dynamics of Software Composition Analysis
今天的开发人员使用了大量的开源代码,这就需要自动审计和升级库依赖关系的方法,并产生了软件组合分析(SCA)的子领域。SCA产品涉及三项任务:发现依赖项、检查易受攻击代码的可达性以消除误报,以及自动修复。后两个任务依赖于应用程序和库代码的调用图来检查库中标识的特定于可扩展性的接收器是否被应用程序使用。然而,静态构造的调用图在现实世界的项目中引入了假阳性和假阴性。在本文中,我们开发了一种新的,模块化的手段相结合的调用图来自静态和动态分析,以提高性能的假阳性消除。我们的实验表明显着的性能改善。
2019-09-30 cs.PL cs.SE
Mahotas: Open source software for scriptable computer vision
Instituto de Medicina Molecular(分子医学研究所)
Mahotas是Python的计算机视觉库。它包含传统的图像处理功能,如滤波和形态学运算,以及更现代的计算机视觉功能,用于特征计算,包括兴趣点检测和局部描述符。接口是用Python编写的,Python是一种动态规划语言,非常适合快速开发,但算法是用C++实现的,并针对速度进行了调整。该库旨在适应该语言的科学软件生态系统,并可以利用该语言开发的现有基础设施。Mahotas是在自由开源许可证(MIT许可证)下发布的,可以从(http://github.com/luispedro/mahotas)和Python包索引(http://pypi.python.org/pypi/mahotas)获得。
2013-01-05 cs.CV cs.SE
From Library Portability to Para-rehosting: Natively Executing Microcontroller Software on Commodity Hardware
查找微控制器(MCU)固件中的错误是一项挑战,即使对于拥有源代码的设备制造商也是如此。MCU运行与x86不同的指令集,并暴露出非常不同的开发环境。这使x86上许多现有的复杂软件测试工具失效。为了维护一个统一的开发和测试环境,一个简单的方法是将源代码重新编译为商品机器的本机可执行文件(称为rehosting)。然而,ad-hoc re-hosting是一项艰巨而繁琐的任务,并且存在许多问题(库依赖性,内核依赖性和硬件依赖性)。在这项工作中,我们系统地探讨了MCU软件的可移植性问题,并提出pararehosting,以减轻移植过程。具体来说,我们抽象和实现一个便携式MCU(PMCU)使用POSIX接口。它模拟了MCU内核的常见功能。对于外围特定的逻辑,我们提出了基于HAL的外围功能替换,其中高级别的硬件功能被替换为主机上的等效后端驱动程序。这些后端驱动程序由精心设计的para-API调用,可以在许多MCU操作系统中重用。我们将常见的HAL函数分为四种类型,并实现了用于快速后端开发的模板。使用所提出的方法,我们已经成功地重新托管了9个MCU操作系统,包括广泛部署的Amazon FreeRTOS、ARM Mbed OS、Zephyr和LiteOS。为了证明我们的方法在安全测试方面的优越性,我们使用现成的动态分析工具(AFL和ASAN)对重新托管的程序,并发现了28个以前未知的错误,其中5个…
2021-07-04 cs.CR cs.DC cs.PL
NeuroCodeBench: a plain C neural network benchmark for software verification
The University of Manchester(曼彻斯特大学);Universidade Federal do Amazonas(亚马逊联邦大学)
本文提出了NeuroCodeBench,一个针对纯C语言编写神经网络代码的验证基准,包含32个网络和607个安全属性,评估表明现有软件验证器在标准C数学库支持和大型网络复杂性方面存在困难。
2023-09-07 cs.AI cs.CR cs.SE
VULNERLIZER: Cross-analysis Between Vulnerabilities and Software Libraries
University of Innsbruck(因斯布鲁克大学)
本文提出 VULNERLIZER 框架,通过聚类算法对 CVE 与软件库进行交叉分析并训练模型更新权重,实现对未来易受攻击软件库的预测,准确率达 75% 以上。
2023-09-18 cs.CR cs.LG cs.SE