{{ title }}

Generated {{ generated_at }}{% if git_sha %} · commit {{ git_sha }}{% endif %} · reqcov {{ version }}{% if project %} · {{ project }}{% endif %}
Requirements
{{ counts.total }}
Test coverage
{{ '%.1f' % test_pct }}%{% if delta %} {{ '%+.1f' % delta.pct_change }}%{% endif %}
Verified (tests passed)
{% if has_results %}{{ '%.1f' % verified_pct }}%{% else %}—{% endif %}
Uncovered
{{ counts.uncovered }}
Failing
{{ counts.failing }}
Unknown ids
{{ unknown_ids|length }}
Orphan tests
{{ orphan_tests|length }}

Coverage by level

{% for level, rows in by_level.items() %} {% endfor %}
LevelRequirementsWith testVerifiedUncoveredWith source traceWith parent
{{ level }} {{ rows|length }} {{ rows|selectattr('has_test')|list|length }} {{ rows|selectattr('verification_status','equalto','verified')|list|length }} {{ rows|selectattr('verification_status','equalto','uncovered')|list|length }} {{ rows|selectattr('has_source')|list|length }} {{ rows|map(attribute='requirement')|selectattr('parents')|list|length }}
{% if findings %}

Findings ({{ findings|length }})

{% for f in findings %}
{{ f.severity|upper }} {{ f.code }} {{ f.message }}{% if f.file %} — {{ f.file }}{% if f.line %}:{{ f.line }}{% endif %}{% endif %}
{% endfor %} {% endif %}

Traceability matrix

{% for level, rows in by_level.items() %}{% for rc in rows %}{% set r = rc.requirement %} {% endfor %}{% endfor %}
RequirementTitleTraces upVerif.TestsImplemented inStatus
{{ r.id }}
{{ r.file }}{% if r.line %}:{{ r.line }}{% endif %}
{{ r.title }}{% if r.status != 'approved' %} [{{ r.status }}]{% endif %}{% if rc.children %}
↳ {{ rc.children|join(', ') }}
{% endif %}
{% for p in r.parents %}{{ p }} {% endfor %}{% if not r.parents %}{% endif %} {{ r.verification }} {% for t in rc.tests %}
{{ t.symbol or t.marker }} {{ t.file }}:{{ t.line }}
{% endfor %}{% if not rc.tests %}{% endif %} {% for res in rc.results %}
{{ '✓' if res.status == 'passed' else ('✗' if res.status in ('failed','error') else '○') }} {{ res.full_name }}{% if res.message %} {{ res.message[:80] }}{% endif %}
{% endfor %}
{% for s in rc.sources %}
{{ s.file }}:{{ s.line }}{% if s.symbol %} {{ s.symbol }}{% endif %}
{% endfor %}{% if not rc.sources %}{% endif %}
{{ rc.verification_status }}
{% if unknown_ids %}

Unknown identifiers

{% for u in unknown_ids %}{% endfor %}
IdWhereSymbol
{{ u.req_id }}{{ u.file }}:{{ u.line }}{{ u.symbol }}
{% endif %} {% if orphan_tests %}

Tests not linked to any requirement ({{ orphan_tests|length }})

{% for t in orphan_tests %}{% endfor %}
TestResult
{{ t.full_name }}{{ t.status }}
{% endif %}