把 Cosmic Ray 变异测试接入 CI:GitHub Actions 工作流 + cr-badge 存活率徽章完整指南

发布时间:2026/8/27 15:28:06

把 Cosmic Ray 变异测试接入 CI:GitHub Actions 工作流 + cr-badge 存活率徽章完整指南
把 Cosmic Ray 变异测试接入 CIGitHub Actions 工作流 cr-badge 存活率徽章完整指南【免费下载链接】cosmic-rayMutation testing for Python项目地址: https://gitcode.com/gh_mirrors/co/cosmic-rayCosmic Ray是一款面向 Python 3 的**变异测试mutation testing**工具它会对你的源码做微小的改动生成变异体然后逐一运行测试套件看有多少变异体能被你的测试杀死。本文手把手教你把 Cosmic Ray 接入 CI用 GitHub Actions 在每次 PR 自动跑变异测试并生成cr-badge存活率徽章展示在仓库里。变异测试与存活率徽章30 秒建立概念变异体mutant工具修改一行代码后产生的带 bug版本比如把改成、删掉return后面的语句。杀死 / 存活跑测试时若用例失败变异体被杀死若测试全过说明测试没覆盖到这条路径——这是存活变异体。存活率与击杀率存活率 存活变异体占比而cr-badge徽章显示的是100% − 存活率也就是变异击杀率见徽章工具源码 src/cosmic_ray/tools/badge.py 中percent 100 - survival_rate(db)。阈值配色可在配置中设置分数线例如低于 50 标红、70 标橙、100 标黄、101 标绿。️ 一句话徽章上的百分比越高说明你的测试对代码改动的免疫能力越强。快速上手本地跑通一次变异测试会话安装工具支持 Python 3.9pip install cosmic-ray准备一份 TOML 配置声明被测模块与测试命令可参考项目自带示例 docs/source/tutorials/intro/tutorial.toml.1[cosmic-ray] module-path mod.py timeout 10.0 test-command python -m unittest test_mod.py [cosmic-ray.distributor] name local示例中被测模块与测试文件分别为 docs/source/tutorials/intro/mod.1.py 和 docs/source/tutorials/intro/test_mod.1.py。distributor选择local时直接在本地执行无需额外服务最适合 CI。初始化会话并执行cosmic-ray init tutorial.toml session.sqlite cosmic-ray exec session.sqlite执行完可以用cr-report session.sqlite查看汇总报告加--show-diff --surviving-only可只看存活变异体的具体改动。GitHub Actions 工作流让变异测试在每次 PR 自动运行Cosmic Ray 项目自身就用 GitHub Actions 做 CI工作流.github/workflows/run-tests.yml在每次 push 和 PR 时用uv按 Python 3.9–3.13 版本矩阵跑 lint 与测试详见 docs/source/reference/continuous_integration.rst。你可以照着写一个变异测试专用工作流放在.github/workflows/cosmic-ray.ymlname: Mutation testing on: pull_request: branches: [main] workflow_dispatch: jobs: cosmic-ray: runs-on: ubuntu-latest steps: - uses: actions/checkoutv4 - uses: actions/setup-pythonv5 with: python-version: 3.12 - name: 安装依赖与 Cosmic Ray run: pip install cosmic-ray -r requirements.txt - name: 初始化变异测试会话 run: cosmic-ray init cosmic-ray.toml session.sqlite - name: 执行变异测试 run: cosmic-ray exec session.sqlite - name: 生成存活率徽章 run: cr-badge cosmic-ray.toml .github/mutation-badge.svg session.sqlite - name: 上传徽章与 XML 报告 uses: actions/upload-artifactv4 with: name: mutation-results path: | .github/mutation-badge.svg session.xml 两个小建议变异测试比普通测试慢得多PR 上可用workflow_dispatch手动触发或改为每周定时跑一次PR 只跑快速测试用cr-xml把结果导出为 XMLcr-xml cosmic-ray.toml session.xml session.sqlite方便接入支持变异覆盖率的报告系统。cr-badge 徽章配置颜色阈值与显示格式cr-badge的完整用法来自 docs/source/reference/badge.rstcr-badge [CONFIG_FILE] badge_file session-file在配置文件里加入徽章段即可自定义标签、格式与配色阈值[cosmic-ray.badge] label mutation format %.2f %% [cosmic-ray.badge.thresholds] 50 red 70 orange 100 yellow 101 green徽章基于 anybadge 生成产出的.svg文件可作为工作流 artifact 下载或复制到仓库固定路径后在 README 中引用实现仓库首页一眼看到变异测试健康度的效果。实用清单接入 CI 后怎么用好它先看存活变异体cr-report session.sqlite --show-diff --surviving-only逐个判断是补测试还是确认无害相关工具见 src/cosmic_ray/tools/report.py。缩小变异范围在配置中用excluded-modules排除无关模块或配合过滤器src/cosmic_ray/tools/filters/ 支持按行、按算子、按 pragma 注释过滤显著缩短 CI 时间。关注算子覆盖Cosmic Ray 内置十余种变异算子二元/一元/比较运算替换、布尔值替换、数字替换、变量插入/替换等源码位于 src/cosmic_ray/operators/配置里可控制启用的算子集合。徽章别当覆盖率用击杀率高 ≠ 覆盖全它衡量的是测试能否发现这类改动两者要结合看。关键文件速查内容路径项目 CI 工作流示例.github/workflows/run-tests.yml教程配置/被测模块/测试docs/source/tutorials/intro/徽章命令与配置文档docs/source/reference/badge.rst命令速查init/exec/cr-report/cr-badge/cr-xmldocs/source/reference/cli.rst徽章生成源码src/cosmic_ray/tools/badge.py存活率计算源码src/cosmic_ray/tools/survival_rate.py变异算子实现src/cosmic_ray/operators/✅ 至此你已拥有一次 PR 触发的自动化变异测试 一个随测试质量变色的存活率徽章。下一步建议把cr-xml报告也纳入归档方便对比每个版本的变异击杀率变化。【免费下载链接】cosmic-rayMutation testing for Python项目地址: https://gitcode.com/gh_mirrors/co/cosmic-ray创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

nest-router被NestJS 8收入核心后如何迁移?内置RouterModule平滑过渡指南

nest-router被NestJS 8收入核心后如何迁移?内置RouterModule平滑过渡指南

2026/8/27 15:28:06

nest-router被NestJS 8收入核心后如何迁移?内置RouterModule平滑过渡指南 【免费下载链接】nest-router Router Module For Nestjs Framework 🚦 🚀 项目地址: https://gitcode.com/gh_mirrors/ne/nest-router NestJS 8 已把社区路由模块 nest-r…

SWE Agent工具系统详解:tree-sitter代码解析与代码库搜索如何给AI装上“代码雷达“

SWE Agent工具系统详解:tree-sitter代码解析与代码库搜索如何给AI装上“代码雷达“

2026/8/27 15:28:06

SWE Agent工具系统详解:tree-sitter代码解析与代码库搜索如何给AI装上"代码雷达" 【免费下载链接】swe-agent 🤖 AI-powered software engineering multi-agent system with researcher and developer agents that automate code implementati…

micro-router 进阶路径匹配:用 UrlPattern 实例与正则表达式定制 URL 路由的隐藏技巧

micro-router 进阶路径匹配:用 UrlPattern 实例与正则表达式定制 URL 路由的隐藏技巧

2026/8/27 15:28:06

micro-router 进阶路径匹配:用 UrlPattern 实例与正则表达式定制 URL 路由的隐藏技巧 【免费下载链接】micro-router :station: A tiny and functional router for Zeits Micro 项目地址: https://gitcode.com/gh_mirrors/mi/micro-router micro-router 是一…

雷蛇设备风扇控制指南:3 个配置修正 FanControl 曲线

雷蛇设备风扇控制指南:3 个配置修正 FanControl 曲线

2026/8/27 16:18:08

雷蛇设备风扇控制指南:3 个配置修正 FanControl 曲线 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa/…

Wifi-Brute WiFi密码字典攻击实战:新手一步步拿回忘记的WiFi口令

Wifi-Brute WiFi密码字典攻击实战:新手一步步拿回忘记的WiFi口令

2026/8/27 16:18:08

Wifi-Brute WiFi密码字典攻击实战:新手一步步拿回忘记的WiFi口令 【免费下载链接】Wifi-Brute A tool to crack a wifi password with a help of wordlist. This may take long to crack a wifi depending upon number of passwords your wordlist contains. Also i…

AI写作靠谱吗?对比月费数百元的单体工具,玉芬AI省钱避坑全攻略

AI写作靠谱吗?对比月费数百元的单体工具,玉芬AI省钱避坑全攻略

2026/8/27 16:18:08

AI写作靠谱吗?许多人在尝试AI工具时被昂贵的月费劝退。作为AI模型聚合平台,玉芬AI( neneai.cn ) 采用无强制月费订阅加每日免费额度的省钱模式,对比单独购置多款模型会员可省下八成以上花销。 Q:频繁付费购买各种AI会员&#xff0…

掌机刷固件从怕变爽?MiyooCFW 2.0.0 Beta 把首开设置、帧同步和 TV 输出一次讲清

掌机刷固件从怕变爽?MiyooCFW 2.0.0 Beta 把首开设置、帧同步和 TV 输出一次讲清

2026/8/27 16:18:08

掌机刷固件从怕变爽?MiyooCFW 2.0.0 Beta 把首开设置、帧同步和 TV 输出一次讲清 【免费下载链接】MiyooCFW Custom firmware source code and resources for BittBoy, PocketGo, PowKiddy V90-Q90-Q20 and third party handheld consoles 项目地址: https://gitc…

10万字长文续写测试:AI写作靠谱吗?解析玉芬AI超长上下文实战表现

10万字长文续写测试:AI写作靠谱吗?解析玉芬AI超长上下文实战表现

2026/8/27 16:18:08

AI写作靠谱吗?对于需要撰写长篇小说、学术综述、行业白皮书的用户来说,“写到一半遗忘前文”是最大痛点。作为AI模型聚合平台,玉芬AI( neneai.cn ) 具备超大上下文窗口能力,让长文本阅读与长篇续写毫无压力。 Q:用AI写…

IINA 完整实操教程:免费安装 macOS 视频播放器,3 分钟跑起来

IINA 完整实操教程:免费安装 macOS 视频播放器,3 分钟跑起来

2026/8/27 16:08:08

IINA 完整实操教程:免费安装 macOS 视频播放器,3 分钟跑起来 【免费下载链接】iina The modern video player for macOS. 项目地址: https://gitcode.com/gh_mirrors/iin/iina IINA 是一款基于 mpv 引擎的免费开源 macOS 视频播放器,M…

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

2026/8/27 11:10:02

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

2026/8/27 7:25:23

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

2026/8/26 17:50:58

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

Go语言构建企业级AI服务网关:统一管理英伟达等AI接口调用

Go语言构建企业级AI服务网关:统一管理英伟达等AI接口调用

2026/8/27 0:07:12

1. 项目概述:从零构建一个企业级的AI服务网关 最近在帮一个做内容审核的团队做技术架构升级,他们原来的业务里,每天有几十万张图片和短视频需要过审,最初是接了几个开源的AI模型自己部署,但效果和性能一直不太稳定。后…

LeetCode Hot100(51-60)算法精解与面试技巧

LeetCode Hot100(51-60)算法精解与面试技巧

2026/8/27 0:07:12

1. 题目背景与核心价值"hot100(51-60)"这个标题看起来像是某个编程题库或算法练习集中的一组题目编号。在技术社区中,类似命名通常指向LeetCode、牛客网等平台的热门题目集合。作为刷过300题的算法老手,我理解这类题目的核心价值在于&#xff…

CRC校验实战:从模2除法到HJ212协议排错

CRC校验实战:从模2除法到HJ212协议排错

2026/8/27 0:07:12

1. 为什么一个“校验码”能扛住工业现场90%的数据 corruption? 你有没有遇到过这样的场景:嵌入式设备通过RS-485上传温湿度数据,上位机偶尔收到一帧乱码——温度显示成-273℃,湿度跳到999%,但串口波形看起来完全正常&a…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/22 2:02:26

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/26 18:07:30

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/26 17:57:52

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…