关于 odoo-code-review
面向 Odoo 开发者的代码审查技能,提供 Python、ORM、XML 视图与数据文件、模块清单及审查检查项的指导。重点关注 Odoo 模块的可维护性、安全性、性能和升级兼容性。
主要功能
- 01Python 风格与导入指导
- 02Odoo ORM 使用规范
- 03XML 视图与数据检查
- 04模块清单依赖和文件检查
- 05安全、性能与升级检查项
适用场景
- 01审查 Odoo Python 模型变更
- 02检查 XML 视图和数据文件
- 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 方法
- 搜索: 使用
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)。
审查清单
- 安全性: 是否定义了访问权限(ir.model.access.csv)?
- 性能: 是否存在循环内执行 SQL 查询的情况?(N+1 问题)。
- 升级: 此代码是否会在模块更新时出错?
- 幂等性: 是否可以多次加载此 XML 而不重复创建数据?
评论
支持 Markdown