关于 odoo-lint
odoo-lint 是用 Rust 编写的 Odoo 模块检查工具,供 Odoo 开发者和维护团队使用。它涵盖多种模块文件、OCA 检查和升级问题,并提供自动修复及 MCP 服务。
主要功能
- 01检查 Python、清单、XML、CSV、PO 与 JavaScript
- 02兼容 pylint-odoo 与 OCA 检查规则
- 03自动修复并预览差异
- 04检测旧版 Odoo 遗留问题
- 05提供语言服务器与编辑器快速修复
- 06输出 CI 格式并支持 MCP
适用场景
- 01在提交前检查 Odoo 模块
- 02批量修复代码与翻译文件问题
- 03排查升级后遗留的旧版写法
- 04让编码 Agent 在编辑后运行检查
MCP 相关
odoo-lint 提供 `odl mcp` MCP 服务,供 MCP 客户端或编码 Agent 调用其检查能力。README 未进一步列出 MCP 工具的具体清单。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
odoo-lint
面向 Odoo 模块的 Rust 原生极速代码检查工具。命令名为 odl。
它会检查 Python 文件、清单、XML 和 CSV 数据文件、翻译
(.po)文件以及 JavaScript(OWL 组件和模板),涵盖 OCA 的 pylint-odoo、oca-checks-odoo-module 和 oca-checks-po 的检查项:名称相同、消息相同,在各自的测试套件中结果一致。它还会提示不应放在模块中的文件,例如意外提交的软件包或数据库转储文件。
检查整个 OCA/sale-workflow 18.0,与 OCA 的 pre-commit 钩子运行 pylint-odoo 的方式相同。参见 基准测试。
- ⚡ 比搭配 pylint-odoo 的 pylint 快 250 倍,单核运行时仍快 30 倍
- ⚖️ 可直接替代 pylint-odoo 和 OCA 的 pre-commit 检查:代码、名称和消息相同,各项检查在各自的测试套件中结果一致
(兼容性),并且
# pylint: disable=注释仍可正常使用 - 🔧 自动修复,支持安全和不安全的修复,与 Ruff 一样,可处理 Python、清单、XML 和
.po文件(odl check --fix,使用--diff预览) - ⬆️ 升级检查:检查旧版 Odoo 遗留内容,例如 Odoo 15.0 起已不起作用的 Bootstrap 4 类,并提供修复
- 🌍 可预测 Odoo 加载器行为的翻译检查:指出 Odoo 为何记录“格式错误的 po 文件”,以及翻译为何未显示
- 📦 可通过 pip、uv 或 pipx 安装:Linux、macOS 和 Windows 均提供预构建 wheel,内含单个二进制文件,无需 Python 依赖
- 🛠️ 在
pyproject.toml中配置,包括公司专属的作者规则 - 📋 支持 CI 输出:GitHub 注释、GitLab Code Quality、SARIF 和 JSON
- ✍️ 在编辑器中使用:提供带快速修复功能的语言服务器(
odl server),以及适用于 VS Code 和 Zed 的扩展 - 🤖 适用于 AI 编码 Agent:提供 MCP 服务,以及 Claude Code、DeepSeek Harness 和 OpenCode 插件,可检查 Agent 编辑的每个文件
- 🪝 Git 钩子:pre-commit 和 hk
安装
uv tool install odoo-linter # or: pipx install odoo-linter
cargo install odoo-lint # from crates.io
PyPI 软件包名为 odoo-linter,因为 odoo-lint 与一个现有的 PyPI 项目名称过于相似。在 crates.io 上,它的名称是 odoo-lint。
快速开始
odl check path/to/addons # lint a directory
odl rule # list all rules
odl rule C8101 # explain a rule
odl check --fix # apply the safe fixes (--diff to preview)
从 pylint-odoo 移植的规则保留了原有代码、名称和消息,# pylint: disable= 注释仍然有效。公司特定的规则可在你的 pyproject.toml 中配置:
[tool.odoo-lint]
target-version = "17.0"
[tool.odoo-lint.rules.manifest-required-author.mapping]
"acme_*" = "Acme Corp"
对于 AI 编码 Agent,提供了一个 MCP 服务(odl mcp)和一个编辑后钩子,并作为插件打包,支持 Claude Code(/plugin marketplace add bosd/odoo-lint)、DeepSeek Harness 和 OpenCode。
刚开始使用 odoo-lint?请从 入门指南开始; 如果你从 OCA 的 pre-commit 钩子迁移而来,请阅读 从 OCA 工具迁移。 所有命令、配置选项和规则,请参阅文档。
开发
uv sync --all-groups # builds odl into .venv via maturin
uv run nox # pre-commit, fmt, clippy, cargo tests, CLI tests, docs
请参阅 CONTRIBUTING.md 和开发指南。
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。