Claude Code Plugins

Community-maintained marketplace

Feedback

test-coverage-analyzer

@CrazyDubya/claude-skills
0
0

Analyzes test coverage gaps and suggests test cases for untested code paths. Use when user requests test improvements, coverage analysis, or wants to increase test coverage.

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 test-coverage-analyzer
description Analyzes test coverage gaps and suggests test cases for untested code paths. Use when user requests test improvements, coverage analysis, or wants to increase test coverage.
allowed-tools Read, Grep, Glob, Bash, Write

Test Coverage Analyzer

This skill helps identify gaps in test coverage and suggests specific test cases to improve code quality.

When to Use This Skill

  • User asks to analyze test coverage
  • User wants to improve test coverage
  • User requests suggestions for missing tests
  • Working on increasing code coverage percentage
  • User mentions "coverage gaps", "untested code", or "test suggestions"

Instructions

1. Detect Testing Framework

Identify the testing framework(s) used in the project:

JavaScript/TypeScript:

  • Jest: jest in package.json or jest.config.js
  • Mocha: mocha in package.json or .mocharc
  • Vitest: vitest in package.json or vitest.config.js
  • Jasmine: jasmine in package.json

Python:

  • pytest: pytest in requirements.txt or pytest.ini
  • unittest: Standard library, check for test files
  • coverage.py: coverage in requirements.txt

Ruby:

  • RSpec: rspec in Gemfile
  • Minitest: Standard library

Go:

  • Built-in: go test (coverage via go test -cover)

Java:

  • JUnit: Look for JUnit in pom.xml or build.gradle
  • JaCoCo: Coverage tool configuration

Use Glob and Grep to find configuration files.

2. Locate Coverage Reports

Find existing coverage reports:

Common locations:

  • coverage/ directory
  • .nyc_output/ (NYC for Node.js)
  • htmlcov/ (coverage.py for Python)
  • target/site/jacoco/ (JaCoCo for Java)
  • Coverage files: lcov.info, coverage.json, .coverage

If no coverage report exists:

  • Guide user to run coverage: npm test -- --coverage, pytest --cov, etc.
  • Wait for report generation before analyzing

3. Parse Coverage Data

Extract coverage information:

From lcov.info:

  • Lines covered vs total
  • Functions covered vs total
  • Branches covered vs total
  • Uncovered line numbers by file

From coverage.json (Jest):

  • Statement coverage percentage
  • Branch coverage percentage
  • Function coverage percentage
  • Line coverage percentage
  • Uncovered lines per file

From .coverage (Python):

  • Use coverage report or coverage json
  • Missing line ranges
  • Excluded lines

From HTML reports:

  • Read summary statistics
  • Identify files with low coverage

4. Identify Coverage Gaps

Prioritize files/functions that need testing:

High priority:

  • Business logic with 0% coverage
  • Public APIs and exported functions
  • Error handling paths (catch blocks, error callbacks)
  • Edge cases and boundary conditions
  • Critical paths (authentication, payment, data validation)

Medium priority:

  • Utility functions with partial coverage
  • Private functions called by public APIs
  • Configuration and initialization code

Lower priority:

  • Simple getters/setters
  • Type definitions
  • Auto-generated code
  • Third-party code

5. Analyze Untested Code Paths

For each file with coverage gaps:

  1. Read the source file to understand the code structure
  2. Identify untested code:
    • Uncovered lines and line ranges
    • Untested conditional branches (if/else)
    • Uncovered error handlers
    • Missing function coverage
  3. Categorize missing tests:
    • Happy path tests
    • Error/exception tests
    • Edge case tests
    • Integration tests

6. Generate Test Suggestions

For each coverage gap, suggest specific test cases:

Format:

File: src/utils/validator.js (42% coverage)

Missing Coverage:
- Lines 15-18: Email validation error path
- Lines 23-25: Empty input handling
- Lines 30-35: Edge case for special characters

Suggested Tests:
1. Test email validation with invalid format (covers lines 15-18)
2. Test validator with empty string input (covers lines 23-25)
3. Test special character handling in names (covers lines 30-35)

Test case details should include:

  • Test description
  • Input data
  • Expected output/behavior
  • Lines/branches covered

7. Create Test Stubs (Optional)

If user wants, generate test file stubs:

  • Use appropriate test framework syntax
  • Include describe/test blocks with TODO comments
  • Add example test structure
  • Reference the template in templates/test-template.js (or appropriate extension)

Example (Jest):

describe('Validator', () => {
  describe('validateEmail', () => {
    it('should reject invalid email format', () => {
      // TODO: Test email validation error path (lines 15-18)
      const result = validateEmail('invalid-email');
      expect(result.valid).toBe(false);
    });

    it('should handle empty string input', () => {
      // TODO: Test empty input handling (lines 23-25)
    });
  });
});

8. Calculate Coverage Metrics

Provide summary statistics:

  • Overall coverage percentage
  • Coverage by file/directory
  • Functions/methods without tests
  • Critical files with low coverage
  • Coverage trend (if historical data available)

9. Prioritize Recommendations

Order suggestions by:

  1. Impact: Critical business logic first
  2. Risk: High-risk areas (security, data integrity)
  3. Complexity: Complex logic needs more tests
  4. Ease: Quick wins (simple tests for high coverage gain)

10. Output Format

Present findings in a clear, actionable format:

Coverage Analysis Summary
=========================

Overall Coverage: 67%
- Statements: 65%
- Branches: 58%
- Functions: 72%
- Lines: 67%

Files Needing Attention (sorted by priority):

1. src/payment/processor.js (23% coverage) - HIGH PRIORITY
   - Missing: Error handling for payment failures
   - Missing: Retry logic tests
   - Missing: Transaction validation

2. src/auth/validator.js (45% coverage) - MEDIUM PRIORITY
   - Missing: Invalid token handling
   - Missing: Expired session tests

Suggested Test Cases:
[Detailed suggestions for each file]

Best Practices

  1. Focus on meaningful coverage: 100% coverage isn't always necessary
  2. Test behavior, not implementation: Suggest tests that verify functionality
  3. Prioritize critical paths: Authentication, payments, data validation first
  4. Consider test types: Unit, integration, and e2e where appropriate
  5. Check existing tests: Don't suggest tests that already exist
  6. Realistic test data: Use plausible inputs in examples
  7. Coverage thresholds: Suggest minimum coverage targets (e.g., 80%)

Running Coverage Reports

Provide commands based on detected framework:

Jest: npm test -- --coverage or jest --coverage Vitest: npm test -- --coverage or vitest run --coverage Mocha + NYC: nyc mocha pytest: pytest --cov=src --cov-report=html Go: go test -cover ./... or go test -coverprofile=coverage.out JUnit + JaCoCo: mvn test jacoco:report

Supporting Files

  • scripts/parse-coverage.sh: Helper script to extract coverage data
  • templates/test-template.js: Test file template for JavaScript
  • templates/test-template.py: Test file template for Python
  • templates/test-template.go: Test file template for Go