代码质量审计

Universal

ln-624-code-quality-auditor

by levnikolaevich

审计代码复杂度、深层嵌套、超长方法、God Class、O(n²)、N+1 查询和常量管理,输出带严重级别、定位、修复建议与评分的质量问题报告。

想尽早揪出复杂度失控、长方法和 N+1 查询等隐患时,用它做静态审计很省心,代码质量与性能问题都能一起扫到。

405编码与调试未扫描2026年3月5日

安装

claude skill add --url github.com/levnikolaevich/claude-code-skills/tree/master/ln-624-code-quality-auditor

文档

Paths: File paths (shared/, references/, ../ln-*) are relative to skills repo root. If not found at CWD, locate this SKILL.md directory and go up one level for repo root.

Code Quality Auditor (L3 Worker)

Specialized worker auditing code complexity, method signatures, algorithms, and constants management.

Purpose & Scope

  • Worker in ln-620 coordinator pipeline - invoked by ln-620-codebase-auditor
  • Audit code quality (Categories 5+6+NEW: Medium Priority)
  • Check complexity metrics, method signature quality, algorithmic efficiency, constants management
  • Return structured findings with severity, location, effort, recommendations
  • Calculate compliance score (X/10) for Code Quality category

Inputs (from Coordinator)

MANDATORY READ: Load shared/references/task_delegation_pattern.md#audit-coordinator--worker-contract for contextStore structure.

Receives contextStore with: tech_stack, best_practices, principles, codebase_root, output_dir.

Domain-aware: Supports domain_mode + current_domain (see audit_output_schema.md#domain-aware-worker-output).

Workflow

MANDATORY READ: Load shared/references/two_layer_detection.md for detection methodology.

  1. Parse context — extract fields, determine scan_path (domain-aware if specified), extract output_dir
  2. Scan codebase for violations (Layer 1)
    • All Grep/Glob patterns use scan_path (not codebase_root)
    • Example: Grep(pattern="if.*if.*if", path=scan_path) for nesting detection
  3. Analyze context per candidate (Layer 2)
    • Cyclomatic complexity: is complexity from switch/case on enum (valid) or deeply nested conditions (bad)?
    • O(n²): read context — what's n? If bounded (n < 100), downgrade severity
    • N+1: read ORM config — does it have eager loading configured elsewhere?
    • Cascade depth: already traces calls (implicit Layer 2)
  4. Collect findings with severity, location, effort, recommendation
    • Tag each finding with domain: domain_name (if domain-aware)
  5. Calculate score using penalty algorithm
  6. Write Report: Build full markdown report in memory per shared/templates/audit_worker_report_template.md, write to {output_dir}/624-quality-{domain}.md (or 624-quality.md in global mode) in single Write call
  7. Return Summary: Return minimal summary to coordinator (see Output Format)

Audit Rules (Priority: MEDIUM)

1. Cyclomatic Complexity

What: Too many decision points in single function (> 10)

Detection:

  • Count if/else, switch/case, ternary, &&, ||, for, while
  • Use tools: eslint-plugin-complexity, radon (Python), gocyclo (Go)

Severity:

  • HIGH: Complexity > 20 (extremely hard to test)
  • MEDIUM: Complexity 11-20 (refactor recommended)
  • LOW: Complexity 8-10 (acceptable but monitor)

Recommendation: Split function, extract helper methods, use early returns

Effort: M-L (depends on complexity)

2. Deep Nesting (> 4 levels)

What: Nested if/for/while blocks too deep

Detection:

  • Count indentation levels
  • Pattern: if { if { if { if { if { ... } } } } }

Severity:

  • HIGH: > 6 levels (unreadable)
  • MEDIUM: 5-6 levels
  • LOW: 4 levels

Recommendation: Extract functions, use guard clauses, invert conditions

Effort: M (refactor structure)

3. Long Methods (> 50 lines)

What: Functions too long, doing too much

Detection:

  • Count lines between function start and end
  • Exclude comments, blank lines

Severity:

  • HIGH: > 100 lines
  • MEDIUM: 51-100 lines
  • LOW: 40-50 lines (borderline)

Recommendation: Split into smaller functions, apply Single Responsibility

Effort: M (extract logic)

4. God Classes/Modules (> 500 lines)

What: Files with too many responsibilities

Detection:

  • Count lines in file (exclude comments)
  • Check number of public methods/functions

Severity:

  • HIGH: > 1000 lines
  • MEDIUM: 501-1000 lines
  • LOW: 400-500 lines

Recommendation: Split into multiple files, apply separation of concerns

Effort: L (major refactor)

5. Too Many Parameters (> 5)

What: Functions with excessive parameters

Detection:

  • Count function parameters
  • Check constructors, methods

Severity:

  • MEDIUM: 6-8 parameters
  • LOW: 5 parameters (borderline)

Recommendation: Use parameter object, builder pattern, default parameters

Effort: S-M (refactor signature + calls)

6. O(n²) or Worse Algorithms

What: Inefficient nested loops over collections

Detection:

  • Nested for loops: for (i) { for (j) { ... } }
  • Nested array methods: arr.map(x => arr.filter(...))

Severity:

  • HIGH: O(n²) in hot path (API request handler)
  • MEDIUM: O(n²) in occasional operations
  • LOW: O(n²) on small datasets (n < 100)

Recommendation: Use hash maps, optimize with single pass, use better data structures

Effort: M (algorithm redesign)

7. N+1 Query Patterns

What: ORM lazy loading causing N+1 queries

Detection:

  • Find loops with database queries inside
  • Check ORM patterns: users.forEach(u => u.getPosts())

Severity:

  • CRITICAL: N+1 in API endpoint (performance disaster)
  • HIGH: N+1 in frequent operations
  • MEDIUM: N+1 in admin panel

Recommendation: Use eager loading, batch queries, JOIN

Effort: M (change ORM query)

8. Constants Management (NEW)

What: Magic numbers/strings, decentralized constants, duplicates

Detection:

IssuePatternExample
Magic numbersHardcoded numbers in conditions/calculationsif (status === 2)
Magic stringsHardcoded strings in comparisonsif (role === 'admin')
DecentralizedConstants scattered across filesMAX_SIZE = 100 in 5 files
DuplicatesSame value multiple timesSTATUS_ACTIVE = 1 in 3 places
No central fileMissing constants.ts or config.pyNo single source of truth

Severity:

  • HIGH: Magic numbers in business logic (payment amounts, statuses)
  • MEDIUM: Duplicate constants (same value defined 3+ times)
  • MEDIUM: No central constants file
  • LOW: Magic strings in logging/debugging

Recommendation:

  • Create central constants file (constants.ts, config.py, constants.go)
  • Extract magic numbers to named constants: const STATUS_ACTIVE = 1
  • Consolidate duplicates, import from central file
  • Use enums for related constants

Effort: M (extract constants, update imports, consolidate)

9. Method Signature Quality

What: Poor method contracts reducing readability and maintainability

Detection:

IssuePatternExample
Boolean flag params>=2 boolean params in signaturedef process(data, is_async: bool, skip_validation: bool)
Too many optional params>=3 optional params with defaultsdef query(db, limit=10, offset=0, sort="id", order="asc")
Inconsistent verb namingDifferent verbs for same operation type in one moduleget_user() vs fetch_account() vs load_profile()
Unclear return type-> dict, -> Any, -> tuple without TypedDict/NamedTupledef get_stats() -> dict instead of -> StatsResponse

Severity:

  • MEDIUM: Boolean flag params (use enum/strategy), unclear return types
  • LOW: Too many optional params, inconsistent naming

Recommendation:

  • Boolean flags: replace with enum, strategy pattern, or separate methods
  • Optional params: group into config/options dataclass
  • Naming: standardize verb conventions per module (get_ for sync, fetch_ for async, etc.)
  • Return types: use TypedDict, NamedTuple, or dataclass instead of raw dict/tuple

Effort: S-M (refactor signatures + callers)

10. Side-Effect Cascade Depth

What: Functions triggering cascading chains of external side-effects (DB writes → notifications → metrics → limits).

Detection: MANDATORY READ: shared/references/ai_ready_architecture.md for side-effect markers, false positive exclusions, and opaque sink rules.

  • Glob **/services/**/*.{py,ts,js,cs,java} to find service files
  • For each public function: check body for side-effect markers (per reference)
  • Recursively follow called internal functions for additional markers
  • Calculate max chain depth from entry point

Severity:

  • HIGH: cascade_depth >= 4
  • MEDIUM: cascade_depth = 3
  • OK: depth <= 2

Recommendation: Refactor to flat orchestration — extract side-effects into independent sink functions. See reference.

Effort: M-L

Output: Also generate summary Pipe/Sink table per module:

ModuleSinks (0-1)Shallow Pipes (2)Deep Pipes (3+)Sink Ratio

Scoring Algorithm

MANDATORY READ: Load shared/references/audit_scoring.md for unified scoring formula.

Output Format

MANDATORY READ: Load shared/templates/audit_worker_report_template.md for file format.

Write report to {output_dir}/624-quality-{domain}.md (or 624-quality.md in global mode) with category: "Code Quality" and checks: cyclomatic_complexity, deep_nesting, long_methods, god_classes, too_many_params, quadratic_algorithms, n_plus_one, magic_numbers, method_signatures, cascade_depth.

Return summary to coordinator:

code
Report written: docs/project/.audit/ln-620/{YYYY-MM-DD}/624-quality-orders.md
Score: X.X/10 | Issues: N (C:N H:N M:N L:N)

Critical Rules

  • Do not auto-fix: Report only
  • Domain-aware scanning: If domain_mode="domain-aware", scan ONLY scan_path (not entire codebase)
  • Tag findings: Include domain field in each finding when domain-aware
  • Context-aware: Small functions (n < 100) with O(n²) may be acceptable
  • Constants detection: Exclude test files, configs, examples
  • Metrics tools: Use existing tools when available (ESLint complexity plugin, radon, gocyclo)

Definition of Done

  • contextStore parsed (including domain_mode, current_domain, output_dir)
  • scan_path determined (domain path or codebase root)
  • All 10 checks completed (scoped to scan_path):
    • complexity, nesting, length, god classes, parameters, O(n²), N+1, constants, method signatures, cascade depth
  • Findings collected with severity, location, effort, recommendation, domain
  • Score calculated
  • Report written to {output_dir}/624-quality-{domain}.md (atomic single Write call)
  • Summary returned to coordinator

Reference Files

  • Worker report template: shared/templates/audit_worker_report_template.md
  • Audit scoring formula: shared/references/audit_scoring.md
  • Audit output schema: shared/references/audit_output_schema.md

Version: 3.0.0 Last Updated: 2025-12-23

相关 Skills

网页构建器

by anthropics

Universal
热门

面向复杂 claude.ai HTML artifact 开发,快速初始化 React + Tailwind CSS + shadcn/ui 项目并打包为单文件 HTML,适合需要状态管理、路由或多组件交互的页面。

在 claude.ai 里做复杂网页 Artifact 很省心,多组件、状态和路由都能顺手搭起来,React、Tailwind 与 shadcn/ui 组合效率高、成品也更精致。

编码与调试
未扫描119.1k

前端设计

by anthropics

Universal
热门

面向组件、页面、海报和 Web 应用开发,按鲜明视觉方向生成可直接落地的前端代码与高质感 UI,适合做 landing page、Dashboard 或美化现有界面,避开千篇一律的 AI 审美。

想把页面做得既能上线又有设计感,就用前端设计:组件到整站都能产出,难得的是能避开千篇一律的 AI 味。

编码与调试
未扫描119.1k

网页应用测试

by anthropics

Universal
热门

用 Playwright 为本地 Web 应用编写自动化测试,支持启动开发服务器、校验前端交互、排查 UI 异常、抓取截图与浏览器日志,适合调试动态页面和回归验证。

借助 Playwright 一站式验证本地 Web 应用前端功能,调 UI 时还能同步查看日志和截图,定位问题更快。

编码与调试
未扫描119.1k

相关 MCP 服务

GitHub

编辑精选

by GitHub

热门

GitHub 是 MCP 官方参考服务器,让 Claude 直接读写你的代码仓库和 Issues。

这个参考服务器解决了开发者想让 AI 安全访问 GitHub 数据的问题,适合需要自动化代码审查或 Issue 管理的团队。但注意它只是参考实现,生产环境得自己加固安全。

编码与调试
83.9k

by Context7

热门

Context7 是实时拉取最新文档和代码示例的智能助手,让你告别过时资料。

它能解决开发者查找文档时信息滞后的问题,特别适合快速上手新库或跟进更新。不过,依赖外部源可能导致偶尔的数据延迟,建议结合官方文档使用。

编码与调试
52.9k

by tldraw

热门

tldraw 是让 AI 助手直接在无限画布上绘图和协作的 MCP 服务器。

这解决了 AI 只能输出文本、无法视觉化协作的痛点——想象让 Claude 帮你画流程图或白板讨论。最适合需要快速原型设计或头脑风暴的开发者。不过,目前它只是个基础连接器,你得自己搭建画布应用才能发挥全部潜力。

编码与调试
46.4k

评论