mcpField
O
odoo-code-review

odoo-code-review

github.com/nguyenhuy158测试与质量91 次安装
代码仓库

关于 odoo-code-review

面向 Odoo 开发者的代码审查技能,提供 Python、ORM、XML 视图与数据文件、模块清单及审查检查项的指导。重点关注 Odoo 模块的可维护性、安全性、性能和升级兼容性。

主要功能

  1. 01Python 风格与导入指导
  2. 02Odoo ORM 使用规范
  3. 03XML 视图与数据检查
  4. 04模块清单依赖和文件检查
  5. 05安全、性能与升级检查项

适用场景

  1. 01审查 Odoo Python 模型变更
  2. 02检查 XML 视图和数据文件
  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 方法
  • 搜索: 使用 search_count(),而不是 len(search())。
  • 筛选: 使用 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:用于必填字段。
  • Noids: 避免使用硬编码的数据库 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 而不重复创建数据?

评论

支持 Markdown