Ruff 如何接入 CI/CD 与 pre-commit:GitHub Action 自动化检查实战教程
Ruff 如何接入 CI/CD 与 pre-commitGitHub Action 自动化检查实战教程【免费下载链接】ruffAn extremely fast Python linter and code formatter, written in Rust.项目地址: https://gitcode.com/GitHub_Trending/ru/ruffRuff 是一款用 Rust 编写的极速 Python linter代码检查器与代码格式化工具比 Flake8、Black 快 10~100 倍。本文带你把 Ruff 接入 CI/CD 流水线与 pre-commit 提交钩子通过 GitHub Action 实现自动化检查利用内置缓存提速构建让代码质量在每次提交时都有保障。为什么要把 Ruff 接入 CI/CD手动跑 linter 容易忘记CI 自动检查则零遗漏。Ruff 接入 CI 的三大好处⚡️快扫描整个仓库通常只需零点几秒几乎不增加 CI 耗时️稳统一团队代码规范未通过检查的代码无法合入自动修复配合--fix自动修正未使用的 import 等常见问题Ruff 通过pyproject.toml配置文件驱动详见 docs/tutorial.mdCI 中会自动读取同一份配置本地与远端行为完全一致。一分钟安装 RuffCI 环境里最简单的安装方式是pip install ruff完整安装方式见 docs/installation.md$ pip install ruff $ ruff check # 检查当前目录 $ ruff format # 格式化当前目录也可以在本地项目中以开发依赖方式安装uv add --dev ruff或pip install ruff之后用ruff check与ruff format两条命令即可完成检查与格式化。GitHub Action 自动化检查一键配置官方推荐的 CI 配置极其简单完整示例来自 docs/integrations.md。在仓库中创建.github/workflows/ruff.ymlname: CI on: push jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkoutv4 - name: Install Python uses: actions/setup-pythonv5 with: python-version: 3.11 - name: Install dependencies run: | python -m pip install --upgrade pip pip install ruff # 使用 github 输出格式实现自动行内注解 - name: Run Ruff run: ruff check --output-formatgithub .关键参数--output-formatgithub的妙用ruff check支持concise、json、junit、github、gitlab、sarif等多种输出格式。指定--output-formatgithub后Ruff 会输出 PR 检查标注annotations每条 lint 错误都会直接显示在 Pull Request 对应代码行的旁边无需翻看日志定位问题——这是新手最容易忽略、却最省时间的一个参数。更简单的方式ruff-action官方还提供现成的 GitHub Actionastral-sh/ruff-action只需两行即可接入name: Ruff on: [push, pull_request] jobs: ruff: runs-on: ubuntu-latest steps: - uses: actions/checkoutv4 - uses: astral-sh/ruff-actionv3ruff-action支持通过with:传递参数version固定 Ruff 版本、args自定义命令行默认check、src指定检查路径默认.和src例如- uses: astral-sh/ruff-actionv3 with: version: 0.8.0 args: check --select B src: ./src默认它以通过/失败测试运行确保仓库没有 lint 违规由于底层直接安装并运行 ruff 二进制任何支持的命令如ruff check --fix都可以执行。pre-commit 提交钩子在本地提前拦截问题CI 是最后一道防线pre-commit 钩子则是第一道防线——在git commit时本地自动检查坏代码根本提交不出去。最快配置方法先安装钩子框架pip install pre-commit然后在仓库根目录的.pre-commit-config.yaml中注册 Ruff示例引自 docs/integrations.md- repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. rev: v0.16.5 hooks: # 运行 linter - id: ruff-check # 运行 formatter - id: ruff-format开启自动修复给钩子加上--fix- repo: https://github.com/astral-sh/ruff-pre-commit rev: v0.16.5 hooks: - id: ruff-check args: [ --fix ] - id: ruff-format两个新手常踩的坑官方文档特别提醒顺序使用--fix时ruff-check钩子必须放在ruff-format以及 Black、isort 等其它格式化工具之前因为修复可能产生需要重新格式化的代码排除 Notebook若项目不涉及 Jupyter给钩子加types_or: [ python, pyi ]即可跳过.ipynb文件进阶技巧让 CI 更快更省心1. 用缓存跳过未变更文件Ruff 内置缓存机制源码位于 crates/ruff_cache/src/lib.rs会自动跳过内容未变化的文件。在 CI 中指定缓存目录可让增量检查更明显对应参数$ ruff check --cache-dir ~/.cache/ruff .2. 固定版本保证可复现ruff-action默认安装最新版 Ruff。建议在.pre-commit-config.yamlrev:与 Actionversion:中固定版本号避免某天新版本启用新规则后 CI 突然变红。本项目自身使用的规则集配置可参考 pyproject.toml 中的[tool.ruff.lint]部分是了解规则选择的良好范例。3. 多流水线平台GitLab CI 与 DockerGitLab CI使用--output-formatgitlab并输出code-quality-report.json即可生成 GitLab 代码质量报告详见 docs/integrations.mdDocker 运行官方发布ghcr.io/astral-sh/ruff镜像含 alpine、debian 等变体在容器化 CI 中可零依赖直接执行ruff check总结场景命令 / 配置效果GitHub Action 基础接入ruff check --output-formatgithub .错误直接标注在 PR 代码行极简接入uses: astral-sh/ruff-actionv3两行配置开箱即用本地提交拦截pre-commit 钩子ruff-checkruff-format坏代码无法提交自动修复钩子加args: [ --fix ]提交前自动修好 import 等CI 提速--cache-dir指定缓存目录跳过未变更文件Ruff 的速度意味着它几乎不会成为 CI 的瓶颈把它装进流水线和提交钩子团队就能以极低成本获得统一的 Python 代码质量保障。下一步可以阅读官方文档完善规则集例如 docs/linter.md 与 docs/configuration.md让检查规则贴合你的项目风格。【免费下载链接】ruffAn extremely fast Python linter and code formatter, written in Rust.项目地址: https://gitcode.com/GitHub_Trending/ru/ruff创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

模组兼容性设计:安德莉亚模组在九州武库Rebalance环境下的自适应实践

模组兼容性设计:安德莉亚模组在九州武库Rebalance环境下的自适应实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/6 16:27:53 阅读更多 →
tRPC服务端30分钟精通:Routers、Procedures与Context的完整使用指南

tRPC服务端30分钟精通:Routers、Procedures与Context的完整使用指南

tRPC服务端30分钟精通:Routers、Procedures与Context的完整使用指南 【免费下载链接】trpc 🧙‍♀️ Move Fast and Break Nothing. End-to-end typesafe APIs made easy. 项目地址: https://gitcode.com/GitHub_Trending/tr/trpc tRPC&#xff…

2026/11/11 14:14:58 阅读更多 →
2026电赛控制题开源备赛方案:从PID算法到系统联调的实战指南

2026电赛控制题开源备赛方案:从PID算法到系统联调的实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/8 11:09:31 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/10 23:32:01 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/10 23:32:03 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/11 2:31:33 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/10 16:14:15 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/10 12:51:50 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/10 23:32:10 阅读更多 →

日新闻

周新闻

月新闻