odoo-code-review について
Odoo 開発者向けのコードレビュー用スキルです。Python、ORM、XML ビューとデータファイル、マニフェスト、レビュー項目を扱い、保守性、安全性、性能、アップグレード時の互換性に重点を置きます。
主な機能
- 01Python のスタイルとインポート指針
- 02Odoo ORM の使用パターン
- 03XML ビューとデータの確認
- 04マニフェストの依存関係・ファイル確認
- 05セキュリティ・性能・更新のチェック項目
活用シーン
- 01Odoo Python モデル変更のレビュー
- 02XML ビューとデータファイルの確認
- 03リリース前のマニフェスト点検
- 04セキュリティと性能リスクの発見
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ nguyenhuy158/ skills --skill odoo-code-reviewインストール後、Claude Code で/odoo-code-reviewを入力して読み込まれたか確認します。
詳細
Odoo コードレビューアー
Python ガイドライン
一般
- PEP8: PEP8 に厳密に従ってください(Odoo では行の長さが 120 文字でも許容されることがよくあります)。
- インポート:
odooのインポートを最初に記述します。from odoo import models, fields, api, _from odoo.exceptions import UserError, ValidationError
ORM メソッド
- 検索:
len(search())の代わりにsearch_count()を使用します。 - フィルタリング: レコードセットをメモリ上でフィルタリングするには
filtered()を使用します。 - マッピング: 値を抽出するには
mapped()を使用します。 - 書き込み/作成: 可能な場合は操作をまとめて実行します。
- SQL: パフォーマンス上どうしても必要な場合を除き、直接 SQL(
self.env.cr.execute)を避けます。使用する場合は、変数を直接埋め込まず、パラメーターを使用してください。
フィールドとモデル
- 命名規則:
- フィールド:
snake_case。Many2one フィールド名は通常_idで終わります(例:partner_id)。 - One2many/Many2many:通常は複数形にします(例:
line_ids、tag_ids)。
- フィールド:
- 計算フィールド: 必ず
@api.dependsを追加します。 - 制約: データ整合性のチェックには
@api.constrainsを使用します。 - 翻訳: ユーザーに表示する文字列は
_()で囲みます。
XML ガイドライン
ビュー
- レコード:
<record id="..." model="ir.ui.view">を使用します。 - Arch: すべてのビューに
<arch type="xml">ブロックが必要です。 - XPath: 簡潔な XPath 式を使用します。インデックスよりも
name属性を優先してください。- 悪い例:
//field[3] - 良い例:
//field[@name='description']
- 悪い例:
- 属性:
invisible:非表示にする場合にのみ使用します。readonly:編集できないフィールドに使用します。required:必須フィールドに使用します。
- ID: データベース ID のハードコードは避けます。
ref="module.xml_id"を使用します。
データファイル
- NoUpdate: アップグレード時にリセットすべきでないデータ(シーケンス番号や cron ジョブなど)には、
<data>でnoupdate="1"を使用します。
マニフェスト(manifest.py)
dependsに必要なモジュールがすべて記載されていることを確認します。dataにすべての XML/CSV ファイルが正しい順序(セキュリティ -> ビュー -> データ)で記載されていることを確認します。licenseが指定されていることを確認します(例:LGPL-3)。
レビューチェックリスト
- セキュリティ: アクセス権(ir.model.access.csv)は定義されていますか?
- パフォーマンス: SQL クエリを内部で実行するループはありますか?(N+1 問題)
- アップグレード: このコードはモジュールの更新時に問題を起こしませんか?
- 冪等性: この XML を複数回読み込んでも、データが重複しませんか?
コメント
Markdown 対応