Scan Analysis
Operational Insights and Performance Metrics
{{ fs.panel_head("Scan throughput over time", meta="started vs completed per day") }}
{% if render_mode == 'fragment' and not fragment_scripts_enabled %}
{% else %}
{% endif %}
{# Charts row 2: duration + success rate side-by-side. #}
Chart unavailable in fragment view
{{ fs.panel_head("Average scan duration", meta="minutes per day") }}
{% if render_mode == 'fragment' and not fragment_scripts_enabled %}
{% else %}
{% endif %}
Chart unavailable in fragment view
{{ fs.panel_head("Daily success rate", meta="percent succeeded") }}
{% if render_mode == 'fragment' and not fragment_scripts_enabled %}
{% else %}
{% endif %}
Chart unavailable in fragment view
{{ fs.panel_head("Scan type distribution", meta="counts across all days") }}
{% if render_mode == 'fragment' and not fragment_scripts_enabled %}
{% else %}
{% endif %}
Chart unavailable in fragment view
{{ fs.panel_head("Scan failures over time", meta="stacked failures + overall rate") }}
{% if render_mode == 'fragment' and not fragment_scripts_enabled %}
{% else %}
{% endif %}
Chart unavailable in fragment view
{{ fs.panel_head("Daily scan metrics", meta="per-day operational counts") }}
{% if raw_data and (raw_data | length) > 0 %}
| Date | Started | Projects | New | Existing | Versions | Completed | Failed | In Progress | Success Rate | Avg Duration (min) | Scan Counts by Type | |||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| SCA | SAST | CONFIG | SOURCE SCA | REACHABILITY | IMPORT | |||||||||||
| {{ row.get('date', '') }} | {{ row.get('total_scans_started', 0) }} | {{ row.get('unique_projects', 0) }} | {{ row.get('new_projects', 0) }} | {{ row.get('existing_projects', 0) }} | {{ row.get('unique_versions', 0) }} | {{ row.get('total_completed_scans', 0) }} | {{ row.get('failed_scans', 0) }} | {{ row.get('still_active_scans', 0) }} | {{ "%.1f"|format(sr) }}% | {% set ad = row.get('avg_duration_minutes', 0) | float %} {% if ad > 0 %}{{ "%.0f"|format(ad) }}{% else %}-{% endif %} | {{ row.get('sca_scans', 0) }} | {{ row.get('sast_scans', 0) }} | {{ row.get('config_scans', 0) }} | {{ row.get('source_sca_scans', 0) }} | {{ row.get('vulnerability_analysis_scans', 0) }} | {{ row.get('sbom_import_scans', 0) }} |
{{ fs.panel_head("Individual scan details", meta=(raw_data | length | string) ~ " scan" ~ ("s" if (raw_data | length) != 1 else "")) }}
{% endif %}
{% else %}
Complete list of all scans for detailed analysis and custom reporting. This data is also available in the CSV and XLSX downloads.
| Scan ID | Date Started | Date Completed | Status | Type | {% if folder_path %}Folder | {% endif %}Project | Version | Duration (min) | Error Message |
|---|---|---|---|---|---|---|---|---|---|
| {{ row.get('id', 'N/A') }} | {{ row.get('scan_date', 'N/A') }} | {% set cd = row.get('completion_date', 'N/A') %} {% if cd in ('NaT', '-', None, '') %}-{% else %}{{ cd }}{% endif %} | {{ row.get('status', 'N/A') }} | {{ row.get('type', 'N/A') }} | {% if folder_path %}{{ row.get('folder_name', '') }} | {% endif %}{{ row.get('project_name', 'N/A') }} | {% set vn = row.get('version_name', '') %} {% if vn %}{{ vn }}{% else %}-{% endif %} | {% set dm = row.get('duration_minutes', 0) | float %} {% if dm > 0 %}{{ "%.1f"|format(dm) }}{% else %}-{% endif %} | {% set em = row.get('errorMessage', '') %} {% if em and em != '-' %}{{ em }}{% else %}-{% endif %} |
No scan data available for the selected time period.