mcpField
C
code-antipatterns

code-antipatterns

github.com/laurigates测试与质量5961 次安装1 天前更新
代码仓库

关于 code-antipatterns

code-antipatterns 是用于代码审查的 Skill,通过 ast-grep 规则扫描并评估发现的问题,涵盖常见语言与框架模式,并指导严重性分级、修复建议和计划。

主要功能

  1. 01运行确定性的 ast-grep 规则扫描
  2. 02按严重程度分类问题
  3. 03提出修复与流程改进建议
  4. 04检查 JavaScript、TypeScript 和 Python 模式

适用场景

  1. 01扫描代码库中的常见反模式
  2. 02为代码审查确定问题优先级
  3. 03规划自动修复和 lint 改进

安装

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

$npx skills add https://github.com/laurigates/claude-plugins --skill code-antipatterns

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

包含的文件

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

REFERENCE.md
rules/
sgconfig.yml
rules/lib/
no-console-log.yml
no-empty-catch.yml
no-eval.yml
no-innerhtml.yml
no-magic-number.yml
no-var.yml
py-bare-except.yml
py-global.yml
py-mutable-default.yml
py-use-isinstance.yml
ts-any-annotation.yml
ts-as-any.yml
vue-props-mutation.yml
rules/tests/
no-console-log-test.yml
no-empty-catch-test.yml
no-eval-test.yml
no-innerhtml-test.yml
no-magic-number-test.yml
no-var-test.yml
py-bare-except-test.yml
py-global-test.yml
py-mutable-default-test.yml
py-use-isinstance-test.yml
ts-any-annotation-test.yml
ts-as-any-test.yml
vue-props-mutation-test.yml
scripts/tests/
test-rules-project.sh

详细介绍

适用场景

在以下情况下使用此技能……在以下情况下改用其他方式……
并行扫描反模式并生成报告查阅完整的 YAML 规则目录 → 参见 REFERENCE.md
专门检查空的 catch、未处理的 Promise 或 || true使用专用扫描器 → code-hidden-failures --track errors
查找空结果视为成功/静默降级模式使用专用扫描器 → code-hidden-failures --track degradation
全面审查安全性、性能和架构方面的代码质量运行完整审查委派 → code-review

上下文

  • 分析路径:$1(未指定时默认为当前目录)
  • JS/TS 文件:!find . -type f \( -name "*.js" -o -name "*.ts" -o -name "*.jsx" -o -name "*.tsx" \)
  • Vue 文件:!find . -name "*.vue"
  • Python 文件:!find . -name "*.py"

你的任务

执行全面的反模式分析。机械检测是对已发布规则项目运行一次确定性的 ast-grep scan——你无需重新输入 sg -p '…' 模式,也不要仅为了运行这些模式而分派多个 Agent。你的工作是基于扫描得到的结构化发现进行判断:评估严重程度、提出建议并规划修复。

步骤 1:运行确定性扫描

检测目录以 ast-grep 规则项目的形式提供,位于 rules/(rules/lib/ 中每种模式对应一个 *.yml,且 rules/tests/ 中为每条规则提供有效/无效测试样例)。一次性运行整个目录:

ast-grep scan -c ${CLAUDE_SKILL_DIR}/rules/sgconfig.yml --json=compact <path>

每条 JSON 发现都包含 ruleId、file、range(行/列)、message 和匹配的 text。解析这些内容——它们是以下所有类别的原始发现集合。规则涵盖:空的 catch、console.log、var、eval/new Function、innerHTML/outerHTML、as any/: any 注解、计时器中的魔术数字、Vue 属性变更、Python 可变默认值、裸 except、global 和 type() ==。

优雅降级——如果未安装 ast-grep(程序名为 ast-grep 或 sg),则回退到逐模式流程:阅读 REFERENCE.md,其中列出了每条规则对应的源 .yml 文件,然后手动运行各条 ast-grep -p '<pattern>' --lang <lang> 命令。规则项目是快速路径;参考文档是备用方案。

步骤 2:判断(Agent 的实际工作)

扫描是机械且可复现的;评估、建议和修复规划才是需要判断的工作——请根据扫描输出自行完成,而不是再分派 Agent 重跑这些模式:

  • 严重程度评估——结合下方类别表格中的上下文以及应用类型(前端/后端/CLI/库),提升或降低每条发现的严重程度。
  • 错误吞噬类发现(空的 catch、未处理的 Promise、裸 except)→ 委派给 /code:hidden-failures --track errors,使用其严重程度模型、建议呈现方式和隐私脱敏规则。不要在此处重新分类。
  • 建议与修复规划——归纳系统性问题,注明哪些发现可由 ast-grep 自动fix,并建议流程改进(lint 规则、pre-commit)。

仅在确实需要独立推理时才并行分派 Task(例如深入安全审查或特定框架的架构审查)——绝不要用它来运行模式,因为步骤 1 已经以确定性的方式运行过一次。

分析类别

根据检测到的语言,分析以下类别:

  1. JavaScript/TypeScript 反模式

    • 回调、魔法值、console.logs
    • var 的使用、已弃用模式
    • 错误被吞掉(空 catch、未处理的 Promise)→ 委派给 /code:hidden-failures --track errors
  2. 异步/Promise 模式

    • 嵌套回调、Promise 构造函数反模式
    • 错误处理覆盖范围(未处理/未等待的 Promise)→ 委派给 /code:hidden-failures --track errors
  3. 框架特定问题(如果检测到)

    • Vue 3:修改 Props、响应式问题、混用 Options API 和 Composition API
    • React:Hook 中缺少依赖、内联函数、属性逐层传递
  4. TypeScript 质量(如果存在 .ts 文件)

    • 过度使用 any 类型、非空断言、类型安全问题
  5. 代码复杂度

    • 长函数(>50 行)、深层嵌套(>4 层)、参数列表过长
  6. 安全问题

    • 使用 eval、innerHTML XSS、硬编码密钥、注入风险
  7. 内存与性能

    • 未清理的事件监听器、setInterval 泄漏、低效模式
  8. Python 反模式(如果检测到)

    • 可变默认参数、全局变量
    • 裸 except 和抑制模式 → 委派给 /code:hidden-failures --track errors
委派类别:错误被吞掉

此处不要重新实现空 catch / 裸 except / 未等待的 Promise 检测。 使用 SlashCommand 工具调用 /code:hidden-failures --track errors,并使用 相同的 PATH 和严重性筛选条件,然后将其发现整合到 综合报告的专门 错误被吞掉 部分中。

理由:单一事实来源可避免严重性模型、应用上下文呈现建议和隐私脱敏 策略出现偏差。请参阅 code-quality-plugin/skills/code-hidden-failures/SKILL.md。

规则项目不涵盖的内容(由 Agent 判断)

目录中的两个问题并非结构化的单节点匹配,应作为针对代码的 Agent 判断检查,而非规则:

  • 深层嵌套 / 长函数 / 圈复杂度 —— 这是针对函数体的度量指标,而非模式。使用 /code:complexity 或阅读标记出的文件。
  • 未等待的 Promise —— 应以仓库自身的工具链为准;使用 tsc + no-floating-promises ESLint 规则,或 /code:hidden-failures --track errors,而不是使用会标记每个调用的宽泛结构规则。
输出格式

将发现整合为以下结构:

## Anti-pattern Analysis Report

### Summary
- Total issues: X
- Critical: X | High: X | Medium: X | Low: X
- Categories with most issues: [list]

### Critical Issues (Fix Immediately)
| File | Line | Issue | Category |
|------|------|-------|----------|
| ... | ... | ... | ... |

### High Priority Issues
| File | Line | Issue | Category |
|------|------|-------|----------|
| ... | ... | ... | ... |

### Medium Priority Issues
[Similar table]

### Low Priority / Style Issues
[Similar table or summary count]

### Recommendations
1. [Prioritized fix recommendations]
2. [...]

### Category Breakdown
- **Security**: X issues (details)
- **Async/Promises**: X issues (details)
- **Code Complexity**: X issues (details)
- [...]
可选标志
  • --focus <category>:聚焦于特定类别(security、async、complexity、framework)
  • --severity <level>:要报告的最低严重性级别(critical、high、medium、low)
  • --fix:在安全的情况下尝试自动修复
分析后

整合发现后:

  1. 按影响和工作量对问题排序
  2. 建议哪些问题可以使用 ast-grep 自动修复
  3. 找出表明存在系统性问题的模式
  4. 建议流程改进(lint 规则、提交前钩子)

另请参阅

  • 规则项目:rules/ — 可执行的 ast-grep 目录(sgconfig.yml + rules/lib/*.yml + rules/tests/*-test.yml);运行 ast-grep test -c rules/sgconfig.yml --skip-snapshot-tests,根据每条规则的测试样例进行验证
  • 参考:REFERENCE.md - 叙述式目录,列出每种模式对应的规则文件
  • 技能:ast-grep-search - ast-grep 用法参考
  • 命令:/code:review - 全面的代码审查
  • Agent:security-audit - 深入安全分析
  • Agent:code-refactoring - 自动重构

相关配置技能

  • 如果未配置 lint → 使用 /configure:linting 实现自动检查
  • 如果尚未设置安全扫描 → 使用 /configure:security 集成到 CI

评论

支持 Markdown