Coverage API Reference

Logic for calculating the requirement coverage matrix.

CoverageReport dataclass

The final calculated matrix report for the entire run.

Source code in reqtrace/analysis/coverage.py
@dataclass
class CoverageReport:
    """The final calculated matrix report for the entire run."""

    total_requirements: int
    implemented_requirements: int
    partial_requirements: int
    missing_requirements: int
    coverage_details: Dict[str, RequirementCoverage] = field(default_factory=dict)
    unmatched_traces: List[TraceMatch] = field(default_factory=list)
    source_stats: Optional[SourceStats] = None

RequirementCoverage dataclass

Holds calculated implementation details for a single requirement.

Source code in reqtrace/analysis/coverage.py
@dataclass
class RequirementCoverage:
    """Holds calculated implementation details for a single requirement."""

    req_id: str
    is_implemented: bool
    total_percentage: int
    matches: List[TraceMatch] = field(default_factory=list)

calculate_coverage(index, traces, file_lines=None)

Takes a RequirementIndex and found TraceMatches to calculate the implementation matrix.

Source code in reqtrace/analysis/coverage.py
def calculate_coverage(
    index: RequirementIndex, traces: List[TraceMatch], file_lines: Optional[Dict[str, Tuple[int, bool]]] = None
) -> CoverageReport:
    """Takes a RequirementIndex and found TraceMatches to calculate the implementation matrix."""
    details, unmatched = _apply_direct_traces(index, traces)
    _calculate_rollups(index, details)
    report = _build_report(index, details, unmatched)

    if file_lines is not None:
        report.source_stats = _calculate_source_stats(traces, file_lines)

    return report