Code Quality Analysis
Comprehensive code quality analysis skill covering style, complexity, dead code detection, and type checking.
Core Capabilities
Style Compliance
Check adherence to language-specific style guides:
Python (PEP8/Black):
- •Line length (88 chars for Black, 79 for PEP8)
- •Indentation (4 spaces)
- •Import ordering (standard, third-party, local)
- •Naming conventions (snake_case for functions/variables, PascalCase for classes)
- •Whitespace usage
Style check commands:
# Black formatting check black --check --diff . # Flake8 linting flake8 --max-line-length=88 . # isort import sorting isort --check-only --diff .
Complexity Metrics
Measure and report code complexity:
Cyclomatic Complexity:
- •Number of independent paths through code
- •Target: < 10 per function
- •Warning: 10-20
- •Critical: > 20
Cognitive Complexity:
- •Mental effort to understand code
- •Accounts for nesting depth and control flow
Function Length:
- •Target: < 50 lines
- •Warning: 50-100 lines
- •Critical: > 100 lines
Nesting Depth:
- •Target: < 4 levels
- •Warning: 4-6 levels
- •Critical: > 6 levels
Complexity analysis:
# Using radon for Python radon cc . -a -s # Cyclomatic complexity radon mi . # Maintainability index radon hal . # Halstead metrics
Dead Code Detection
Identify unused code elements:
Unused Imports:
# Python - using autoflake autoflake --check --remove-all-unused-imports . # Using flake8 with F401 flake8 --select=F401 .
Unused Variables:
- •Local variables assigned but never read
- •Function parameters ignored
- •Class attributes never accessed
Unused Functions/Classes:
- •Defined but never called
- •Private methods not used internally
- •Dead code branches (always false conditions)
Unreachable Code:
- •Code after return/raise/break/continue
- •Branches with impossible conditions
- •Deprecated code still in codebase
Type Hint Analysis
Validate type annotations:
Missing Type Hints:
# Using mypy mypy --strict . # Check specific strictness levels mypy --disallow-untyped-defs . mypy --disallow-incomplete-defs .
Type Errors:
- •Incompatible types in assignments
- •Wrong argument types
- •Missing return types
- •Generic type issues
Type Coverage:
- •Percentage of code with type annotations
- •Target: > 80% coverage
Quality Metrics Dashboard
When analyzing a codebase, report:
| Metric | Value | Target | Status |
|---|---|---|---|
| Style Compliance | X% | > 95% | Pass/Fail |
| Avg Cyclomatic Complexity | X | < 10 | Pass/Fail |
| Max Function Length | X lines | < 50 | Pass/Fail |
| Dead Code | X items | 0 | Pass/Fail |
| Type Coverage | X% | > 80% | Pass/Fail |
Analysis Workflow
Full Quality Analysis
To perform comprehensive quality check:
- •Style check: Run linters and formatters
- •Complexity analysis: Calculate metrics
- •Dead code scan: Find unused elements
- •Type check: Validate annotations
- •Report generation: Summarize findings
Quick Quality Check
For rapid assessment of changes:
- •Get changed files from git diff
- •Run focused linting on changed files
- •Check complexity of modified functions
- •Validate types in touched code
Language-Specific Guidance
Python
Recommended tooling:
- •Black (formatting)
- •isort (import sorting)
- •flake8 (linting)
- •mypy (type checking)
- •radon (complexity)
- •vulture (dead code)
Configuration (pyproject.toml):
[tool.black] line-length = 88 target-version = ['py311'] [tool.isort] profile = "black" line_length = 88 [tool.mypy] python_version = "3.11" strict = true
JavaScript/TypeScript
Recommended tooling:
- •ESLint (linting)
- •Prettier (formatting)
- •TypeScript compiler (type checking)
Configuration (.eslintrc.json):
{
"extends": ["eslint:recommended"],
"rules": {
"complexity": ["warn", 10],
"max-depth": ["warn", 4],
"max-lines-per-function": ["warn", 50]
}
}
Common Quality Issues
High Priority Fixes
- •Unused imports: Remove immediately
- •Type errors: Fix type mismatches
- •High complexity: Refactor into smaller functions
- •Long functions: Extract logical blocks
Medium Priority
- •Style violations: Apply formatter
- •Missing type hints: Add annotations
- •Moderate complexity: Consider refactoring
- •Unused variables: Remove or use
Low Priority
- •Minor style preferences: Team decision
- •Optional type hints: Add gradually
- •Documentation gaps: Address incrementally
Output Format
Present findings organized by severity:
Errors (must fix):
- •Type errors
- •Syntax issues
- •Critical complexity
Warnings (should fix):
- •Unused code
- •High complexity
- •Missing types in public APIs
Info (consider):
- •Style suggestions
- •Optimization opportunities
- •Best practice recommendations
Integration
Coordinate with other skills:
- •refactoring skill: For complexity reduction
- •documentation skill: For missing docstrings
- •security-scanning skill: For security-related quality issues