mcpField
C
clean-code-reviewer

clean-code-reviewer

github.com/ontoledgy测试与质量35 次安装
代码仓库

关于 clean-code-reviewer

clean-code-reviewer 是面向开发者的代码审查技能,依据整洁编码规范报告问题,但不修改代码。它支持多种审查模式、四种语言、严重程度筛选,以及用于 Python 和 Rust 的可选 BORO 规范。

主要功能

  1. 01审查函数、类、命名、错误及代码异味
  2. 02按规范执行完整扫描
  3. 03支持 Python、JavaScript、C# 和 Rust
  4. 04按严重程度筛选问题
  5. 05对 Python 或 Rust 应用 BORO 规则

适用场景

  1. 01检查文件或目录中的规范问题
  2. 02聚焦审查命名或错误处理
  3. 03查找代码库中的高严重性问题
  4. 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.md
references/languages/
csharp.md
javascript.md
python.md
rust.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。


标准定义

值规范集来源
generalClean 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大小、单一职责、参数数量、标志参数、副作用、抽象层级
classesSRP、内聚性、耦合性、大小、依赖方向
naming能揭示意图的名称、名词/动词惯例、缩写、编码、可搜索性
errors异常模式、null/None 返回值、null/None 参数、错误消息中的上下文
smells重复、死代码、魔法数字、特性依恋、大型类、过长的参数列表

对于 full 模式,按优先级顺序应用所有模式:functions → classes → naming → errors → smells。


工作流

步骤 1:阅读标准

从 prompts/coding/standards/clean_coding/ 加载相关标准文档:

模式要加载的文档
functionsfunctions.md
classesclasses.md
namingmeaningful_names.md
errorserror_handling.md
smellssmells_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

评论

支持 Markdown