用途:把 Odoo 代码“实际怎么执行”映射出来,只追踪能在代码中验证的路径;不确定的路径需标注为不确定并说明缺少什么证据。
主要能力:识别入口点(HTTP 路由/控制器、表单或列表按钮动作、服务器动作或自动化动作、cron 任务、被其他插件调用的 ORM 方法、compute/onchange/constraint/inverse 及 create/write/unlink 钩子、报表渲染、OWL/Web 客户端调用后端、外部 webhook 或集成回调);检测目标 Odoo 版本,版本敏感行为先查对应参考(Odoo 17: odoo-17.0,18: odoo-18.0,19: odoo-19.0,20: odoo-20.0);若设置了 $ODOO_SOURCE,则检查本地框架代码中的控制器分发、ORM 行为、装饰器、Web 客户端动作、资源、测试与版本相关执行细节。
追踪过程:定位入口并给出文件与行号;沿直接方法调用链;沿继承与 super() 到父实现;检查装饰器与隐式触发(@api.depends、@api.constrains、@api.onchange、inverse、@api.ondelete、create/write/unlink 重写);沿 XML 接线(按钮、动作、菜单、报表、cron 记录、服务器动作、外部 ID);必要时沿前端接线(资源包、JS 模块、注册表、服务调用、RPC/ORM 调用、模板事件);记录数据库操作(search、browse、read、read_group、create、write、unlink、直接 SQL、保存点、锁);记录副作用(chatter、邮件、通知、活动、报表、附件、外部 API、队列任务、bus 事件);记录安全检查(认证模式、ACL、记录规则、组、域、公司过滤、sudo() 边界);标记出口点与返回的动作/数据。
关注点:循环内 search/browse/read/create/write/unlink 造成的 N+1;计算字段、约束、onchange、mail mixin、活动与自动化带来的隐藏副作用;绕过所有权、公司、门户或公共用户边界的 sudo();因方法改名、外部 ID 缺失或版本相关视图语法导致的脆弱 XML 链接;捕获数据库异常却无保存点的事务风险;分散在视图、onchange、控制器与定时动作中的业务规则。
输出格式:按“Code Execution Trace”组织,含入口点(类型、位置、触发方式)、流程(ENTRY 到 RETURN 的调用链)、详细追踪、数据库操作、安全说明、副作用、不确定路径。
限制与规则:始终为被追踪代码附文件/行号;显式追踪继承与 super();本地源码可用时不要假设框架路径,应实际检查;未经用户确认不要运行会接触数据库或服务的 Odoo 命令;若追踪发现审查问题,可与 odoo-code-review 组合使用。