odoo-lint について
odoo-lint は、Odoo モジュール向けの Rust 製チェッカーで、開発者や保守担当者を対象としています。複数のファイル形式と OCA のチェックに対応し、自動修正と MCP サーバーも備えています。
主な機能
- 01Python、マニフェスト、XML、CSV、PO、JavaScript の検査
- 02pylint-odoo と OCA チェックとの互換性
- 03修正の適用と差分プレビュー
- 04旧バージョン Odoo の残存記述の検出
- 05ランゲージサーバーとエディターでのクイック修正
- 06CI 出力と MCP 対応
活用シーン
- 01提出前の Odoo モジュール検査
- 02コードや翻訳ファイルの一括修正
- 03アップグレード後に残る古い記述の確認
- 04編集後にコーディングエージェントで検査
MCP 対応
`odl mcp` で利用できる MCP サーバーが含まれ、MCP クライアントやコーディングエージェントから検査機能を呼び出せます。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 の pre-commit フックが pylint-odoo を実行する方法で、OCA/sale-workflow 18.0 全体を lint した結果です。ベンチマークをご覧ください。
- ⚡ pylint-odoo を使った pylint より 250 倍高速で、シングルコアでも 30 倍高速です
- ⚖️ pylint-odoo と OCA の pre-commit チェックをそのまま置き換え可能:コード、名前、メッセージが一致し、それぞれのテストスイートで全チェックの結果が一致します
(互換性)。
# pylint: disable=コメントも引き続き機能します - 🔧 Python、マニフェスト、XML、
.poファイルの 自動修正に対応。Ruff と同様、安全な修正と安全でない修正が可能です(odl check --fix、プレビューには--diff) - ⬆️ アップグレードチェック:Odoo 15.0 以降では機能しない Bootstrap 4 のクラスなど、古い Odoo バージョンの名残を検出して修正します
- 🌍 Odoo のローダーの動作を予測する翻訳チェック:「malformed po file」と Odoo がログに出す理由や、翻訳が表示されない理由を確認できます
- 📦 pip、uv、pipx でインストール可能:Python 依存関係なしで、Linux、macOS、Windows 向けのビルド済みホイールにバイナリを同梱しています
- 🛠️
pyproject.tomlで設定可能。会社固有の作成者ルールにも対応します - 📋 CI 向けの出力:GitHub アノテーション、GitLab Code Quality、SARIF、JSON
- ✍️ エディターで利用可能:クイックフィックス対応の言語サーバー(
odl server)と、VS Code および Zed 向けの拡張機能 - 🤖 AI コーディングエージェント向け:MCP サーバーと Claude Code、DeepSeek Harness、OpenCode 向けのプラグインを提供し、エージェントが編集するすべてのファイルを lint します
- 🪝 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 コーディングエージェント向けに、MCP サーバー(odl mcp)と編集後フックを提供しています。
これらは Claude Code(/plugin marketplace add bosd/odoo-lint)、
DeepSeek Harness、OpenCode 用のプラグインとしてパッケージ化されています。
odoo-lint を初めてお使いですか?Getting started から始めてください。 OCA の pre-commit フックから移行する場合は、 Migrating from OCA's tooling をご覧ください。 すべてのコマンド、設定オプション、ルールについては、 ドキュメントをご覧ください。
開発
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 サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。