Comparing ML-Specific and General Python Code Smells Across Project Characteristics
通过分析279个GitHub上的开源机器学习项目,研究项目特征(如规模、年龄、贡献者、提交频率、CI/CD采用和领域)与ML特定及通用Python代码异味的关系,发现ML代码异味频率远低于通用Python异味,且提交频率和领域与ML特定质量显著相关,而通用Python异味与项目特征无关,表明需要针对不同异味类型制定定制化质量策略。
2026-06-01 cs.SE
NICHE: A Curated Dataset of Engineered Machine Learning Projects in Python
机器学习(ML)已经得到了广泛的关注,并已融入我们的日常生活。虽然在GitHub等开源平台上有许多公开可用的ML项目,但在过滤这些项目以策划高质量ML项目方面的尝试有限。这种高质量数据集的有限可用性对理解ML项目构成了障碍。为了帮助清除这个障碍,我们提出了NICHE,一个由572个ML项目组成的手动标记数据集。基于良好的软件工程实践的证据,我们将这些项目中的441个标记为工程项目,131个标记为非工程项目。该数据集可以帮助研究人员了解高质量ML项目所遵循的实践。它还可以用作分类器的基准,用于识别工程ML项目。
2023-03-11 cs.SE
Testing in the Evolving World of DL Systems:Insights from Python GitHub Projects
本研究通过分析GitHub上300个精选Python深度学习项目,量化了测试自动化、测试类型、测试套件增长及测试实践演变,揭示了开源DL社区中的测试实践现状。
2024-05-30 cs.SE
Faster or Slower? Performance Mystery of Python Idioms Unveiled with Empirical Evidence
Python习惯用法在Python开发人员中很受欢迎,在Stack Overflow上对101个与Python习惯用法有关的性能问题进行的形成性研究中,我们发现开发人员经常对Python习惯用法的性能影响感到困惑,并使用轶事玩具代码或依赖于个人项目经验,这在性能结果中往往是矛盾的。一直没有大规模的,系统的经验证据来调和这些性能的争论。在本文中,我们创建了一个大型的合成数据集,其中包含24,126对非惯用和功能等效的惯用代码,用于Zhang等人确定的9种独特的Python惯用法,本文提出了一种可靠的性能度量方法,比较了惯用代码与非惯用代码的性能提升或降低,分析了合成代码与真实项目代码之间的性能差异、代码特征与性能变化之间的关系以及字节码级别性能变化的根本原因。我们总结了我们的发现,作为使用Python习惯用法的一些可操作的建议。
2023-01-30 cs.SE
So Much in So Little: Creating Lightweight Embeddings of Python Libraries
在软件工程中,不同的方法和机器学习模型利用不同类型的数据:源代码、文本信息、历史数据。任何项目的一个重要组成部分是它的依赖关系。依赖项列表相对较小,但带有大量语义,可用于比较项目或对其进行判断。在本文中,我们重点关注Python项目及其以requirements.txt文件形式存在的PyPi依赖项。我们编译了一个包含7,132个Python项目及其依赖关系的数据集,并使用Git从前几年中提取它们的版本。使用这些数据,我们通过将奇异值分解应用于项目和库的共生矩阵来构建32维的库嵌入。然后,我们聚类的嵌入和研究它们的语义关系。为了展示这种轻量级库嵌入的有用性,我们介绍了一个原型工具,用于向给定项目建议相关库。该工具计算项目嵌入,并使用具有类似嵌入的项目的依赖关系来形成建议。为了比较不同的库编译器,我们基于开源项目中依赖集的演变创建了一个基准。基于创建的嵌入的方法显著优于显示给定年份中最受欢迎的库的基线。我们还进行了一项用户研究,结果表明,不同项目领域的建议质量不同,即使是相关的建议也可能不是特别有用。最后,为了促进潜在的更有用的推荐,我们扩展了推荐系统,提供了一个推荐稀有库的选项。
2022-09-07 cs.SE
Improving Tese Case Generation for Python Native Libraries Through Constraints on Input Data Structures
现代Python项目使用本机库执行计算函数,并提供Python接口以提高执行速度;因此,测试这些库对于项目的健壮性至关重要。一个挑战是,现有的方法使用覆盖率来指导生成,但原生库作为没有执行信息的Python代码的黑盒运行。另一个原因是动态二进制插装降低了测试性能,因为它需要同时监控本机库和Python虚拟机。为了解决这些挑战,在本文中,我们提出了一个自动化的测试用例生成方法,在Python代码层工作。我们的见解是,原生库中的许多路径条件是通过与VM交互来处理输入数据结构。在我们的方法中,我们仪器的Python解释器来监视本地库和VM之间的交互,派生结构上的约束,然后使用约束来指导测试用例生成。我们在一个名为PyCing的工具中实现了我们的方法,并将其应用于六个广泛使用的Python项目。实验结果表明,在结构约束指导下,PyCing能够覆盖比现有测试用例和最先进工具更多的执行路径。此外,使用测试框架Pytest中的检查器,PyCing可以识别10个Python接口中的分段错误和9个接口中的内存泄漏。我们的仪器策略对测试效率也有可接受的影响。
2022-06-28 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
An Empirical Analysis of Cross-OS Portability Issues in Python Projects
Federal University of Pernambuco(伯南布哥联邦大学);North Carolina State University(北卡罗来纳州立大学)
本研究首次大规模实证分析Python跨操作系统可移植性问题,通过测试重执行和GitHub问题分析,提出分类体系并验证LLM修复能力,为开发者提供实践指导。
2026-09-25 cs.SE
Influence of Roles in Decision-Making during OSS Development -- A Study of Python
治理被强调为开放源码软件项目成功的一个关键因素。人们普遍认为,在一种任人唯贤和专制并存的治理模式中,关于开放源码软件包括哪些功能的决策责任由选定角色的成员分担,主要是项目领导人。然而,较少的审查已经取得了这些角色的成员是否也突出DM讨论和决策是如何作出的,以显示他们在项目的成功发挥了不可或缺的作用。我们认为,要建立他们的影响力,不仅需要审查项目领导人作出决定的提案的讨论,而且还需要审查其他人作出决定的提案的讨论。因此,在这项研究中,我们研究了成员在以下方面扮演不同角色的突出性:(i)做出决策,(ii)在DM讨论中扮演某些社会角色(例如,讨论发起人),(三)通过DM讨论为开放源码软件开发社会网络作出贡献,以及(四)在这两种情况下如何作出决定。我们在著名的Python项目的发展过程中研究这些方面。我们对他们20年来的电子邮件通信进行了数据驱动的纵向研究,包括大约150万封电子邮件。这些电子邮件包含466个Python增强建议(PEP)的决定,这些建议记录了语言的演变。我们的研究结果使不同角色的影响对未来(新)成员,其他利益相关者,更广泛地说,对OSS研究社区是透明的。
2021-06-04 cs.SE
Real-World Fault Detection for C-Extended Python Projects with Automated Unit Test Generation
University of Namur(南纳穆尔大学);University of Passau(帕绍大学);JetBrains Research(JetBrains研究院);Delft University of Technology(代尔夫特理工大学)
本研究提出通过分离测试生成过程的生成与执行阶段,利用子进程执行技术提升C扩展Python项目中故障检测的覆盖率和准确性。
2026-03-06 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
Do Stack Overflow Answer Edits Occur Beyond Java? A Replication on Python and JavaScript
Faculty of Information and Communication Technology, Mahidol University(马希隆大学信息与通信技术学院);State University of Ceara (UECE)(塞阿拉州立大学)
本研究在Python和JavaScript上复现Java相关研究,发现这两种语言的已采纳回答编辑率约为Java的2.5倍,且编辑数量随GitHub项目人气升高而增加,原研究结论可推广至Java之外。
2026-08-13 cs.SE
A Generic and Efficient Python Runtime Verification System and its Large-scale Evaluation
本文提出PyMOP,一个通用高效的Python运行时验证系统,支持多种逻辑与算法,在29万多个测试中比现有系统快千倍以上,并已帮助发现并修复多个真实错误。
2025-09-08 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
DyPyBench: A Benchmark of Executable Python Software
本文提出 DyPyBench,一个包含 50 个可执行开源 Python 项目、681k 行代码和 30k 测试用例的动态分析基准,并展示其在调用图比较、LExecutor 训练和 API 规范挖掘中的应用。
2024-03-01 cs.SE
Beyond pip install: Evaluating LLM Agents for the Automated Installation of Python Projects
针对现有LLM软件工程智能体缺失仓库级依赖安装任务的问题,构建含40个Python项目的安装任务基准,提出Installamatic智能体通过检索仓库文档完成安装验证,实验显示55%的仓库十次尝试中至少可成功安装一次,并分析了失败原因与挑战。
2024-12-09 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
FlaPy: Mining Flaky Python Tests at Scale
FlaPy是一个通过重跑测试套件来大规模挖掘Python不稳定测试的框架,利用容器化隔离、多种依赖安装策略和SLURM并行化,实现准确、高效的大规模扫描,并以表格呈现结果。
2023-05-08 cs.SE
Social Popularity of GitHub Projects: A Lifeline or a Liability?
Guru Nanak Dev University(古鲁纳克德夫大学)
本研究使用加速失效时间模型分析73,000多个GitHub仓库,发现人力资本是项目存活的关键,而过度社会关注反而成为负担,与易用性结合时加速项目停滞,需平衡可见性与劳动力。
2026-07-02 cs.SE
CodeFuse-CR-Bench: A Comprehensiveness-aware Benchmark for End-to-End Code Review Evaluation in Python Projects
针对现有代码审查基准缺乏现实上下文的问题,提出CodeFuse-CR-Bench全面性基准,包含601个实例,结合规则与模型评估,发现Gemini 2.5 Pro综合最优,强调多维度评估的必要性。
2025-10-23 cs.SE
LangChoiceBench: Measuring and Explaining Programming-Language Choice in LLMs
King’s College London(伦敦国王学院);MATS Research(MATS研究院)
本研究推出LangChoiceBench基准,评估25种LLMs的代码语言选择,发现其普遍过度选择Python、一致性低,小开放模型偏好更强,还揭示了模型的虚假证据等失败模式。
2026-08-07 cs.CL cs.SE
Vul4Py: Benchmarking Automated Vulnerability Repair in Python with Paired Exploit and Functional Oracles
Singapore Management University(新加坡管理大学);Monash University(蒙纳士大学);University of New South Wales(新南威尔士大学)
本研究提出Vul4Py基准测试,含100个Python真实漏洞及配对预言机,对比三类AVR方法,发现智能体OpenHands修复漏洞数远超同类方法,配对预言机保障结果可信。
2026-08-04 cs.SE
PyTrim: A Practical Tool for Reducing Python Dependency Bloat
Athens University of Economics(雅典大学经济学院);Business University of Athens(雅典商学院)
PyTrim是一种自动化减少Python项目依赖膨胀的工具,通过动态分析和模块化设计提高依赖检测准确性,并已成功应用于多个开源项目。
2026-02-20 cs.SE
The Death Spiral of Open Source Projects: A Post-Mortem Analysis of Pull Request Workflow Dynamics
Guru Nanak Dev University(古鲁纳克德夫大学)
本文通过分析1736个非活跃GitHub仓库和130万个人驱动的拉取请求,揭示了拉取请求工作流中摩擦、审查周期延长和负面惩罚等微观动态对开源项目生存的影响,发现项目寿命由内在价值和生态系统动态决定。
2026-05-12 cs.SE
AmPyfier: Test Amplification in Python
测试放大是一种将手写测试扩展为更严格的测试套件的方法,该测试套件覆盖了被测系统中的角案例。不幸的是,目前的测试放大技术严重依赖于程序分析技术,这些技术从静态类型语言(如Java和C++)中的显式类型声明中受益匪浅。在动态类型语言中,这种类型声明是不可用的,因此测试放大还没有找到适合程序设计语言(如Python、Ruby和JavaScript)的方法。在本文中,我们提出了AmPyfier,一个概念验证工具,它带来了测试放大的动态类型,解释语言Python。我们在7个开源项目上评估了这种方法,发现AmPyfier可以成功地增强10个测试类中的7个(70%)。因此,我们证明,测试放大是可行的最流行的程序设计语言在今天使用的。
2021-12-21 cs.SE
Defectors: A Large, Diverse Python Dataset for Defect Prediction
本文构建涵盖24个Python项目、约213K代码文件的多样化数据集Defectors,以支持即时与行级缺陷预测及ML/DL模型训练。
2023-07-25 cs.SE
RefExpo: Unveiling Software Project Structures through Advanced Dependency Graph Extraction
本文提出基于 IntelliJ 的多语言依赖图提取工具 RefExpo,并通过微观与宏观实验证明其在 Java、Python 项目上具有更高召回率和分析准确性。
2024-12-04 cs.SE
ManyTypes4Py: A Benchmark Python Dataset for Machine Learning-based Type Inference
Delft University of Technology(代尔夫特理工大学)
在本文中,我们介绍了ManyTypes4Py,这是一个用于基于机器学习(ML)的类型推断的大型Python数据集。该数据集总共包含5,382个Python项目,其类型注释超过869K。删除了重复的源代码文件,以消除重复偏差的负面影响。为了方便ML模型的训练和评估,数据集通过文件分为训练集、验证集和测试集。为了从抽象语法树(AST)中提取类型信息,开发了一个轻量级的静态分析器管道,并与数据集一起使用。使用此管道,分析收集的Python项目,并将AST分析的结果存储在JSON格式的文件中。ManyTypes4Py数据集在zenodo上共享,其工具在GitHub上公开提供。
2021-04-10 cs.LG cs.PL cs.SE
Bugs in the Shadows: Static Detection of Faulty Python Refactorings
针对Python动态类型系统导致自动化重构易引入类型错误的问题,本文提出静态分析技术检测重构引入的类型错误,在Rope及主流IDE的重构实现中发现多个已被开发者确认的缺陷,为提升重构工具鲁棒性提供了依据。
2025-07-01 cs.SE
Evaluating Shaker for Flaky Test Detection in Python Projects
Centro de Informática Universidade Federal de Pernambuco(伯南布哥联邦大学计算机中心);Universidade Federal Rural de Pernambuco(伯南布哥联邦农村大学)
首次实证评估 Shaker 在 Python 中的不稳定测试检测,发现其相对普通重执行无显著优势,并揭示跨环境重用真实数据集会降低工具召回率的风险。
2026-09-23 cs.SE
Leveraging Large Language Models for Command Injection Vulnerability Analysis in Python: An Empirical Study on Popular Open-Source Projects
Louisiana State University(路易斯安那州立大学)
本实证研究针对Python命令注入漏洞检测问题,将GPT-4等大语言模型应用于6个星标超5万的知名开源项目,评估其检测的准确率、效率与 workflow 适配性,对比不同LLM工具的适用性,为利用LLM提升软件安全提供指导。
2025-05-21 cs.AI cs.CR cs.SE
SMTpip: Interpreter-Aware SMT-Based Dependency Conflict Resolution for Restoring Python Source-Code Executability
University of Windsor(温莎大学);University of Waterloo(滑铁卢大学)
本文提出SMTpip,一种感知解释器的Python依赖冲突解决技术,通过将约束编码为SMT公式求解,实现比pip、Conda等工具更快的约束一致环境生成,提升Python源码可执行性恢复效率。
2026-08-18 cs.LO 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
PyPackIT: Automated Research Software Engineering for Scientific Python Applications on GitHub
本文提出PyPackIT,一款基于云的自动化工具,利用现代持续软件工程与DevOps方法论,为科学Python应用提供构建包骨架、文档测试套件及自动化流水线,助力研究人员遵循FAIR与开放科学原则高效开发高质量软件。
2025-03-06 cs.CE cs.SE
Engineering Formality and Software Risk in Debian Python Packages
本文研究了 Debian 中 182 个 Python 软件包的工程形式化与生产不足风险的关系,发现正式结构会增加风险,而开发者责任提升可降低风险。
2024-04-26 cs.CY cs.SE
Python Fuzzing for Trustworthy Machine Learning Frameworks
Ivannikov Institute for System Programming of the RAS(俄罗斯科学院伊万尼科夫系统编程研究所);Lomonosov Moscow State University(莫斯科罗蒙诺索夫大学)
本文提出一种基于Sydr-Fuzz工具集并集成于GitLab CI的Python动态分析流水线,通过分析攻击面并为PyTorch、TensorFlow等框架开发模糊测试目标,成功发现3个新漏洞并提出修复方案。
2024-12-23 cs.AI cs.CR cs.SE
SAGA: Detecting Security Vulnerabilities Using Static Aspect Analysis
提出SAGA方法,通过符号控制流图和领域特定语言定义静态切面,检测Python代码中的多种安全漏洞,在108个漏洞数据集上达到100%敏感度和99.15%特异度。
2026-07-02 cs.CR cs.SE
The Quality of Claude AI-authored Python Tests Is Not Weaker Than Human-authored Tests
Trinity College Dublin(都柏林圣三一学院)
该研究对比Django、Pandas的人类与Claude AI生成的Python测试,采用多协议评分,发现最新Claude模型的测试质量不逊于人类,且研究设置更贴合真实场景。
2026-08-18 cs.AI cs.SE
Software Development During COVID-19 Pandemic: an Analysis of Stack Overflow and GitHub
新型冠状病毒已成为全球严重的健康问题。这种情况促使人们对不同领域进行研究,以防治这一流行病。在软件工程中,我们指出了数据可视化项目来跟踪疾病的演变,机器学习来估计流行病的行为,以及计算机视觉处理放射图像。这些项目中的大多数都存储在版本控制系统中,并且在问答网站中有关于它们的讨论。在这项工作中,我们对大量问题和项目进行了挖掘软件库,旨在找到可以帮助研究人员和从业人员对抗冠状病毒的趋势。我们分析了来自Stack Overflow和Data Science Q\&A的1,190个问题以及60,352个GitHub项目。我们确定了在整个大流行期间问题和项目之间的相关性。关于冠状病毒的主要问题是如何使用Python、JavaScript和R,与网络抓取和数据可视化有关。最常见的GitHub项目是机器学习项目,使用JavaScript,Python和Java。
2021-03-09 cs.CY cs.SE
An Empirical Evaluation of Locally Deployed LLMs for Bug Detection in Python Code
Independent Researcher Master of Electrical(独立研究者 电气工程硕士)
本文评估了本地部署的LLaMA 3.2和Mistral在Python bug检测中的性能,发现其准确率在43%-45%之间,但难以精确定位修复。
2026-04-25 cs.AI cs.LG cs.SE
Type Checking Project Haystack Grids using JSON Schema and Pydantic
TU Wien(维也纳技术大学)
针对 Project Haystack 本体中标签使用歧义和自动化验证不足的问题,提出基于 Python 的工具链,包括解析器与代码生成器,通过 Pydantic 模型和 JSON Schema 实现静态类型检查与结构验证。
2026-06-25 cs.AI cs.PL cs.SE