Code Quality
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