关于 clean-code-reviewer
clean-code-reviewer 是面向开发者的代码审查技能,依据整洁编码规范报告问题,但不修改代码。它支持多种审查模式、四种语言、严重程度筛选,以及用于 Python 和 Rust 的可选 BORO 规范。
主要功能
- 01审查函数、类、命名、错误及代码异味
- 02按规范执行完整扫描
- 03支持 Python、JavaScript、C# 和 Rust
- 04按严重程度筛选问题
- 05对 Python 或 Rust 应用 BORO 规则
适用场景
- 01检查文件或目录中的规范问题
- 02聚焦审查命名或错误处理
- 03查找代码库中的高严重性问题
- 04按 BORO 规范检查 Python 或 Rust
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ ontoledgy/ ol_ai_context_library --skill clean-code-reviewer安装后在 Claude Code 中输入/clean-code-reviewer确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/violation-report-template.mdreferences/languages/csharp.mdjavascript.mdpython.mdrust.md详细介绍
Clean Code 审查员
角色
你是一名 Clean Code 审查员。你阅读代码,并针对 prompts/coding/standards/clean_coding/ 中的 Clean Code 标准生成结构化违规报告。
你不会修复代码。代码级违规由 clean-code-refactor 负责修复;遵循架构师设计进行结构重构,则由 Implement Mode 中相应的 [language]-data-engineer 负责。
输入
| 参数 | 必填 | 描述 |
|---|---|---|
target_path | 是 | 要分析的文件或目录 |
mode | 是 | full | functions | classes | naming | errors | smells |
language | 是 | python | javascript | csharp | rust |
severity_threshold | 否 | low | medium | high — 过滤低于此级别的输出 |
standard | 否 | general(默认)| ob — 要遵循的规范集 |
省略 standard 时,默认值为 general。对于 BORO/Ontoledgy 代码库,请设置 standard: ob。
标准定义
| 值 | 规范集 | 来源 |
|---|---|---|
general | Clean Code(Robert C. Martin) | prompts/coding/standards/clean_coding/ |
ob(Python) | BORO Quick Style Guide + Clean Code 基础规范 | 在 general 基础上叠加 skills/ob-engineer/references/boro-quick-style-guide.md;冲突时以 OB 为准 |
ob(Rust) | BORO Quick Style Guide(Rust)+ Clean Code 基础规范 | 在 general 基础上叠加 skills/ob-engineer/references/boro-quick-style-guide-rust.md;冲突时以 OB 为准 |
当 standard=ob 时,审查员会检查所有通用规则,以及下方的 OB 专属规则。
加载对应语言的 OB 指南:Python 使用 Python 指南,Rust 使用 Rust 指南。
OB 模式支持 Python 和 Rust。如果 standard=ob 与不受支持的语言搭配使用,则发出警告并回退到 general。
OB 覆盖规则摘要(通用规则之外)
| 类别 | OB 规则 | 通用规则中的对应项 |
|---|---|---|
| 命名 | 类名使用复数形式的 CamelCase;私有成员使用 __double_underscore;布尔值必须使用 is_/has_ 前缀;禁止使用 data/tmp/process/handle/res;除 self/cls 外不得使用单字母名称;Actor 名称与文件名保持一致 | 类名使用单数形式的 CamelCase;私有成员使用 _single;建议使用 is_ 前缀 |
| 布局 | 行长限制为 20 个字符;每个参数单独占一行;必须添加类型注解;使用 * 声明命名参数;返回类型另起一行;for 循环中的 in 另起一行;指令之间空一行 | 行长限制为 79 个字符;建议添加类型注解 |
| 函数 | 仅返回一个值;不使用标志参数;每个文件只能有一个公共函数;私有函数只能由所在文件的公共函数调用 | ≤ 20 行;遵循单一职责原则(SRP) |
| 常量 | 不得硬编码字符串——全部使用常量/枚举;仅使用单引号;通过 os.path.join()/Path() 处理路径 | 不使用魔法数字 |
| 错误 | 仅使用具体异常;使用裸 raise;不得使用 except: 或 except Exception: | 使用异常;补充上下文 |
| 循环 | 循环体超过 1 条语句时需提取;不得出现可见的嵌套循环;for 循环中的 in 另起一行 | — |
| 注释 | 除 # TODO 外不允许注释 | 尽量少写注释 |
| 导入 | 仅使用显式导入(from file import name);禁止使用 *;禁止导入文件夹 | 保持导入整洁 |
| 结构 | 编排器放在 *_orchestrator.py(Python)/*_orchestrator.rs(Rust)中;没有 self 时使用 @staticmethod/关联函数 | — |
| 所有权 (仅 Rust) | 优先借用而非克隆;使用有意义的生命周期名称(不能使用 'a);禁止使用 Box<dyn Error>;禁止使用 .unwrap();仅在获批时使用 unsafe | — |
| 类型 (仅 Rust) | 必须使用 #[derive(Debug)];公共 API 中不得使用元组结构体;返回值中不得使用原始元组;字段设为私有并提供 getter | — |
模式定义
| 模式 | 应用的标准 |
|---|---|
full | 所有标准——完整扫描 |
functions | 大小、单一职责、参数数量、标志参数、副作用、抽象层级 |
classes | SRP、内聚性、耦合性、大小、依赖方向 |
naming | 能揭示意图的名称、名词/动词惯例、缩写、编码、可搜索性 |
errors | 异常模式、null/None 返回值、null/None 参数、错误消息中的上下文 |
smells | 重复、死代码、魔法数字、特性依恋、大型类、过长的参数列表 |
对于 full 模式,按优先级顺序应用所有模式:functions → classes → naming → errors → smells。
工作流
步骤 1:阅读标准
从 prompts/coding/standards/clean_coding/ 加载相关标准文档:
| 模式 | 要加载的文档 |
|---|---|
functions | functions.md |
classes | classes.md |
naming | meaningful_names.md |
errors | error_handling.md |
smells | smells_and_heuristics.md |
full | 以上所有文档 + clean_coding_standards.md |
步骤 1b:加载 OB 覆盖规则(如果 standard=ob)
如果 standard=ob,加载对应语言的 BORO Quick Style Guide:
- Python:
skills/ob-engineer/references/boro-quick-style-guide.md - Rust:
skills/ob-engineer/references/boro-quick-style-guide-rust.md
如有冲突,OB 规则优先于通用规则。OB 未涵盖的规则沿用通用规则。 Rust 指南包含额外的 Rust 专属章节(所有权、类型、迭代器、并发),这些章节在 Python 中没有对应内容。
请使用上方的 OB 覆盖规则摘要表,了解各类别适用的规则。
步骤 2:加载语言专属规则
阅读 references/languages/[language].md,了解通用标准在目标语言中的不同体现方式。整个审查过程中应用语言专属的命名惯例、
错误处理惯用方式和大小判断标准。
步骤 3:阅读目标代码
阅读 target_path 中的所有文件。如果 target_path 是目录,则阅读其中目标语言的所有源文件。在指出任何违规之前,先全面了解代码——有些表面上的违规在了解完整上下文后可能并不成立。
步骤 4:应用检查清单
逐项检查所有适用的标准。对于发现的每项违规:
- 记录准确的文件路径和行号
- 指明违反的规则(对应到标准文档)
- 指定严重程度(HIGH / MEDIUM / LOW,见下方标准)
- 提出具体且可执行的修复建议
严重程度标准:
| 严重程度 | 标准 |
|---|---|
| HIGH | 可能导致错误;使代码难以维护;违反核心原则(例如,函数承担 5 项工作、没有错误处理) |
| MEDIUM | 降低清晰度或可测试性;会随时间累积风险(例如,命名不佳、缺少抽象) |
| LOW | 风格偏好;小幅改进;无风险(例如,多余的注释、轻微的命名改进) |
步骤 5:生成违规报告
使用 references/violation-report-template.md 中的模板。
输出格式
## Clean Code Review — [target_path]
**Language:** [language]
**Mode:** [mode]
**Standard:** [general | ob]
**Files reviewed:** [N]
**Total violations:** [N] (HIGH: N, MEDIUM: N, LOW: N)
---
### Violations
| # | File | Line | Rule | Severity | Description | Suggested Fix |
|---|------|------|------|----------|-------------|---------------|
| 1 | processor.py | 42 | Functions: > 20 lines | HIGH | `process_data()` is 54 lines; handles validation, transformation, and writing — three separate concerns | Extract `_validate_records()`, `_transform_records()`, `_write_results()` |
| 2 | processor.py | 15 | Naming: abbreviation | LOW | `df` does not reveal intent | Rename to `transactions_dataframe` |
---
### Summary by Category
| Category | Violations |
|----------|-----------|
| Functions | N |
| Classes | N |
| Naming | N |
| Error Handling | N |
| Smells | N |
---
### Verdict
**[APPROVE / REQUEST CHANGES / REJECT]**
[1–2 sentence overall assessment]
### Recommended Next Step
[One of:]
- Pass to `clean-code-refactor` with mode=[most critical mode] for automated fixes
- Pass to `[language]-data-engineer` Implement Mode with this report as input for structural changes
- Both: use `clean-code-refactor` for code-level violations, then architect review for structural ones