File size: 1,874 Bytes
a3ecd30
 
 
 
 
 
 
 
 
 
1c77a4c
a3ecd30
 
 
 
 
 
 
 
1c77a4c
 
 
 
 
a3ecd30
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
from app.schemas import AuditReport, Severity


def format_report_markdown(report: AuditReport) -> str:
    lines = [
        "# SwarmAudit Report",
        "",
        f"Repository: `{report.repo_url}`",
        f"Files scanned: `{report.scanned_file_count}`",
        f"Files skipped: `{report.skipped_file_count}`",
        f"Findings shown: `{report.displayed_findings_count}` of `{report.total_findings_count}`",
        "",
        "## Severity Summary",
        "",
    ]

    for severity in [Severity.critical, Severity.high, Severity.medium, Severity.low]:
        lines.append(f"- **{severity.value}**: {report.severity_summary.get(severity, 0)}")

    if report.agent_finding_counts:
        lines.extend(["", "## Agent Summary", ""])
        for agent_name, count in report.agent_finding_counts.items():
            lines.append(f"- **{agent_name}**: {count}")

    if report.warnings:
        lines.extend(["", "## Warnings", ""])
        lines.extend(f"- {warning}" for warning in report.warnings)

    lines.extend(["", "## Findings", ""])
    if not report.findings:
        lines.append("No findings detected by the current MVP agents.")
        return "\n".join(lines)

    for finding in report.findings:
        lines.extend(
            [
                f"### [{finding.severity.value}] {finding.title}",
                "",
                f"- File: `{finding.file_path}:{finding.line_start}-{finding.line_end}`",
                f"- Agent: `{finding.agent_source}`",
                "",
                finding.description,
                "",
                f"**Why it matters:** {finding.why_it_matters}",
                "",
                "**Suggested fix:**",
                "",
                "```text",
                finding.suggested_fix,
                "```",
                "",
            ]
        )

    return "\n".join(lines)