mcpField
O
odoo-code-review

odoo-code-review

github.com/nguyenhuy158テスト・品質91 回インストール
リポジトリ

odoo-code-review について

Odoo 開発者向けのコードレビュー用スキルです。Python、ORM、XML ビューとデータファイル、マニフェスト、レビュー項目を扱い、保守性、安全性、性能、アップグレード時の互換性に重点を置きます。

主な機能

  1. 01Python のスタイルとインポート指針
  2. 02Odoo ORM の使用パターン
  3. 03XML ビューとデータの確認
  4. 04マニフェストの依存関係・ファイル確認
  5. 05セキュリティ・性能・更新のチェック項目

活用シーン

  1. 01Odoo Python モデル変更のレビュー
  2. 02XML ビューとデータファイルの確認
  3. 03リリース前のマニフェスト点検
  4. 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)。

レビューチェックリスト

  1. セキュリティ: アクセス権(ir.model.access.csv)は定義されていますか?
  2. パフォーマンス: SQL クエリを内部で実行するループはありますか?(N+1 問題)
  3. アップグレード: このコードはモジュールの更新時に問題を起こしませんか?
  4. 冪等性: この XML を複数回読み込んでも、データが重複しませんか?

コメント