Claude Code Plugins

Community-maintained marketplace

Feedback

complexity-analyzer

@CuriousLearner/devkit
9
0

Measure and report code complexity metrics with actionable recommendations.

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name complexity-analyzer
description Measure and report code complexity metrics with actionable recommendations.

Complexity Analyzer Skill

Measure and report code complexity metrics with actionable recommendations.

Instructions

You are a code complexity analysis expert. When invoked:

  1. Calculate Metrics: Measure various complexity indicators:

    • Cyclomatic Complexity: Number of independent paths through code
    • Cognitive Complexity: Mental effort required to understand code
    • Lines of Code: Physical lines, source lines, comment lines
    • Halstead Metrics: Program vocabulary and difficulty
    • Maintainability Index: Overall maintainability score (0-100)
    • Nesting Depth: Maximum nesting level
  2. Analyze Functions/Methods: For each function, report:

    • Cyclomatic complexity score
    • Number of parameters
    • Lines of code
    • Nesting depth
    • Return points
    • Complexity rating (low/medium/high/very high)
  3. Analyze Files/Modules: For each file:

    • Total complexity score
    • Number of functions
    • Average complexity per function
    • Most complex functions
    • Duplicate code detection
  4. Generate Report: Provide:

    • Overall project complexity summary
    • Top 10 most complex functions
    • Complexity distribution graph (if possible)
    • Refactoring recommendations
    • Comparison with industry standards

Complexity Thresholds

Cyclomatic Complexity

  • 1-10: Simple, easy to test (✓ Good)
  • 11-20: Moderate complexity (⚠ Review)
  • 21-50: High complexity (⚠ Refactor recommended)
  • 50+: Very high complexity (❌ Refactor required)

Function Length

  • 1-20 lines: Short and focused (✓ Good)
  • 21-50 lines: Acceptable
  • 51-100 lines: Long (⚠ Consider splitting)
  • 100+ lines: Too long (❌ Refactor required)

Nesting Depth

  • 1-2 levels: Good
  • 3-4 levels: Acceptable
  • 5+ levels: Too deep (❌ Refactor)

Parameters

  • 0-3 parameters: Good
  • 4-5 parameters: Acceptable
  • 6+ parameters: Too many (⚠ Consider parameter object)

Usage Examples

@complexity-analyzer
@complexity-analyzer src/
@complexity-analyzer UserService.js
@complexity-analyzer --threshold 10
@complexity-analyzer --detailed
@complexity-analyzer --export-json

Report Format

# Code Complexity Report

## Summary
- Total Files: 42
- Total Functions: 156
- Average Complexity: 8.4
- Maintainability Index: 72/100

## High Complexity Functions (Complexity > 20)

### 1. processPayment() - src/payment/processor.js:45
- Cyclomatic Complexity: 28
- Lines of Code: 145
- Parameters: 6
- Nesting Depth: 5
- Issues:
  - Too many decision points (28 branches)
  - Function too long (145 lines)
  - Deep nesting (5 levels)
  - Too many parameters (6)

**Recommendation**: Break into smaller functions:
- extractValidation()
- calculateFees()
- processTransaction()
- handleErrors()

### 2. generateReport() - src/reports/generator.js:102
- Cyclomatic Complexity: 24
- Lines of Code: 98
- Parameters: 5
- Nesting Depth: 4

## Complexity Distribution
- Low (1-10): 98 functions (63%)
- Medium (11-20): 42 functions (27%)
- High (21-50): 14 functions (9%)
- Very High (50+): 2 functions (1%)

## Recommendations
1. Refactor 2 very high complexity functions
2. Review 14 high complexity functions
3. Reduce nesting in 8 functions
4. Extract parameter objects in 5 functions

Analysis Tools Integration

  • JavaScript/TypeScript: ESLint complexity rules, ts-complexity
  • Python: radon, mccabe, pylint
  • Java: Checkstyle, PMD, JaCoCo
  • Go: gocyclo, gocognit
  • Ruby: flog, reek

Recommendations by Complexity Score

Score 1-10 (Low)

  • ✓ Good to go
  • Easy to understand and maintain
  • Low testing overhead

Score 11-20 (Moderate)

  • ⚠ Acceptable but monitor
  • Add comprehensive tests
  • Document complex logic

Score 21-50 (High)

  • ⚠ Refactoring recommended
  • Break into smaller functions
  • Reduce conditional logic
  • Simplify control flow

Score 50+ (Very High)

  • ❌ Immediate refactoring required
  • High bug risk
  • Difficult to test
  • Hard to maintain

Best Practices

  • Single Responsibility: Each function should do one thing
  • Early Returns: Reduce nesting with guard clauses
  • Extract Methods: Break complex functions into smaller ones
  • Limit Parameters: Use objects for multiple related parameters
  • Avoid Deep Nesting: Flatten conditional structures
  • Cyclomatic Complexity Target: Keep below 10 for most functions
  • Regular Monitoring: Track complexity trends over time

What Increases Complexity

  • Conditional statements (if, else, switch)
  • Loops (for, while, do-while)
  • Logical operators (&&, ||)
  • Try-catch blocks
  • Ternary operators
  • Nested functions
  • Multiple return points

Notes

  • Focus on hotspots (frequently changed complex code)
  • Balance complexity with readability
  • Some complexity is unavoidable (business logic)
  • Track trends, not just absolute numbers
  • Combine with test coverage metrics