全面的 Elixir/Phoenix 代码审查,支持可选的并行代理
Elixir 代码审查
功能概述
Elixir 代码审查是一项面向实际任务的技能,主要用于参数: 并行 : 如果代理支持子代理, 请在每个技术领域派出一个专门的子代理( 其它情况下, 由相同的输出顺序运行);Path: T。
核心要点
- 它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
- 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。
- 该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。
使用与执行
从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
结果检查与注意事项
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
Elixir 代码审查
参数
--parallel:若 agent 支持子 agent,则为每个技术领域分发一个专用子 agent(否则审查将顺序执行,输出结果完全相同)- 路径:目标目录(默认为当前工作目录)
硬性校验门(Hard gates)
在输出中撰写 Issues 前,必须按顺序完成以下全部校验(允许作用域为空;禁止虚构发现)。
- 作用域校验门:你已明确列出本次审查所涵盖的
.ex/.exs/.heex文件路径(来自步骤 1 或用户指定路径)。通过条件:打印出该文件列表,或输出 “No Elixir files in scope” —— 此时立即终止,不报告任何 Issues。 - 检查器校验门(风格):步骤 2 中的命令已在此 Mix 项目中运行;跳过的工具需在一行内注明(例如:未找到
.credo.exs)。通过条件:不得对项目格式化器/检查器已在该行通过的风格问题进行报告。 - 协议校验门:review-verification-protocol 必须在步骤 6 之前加载。通过条件:至少有一项报告的发现已对照该清单完成核验(需在 Review Summary 或首个 Critical/Major 条目中明确指出对应条目编号)。
- 证据校验门(Critical/Major):对每一项 Critical 或 Major 问题,你需重新阅读
FILE:LINE处的原始文件(含完整上下文,而非仅 diff 片段)。通过条件:Issue 描述必须与该位置实际可观察到的代码一致。
步骤 1:识别变更文件
git diff --name-only $(git merge-base HEAD main)..HEAD | grep -E '.ex$|.exs$|.heex$'
步骤 2:验证检查器/格式化器状态
CRITICAL:在标记任何风格问题前,必须先运行项目检查器。
# 检查格式化
mix format --check-formatted
# 若存在则检查 Credo
if [ -f ".credo.exs" ] || grep -q ":credo" mix.exs 2>/dev/null; then
mix credo --strict
fi
# 若已配置则检查 Dialyzer
if grep -q ":dialyxir" mix.exs 2>/dev/null; then
mix dialyzer --format short
fi
规则:
- 若某条规则已通过检查器校验,则禁止手动标记该问题
- 检查器配置对风格规则具有最终解释权
- 仅标记检查器无法检测的问题(语义问题、架构问题等)
步骤 3:识别技术栈
# 检测 Phoenix grep -r "use Phoenix|Phoenix.Router|Phoenix.Controller" --include="*.ex" -l | head -3 # 检测 LiveView grep -r "use Phoenix.LiveView|Phoenix.LiveComponent|~H" --include="*.ex" -l | head -3 # 检测 Oban grep -r "use Oban.Worker|Oban.insert" --include="*.ex" -l | head -3 # 检查测试文件变更 git diff --name-only $(git merge-base HEAD main)..HEAD | grep -E '_test.exs$'
步骤 4:加载验证协议
加载 review-verification-protocol 技能,并在整个审查过程中持续参考其检查清单。
步骤 5:加载技能(Skills)
根据适用性加载下方各项技能(需通读其 SKILL.md 并应用其中规则)。
始终加载:
- elixir-code-review
按检测结果条件加载:
| 条件 | 技能 |
|---|---|
| 检测到 Phoenix | phoenix-code-review |
| 检测到 LiveView | liveview-code-review |
| 请求性能聚焦审查 | elixir-performance-review |
| 请求安全聚焦审查 | elixir-security-review |
| 测试文件发生变更 | exunit-code-review |
步骤 6:执行审查
若 agent 支持子 agent(且设置了 --parallel),则并行分发一个子 agent 至每个技术领域;否则按顺序执行。两种方式生成的输出完全一致。
顺序执行(默认):
- 加载适用技能
- 优先审查 Elixir 质量问题
- 若检测到 Phoenix,则审查 Phoenix 模式
- 若检测到 LiveView,则审查 LiveView 模式
- 审查所有已识别的技术领域
- 汇总全部发现
并行执行(当子 agent 可用且设置了 --parallel):
- 预先识别全部技术栈
- 为每个技术领域分发一个子 agent
- 各子 agent 加载对应技能并审查其专属领域
- 等待所有子 agent 完成
- 汇总全部发现
标记问题前须执行
- 核查项目约定(如 AGENTS.md 或 CLAUDE.md)中是否记载了有意为之的模式
- 核查问题附近代码注释,寻找 “intentional”、“optimization” 或 “NOTE:” 等标识
- 追溯代码执行路径,再判断是否存在覆盖缺失
- 考虑框架惯用法——表面上看似错误的写法,在 Elixir/Phoenix 场景下可能完全合理
步骤 7:验证发现项
在最终确定 Issues 前,必须满足 硬性校验门 中第 2–4 项。在报告任一问题前,请确认:
- 重读实际代码(而不仅是 diff 上下文)
- 针对“未使用(unused)”类主张——是否已搜索全部引用?
- 针对“缺失(missing)”类主张——是否已检查框架/父级处理逻辑?
- 针对语法类问题——是否已对照当前版本文档验证?
- 移除所有仅为风格偏好、而非实质问题的发现项
步骤 8:审查收敛性
单次审查完整性
你必须在**单次审查中**报告所有类别(风格、逻辑、类型、测试、安全、性能)下的全部问题。禁止将问题保留至后续轮次。
提交发现前,请自问:
- “若作者采纳我全部建议修复,我在修复后的代码中是否会发现**新问题**?”
- “我是否要求新增代码(如测试、类型定义、模块)?这些新增内容本身是否也需要审查?”
若任一问题答案为“是”:请**立即在本次审查中包含这些预判的下游问题**,以便作者一次性解决全部事项。
作用域规则
- 仅审查 diff 中的代码及与其直接相关的既有代码
- 禁止要求新增功能、测试基础设施或 diff 前不存在的架构变更
- 若测试覆盖率缺失,仅以一项 Minor 问题形式标记(例如:“Missing test coverage for X, Y, Z”)——禁止指定实现细节(如 mock 库选型、behaviour 提取、依赖注入模式等,因其将引入大量新代码)
- typespecs、文档和命名问题均为 Minor 级别,除非其影响公共 API 合约
- 禁止要求新增依赖(如 Mox、测试库、检查器插件)
修复复杂度预算
对既有代码的修复,应按其真实严重性标注等级,不受代码修改量影响。
但对 diff 前完全不存在的净新增代码 的请求,必须归类为 Informational:
- 新增依赖(如 Mox、检查器插件)
- 新建模块、文件或测试套件
- 提取新的 behaviour、protocol 或抽象层
此类属于供作者未来考虑的改进建议,而非审查阻塞项。
迭代策略
若本次为修复后的复审(re-review):
- 仅验证此前标记的问题是否已正确修复
- 禁止引入与上一轮审查无关的新发现
- 接受未修复的 Minor/Nice-to-Have 问题——无需重复标记
- 复审的目标是 **VERIFICATION(验证)**,而非 **discovery(发现)**
输出格式
## Review Summary [1–2 句对整体发现的概述] ## Issues ### Critical (Blocking) 1. [FILE:LINE] ISSUE_TITLE - Issue: 问题描述(具体错在哪里) - Why: 为何重要(缺陷、类型安全性、安全风险等) - Fix: 具体推荐修复方案 ### Major (Should Fix) 2. [FILE:LINE] ISSUE_TITLE - Issue: ... - Why: ... - Fix: ... ### Minor (Nice to Have) N. [FILE:LINE] ISSUE_TITLE - Issue: ... - Why: ... - Fix: ... ### Informational (For Awareness) N. [FILE:LINE] SUGGESTION_TITLE - Suggestion: ... - Rationale: ... ## Good Patterns - [FILE:LINE] 模式描述(请保留此项) ## Verdict Ready: Yes | No | With fixes 1-N (仅限 Critical/Major;Minor 项可接受) Rationale: [1–2 句说明]
修复后验证
修复应用后,需运行与步骤 2 相同的检查,随后运行测试:
mix format --check-formatted
if [ -f ".credo.exs" ] || grep -q ":credo" mix.exs 2>/dev/null; then
mix credo --strict
fi
if grep -q ":dialyxir" mix.exs 2>/dev/null; then
mix dialyzer --format short
fi
mix test
所有调用的检查项均须通过,方可批准。
规则
- 必须在审查前加载技能(不可事后加载)
- 每个问题须按顺序编号(1、2、3…)
- 每个问题须包含 FILE:LINE 定位
- Issue / Why / Fix 三部分须清晰分隔
- 按实际严重性分类(Critical/Major/Minor/Informational)
- 修复后必须执行验证
- 所有问题须在单次审查中报告——禁止保留至后续轮次
- 复审仅验证此前问题是否修复——禁止新发现
- 对净新增代码(新模块、新依赖、新测试套件)的请求属 Informational 级别,非阻塞项
- Verdict 判定仅依据 Critical 和 Major 项——Minor 与 Informational 不影响批准
热门AI工具
相关专题
本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。
0
2026.11.06
围绕Postman HTTP请求头配置展开,讲解Headers选项的具体使用方式,包括Key和Value参数填写、请求头信息添加、常见Header字段设置及请求头修改方法,帮助用户解决接口调试过程中遇到的请求头配置问题。
0
2026.11.06
详细介绍Postman接口请求的创建与发送方法,涵盖GET和POST请求、URL配置、请求参数、Headers请求头、Body请求体设置以及响应结果查看,帮助用户掌握Postman接口请求的完整操作流程。
0
2026.11.06
DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。
0
2026.11.05
DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。
0
2026.11.05
本专题聚焦DBeaver数据库连接配置与管理,覆盖从新建连接、选择数据库类型到填写连接参数和验证连接的完整流程。针对MySQL、PostgreSQL、SQL Server等常见数据库,整理相应的连接设置方法,并提供驱动缺失、认证失败和连接异常等问题的排查方向。
0
2026.11.04
本专题围绕XORM框架的结构体映射展开,说明表名与字段的命名策略、xorm标签常用属性、主键自增与时间字段自动填充,并演示Sync2自动建表、增量字段升级、索引声明与反向生成结构体的完整流程。
0
2026.11.04
本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。
0
2026.11.04
本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。
0
2026.11.04
热门下载
相关下载
精品课程
共6课时 | 12.1万人学习
共79课时 | 161.8万人学习
共6课时 | 54.7万人学习
最新文章