mcpField
E
elixir-code-review

elixir-code-review

github.com/existential-birds测试与质量85117 次安装11 周前更新
代码仓库

关于 elixir-code-review

elixir-code-review 是用于审查 Elixir 代码的技能,覆盖风格、模式匹配、OTP、文档和安全。它通过情境规则与证据门槛,区分可操作的问题和不应标记的有效写法。

主要功能

  1. 01检查 Elixir 命名与代码风格
  2. 02检查模式匹配与错误处理
  3. 03GenServer 和 Supervisor 审查清单
  4. 04文档与安全检查
  5. 05情境规则与证据门槛

适用场景

  1. 01审查 Elixir 模块和函数结构
  2. 02检查 with 子句与模式匹配
  3. 03评估 GenServer 和 Supervisor 代码
  4. 04核验文档与安全实践

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/existential-birds/beagle --skill elixir-code-review

安装后在 Claude Code 中输入/elixir-code-review确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
code-style.md
documentation.md
otp-basics.md
pattern-matching.md

详细介绍

Elixir 代码审查

快速参考

问题类型参考资料
命名、格式、模块结构references/code-style.md
With 子句、守卫、解构references/pattern-matching.md
GenServer、Supervisor、Applicationreferences/otp-basics.md
@moduledoc、@doc、@spec、doctestreferences/documentation.md

审查清单

代码风格
  • 模块名采用 CamelCase,函数名采用 snake_case
  • 管道链以原始数据开头,而不是函数调用
  • 私有函数放在公开函数之后
  • 不带参数的函数调用中没有不必要的括号
模式匹配
  • 适用时,函数使用模式匹配而不是条件判断
  • With 子句对错误情况有 else 处理
  • 尽可能使用守卫,而不是运行时检查
  • 在函数头中使用解构,而不是在函数体中
OTP 基础知识
  • GenServer 使用 handle_continue 处理耗时的初始化工作
  • Supervisor 使用恰当的重启策略
  • GenServer 回调中没有阻塞调用
  • 正确使用 call 与 cast(同步与异步)
文档
  • 所有公开函数都有 @doc 和 @spec
  • 模块都有描述其用途的 @moduledoc
  • 适当为纯函数编写 doctest
  • 真正公开的函数没有标记为 @doc false
安全性
  • 不对用户输入使用 String.to_atom/1(改用 to_existing_atom/1)
  • 不对不可信输入使用 Code.eval_string/1
  • 使用 :erlang.binary_to_term/1 时提供 :safe 选项

有效模式(不要标记)

  • 用于模式匹配的空函数子句——def foo(nil), do: nil 是有效的保护措施
  • 只进行一次转换时使用 |>——这是可读性选择,并非错误
  • 在回调实现上使用 @doc false——回调在行为层级记录文档
  • 私有函数没有 @spec——内部函数的 @spec 可选
  • 使用 Kernel.apply/3——已知模块和函数时,用于动态分派是有效的

上下文相关规则

问题仅在以下情况下标记
缺少 @spec函数是公开的且已导出
通用 rescue存在具体的异常类型
嵌套 case/cond嵌套超过 2 层

何时加载参考资料

  • 审查模块/函数命名 → code-style.md
  • 审查 with/case/cond 语句 → pattern-matching.md
  • 审查 GenServer/Supervisor 代码 → otp-basics.md
  • 审查 @doc/@moduledoc → documentation.md

报告前的关卡

对本批审查按顺序完成以下步骤。每一步通过前,不要发布审查发现。

  1. 已加载协议——阅读 review-verification-protocol,并针对使用的每种发现类别(未使用、验证、安全性、性能等)应用其中的检查。通过条件: 对于每项实质性发现,你都能指出符合的协议小节,或者说明其为 N/A 并给出理由(纯风格问题)。
  2. 证据有明确定位——通过条件: 每项发现都包含具体定位:path:line(或行范围),或者 Module.function/arity 加上文件中的简短引用片段。
  3. 主张有材料佐证——对于未使用代码、缺少验证或安全风险等断言,通过条件: 附上支持材料(例如搜索结果、文件读取范围),或者将该项降级为明确的问题/不确定,并说明尚未验证的内容。

提交发现前

先完成报告前的关卡(上文部分);验证协议是这些关卡的必需输入。

评论

支持 Markdown