97 lines
4.6 KiB
YAML
97 lines
4.6 KiB
YAML
# ┌─────────────────────────────────────────────────────┐
|
||
# │ 净码特工 · Code Purifier — 用户自定义规则文件 │
|
||
# │ 文件路径:.code-review/rules/user-rules.yaml │
|
||
# │ 格式说明:YAML 数组,每条规则为一个 - id 开头的条目 │
|
||
# └─────────────────────────────────────────────────────┘
|
||
#
|
||
# 字段说明:
|
||
# id 必填,规则唯一标识(kebab-case)
|
||
# severity 必填,严重度:error / warning / info
|
||
# description 必填,规则简要描述
|
||
# message 必填,展示给开发者的提示消息
|
||
# languages 可选,规则生效的语言列表(不填则对所有语言生效)
|
||
# excludeLanguages 可选,规则排除的语言列表(优先级高于 languages)
|
||
#
|
||
# 内行数组语法:[javascript, typescript]
|
||
|
||
# ── 安全类 ──────────────────────────────────────────────
|
||
|
||
- id: no-hardcoded-credentials
|
||
severity: error
|
||
description: 禁止在源码中硬编码密码、令牌、API Key 等敏感凭证
|
||
message: 检测到疑似硬编码凭证,请使用环境变量或密钥管理服务注入
|
||
languages: [javascript, typescript, java]
|
||
|
||
- id: no-eval-usage
|
||
severity: error
|
||
description: 禁止使用 eval() 函数,存在代码注入风险
|
||
message: eval() 存在安全风险,请使用 JSON.parse() 或 Function 构造器替代
|
||
languages: [javascript, typescript]
|
||
|
||
- id: no-innerhtml-assignment
|
||
severity: warning
|
||
description: 禁止直接赋值 innerHTML,可能导致 XSS
|
||
message: 避免直接操作 innerHTML,请使用 textContent 或 DOMPurify 清洗
|
||
|
||
# ── 命名规范类 ──────────────────────────────────────────
|
||
|
||
- id: require-constant-case
|
||
severity: warning
|
||
description: 常量命名必须使用全大写加下划线(SCREAMING_SNAKE_CASE)
|
||
message: 常量应使用全大写命名,如 MAX_RETRY_COUNT
|
||
languages: [javascript, typescript, java]
|
||
|
||
- id: require-boolean-prefix
|
||
severity: info
|
||
description: 布尔变量和方法名应以 is/has/can/should 开头
|
||
message: 布尔变量建议添加 is/has/can/should 前缀以提升可读性
|
||
languages: [javascript, typescript]
|
||
|
||
# ── 性能类 ──────────────────────────────────────────────
|
||
|
||
- id: no-nested-loops-deep
|
||
severity: warning
|
||
description: 禁止三层及以上嵌套循环,时间复杂度过高
|
||
message: 检测到深层嵌套循环(≥3层),建议重构为扁平结构或使用查找表优化
|
||
languages: [javascript, typescript, java]
|
||
|
||
- id: no-sync-in-async
|
||
severity: warning
|
||
description: 异步函数内禁止调用同步阻塞 API
|
||
message: 在 async 函数中调用同步 API 会阻塞事件循环,请改用异步版本
|
||
languages: [javascript, typescript]
|
||
|
||
# ── 代码风格类 ──────────────────────────────────────────
|
||
|
||
- id: require-type-annotation
|
||
severity: info
|
||
description: 函数参数和返回值应显式标注 TypeScript 类型
|
||
message: 建议为函数添加显式类型注解,提升类型安全性
|
||
languages: [typescript]
|
||
|
||
- id: no-magic-numbers
|
||
severity: info
|
||
description: 禁止在代码中直接使用魔法数字,应提取为命名常量
|
||
message: 检测到魔法数字,建议提取为具名常量以提升可维护性
|
||
languages: [javascript, typescript]
|
||
|
||
# ── 团队约定类 ──────────────────────────────────────────
|
||
|
||
- id: require-error-context
|
||
severity: warning
|
||
description: throw 语句必须携带错误上下文信息
|
||
message: throw 时应提供足够的上下文信息,便于问题定位
|
||
languages: [javascript, typescript, java]
|
||
|
||
- id: no-todo-in-production
|
||
severity: info
|
||
description: 生产代码中不应遗留 TODO/FIXME/HACK 注释
|
||
message: 代码中发现 TODO/FIXME/HACK 注释,请在发布前处理
|
||
excludeLanguages: [sql]
|
||
|
||
- id: require-function-doc
|
||
severity: info
|
||
description: 公共函数应添加文档注释(JSDoc / Javadoc)
|
||
message: 公共函数缺少文档注释,建议补充说明用途、参数和返回值
|
||
languages: [javascript, typescript, java]
|