@@ -63,17 +72,19 @@ HTML_TEMPLATE = """
{% if velocity_analysis %}
Velocity Analysis
-
-
{{ "%.1f"|format(velocity_analysis.commits_per_day) }}
-
Commits/Day
-
-
-
{{ "%.1f"|format(velocity_analysis.commits_per_week) }}
-
Commits/Week
-
-
-
{{ velocity_analysis.velocity_trend|capitalize }}
-
Trend
+
+
+
{{ velocity_analysis.commits_per_day }}
+
Commits/Day
+
+
+
{{ velocity_analysis.commits_per_week }}
+
Commits/Week
+
+
+
{{ velocity_analysis.velocity_trend|capitalize }}
+
Trend
+
{% endif %}
@@ -81,32 +92,40 @@ HTML_TEMPLATE = """
{% if code_churn_analysis %}
Code Churn
-
-
{{ code_churn_analysis.total_lines_added }}
-
Lines Added
-
-
-
{{ code_churn_analysis.total_lines_deleted }}
-
Lines Deleted
-
-
-
{{ code_churn_analysis.net_change }}
-
Net Change
+
+
+
+{{ code_churn_analysis.total_lines_added }}
+
Lines Added
+
+
+
-{{ code_churn_analysis.total_lines_deleted }}
+
Lines Deleted
+
+
+
{{ code_churn_analysis.net_change }}
+
Net Change
+
{% endif %}
- {% if risky_commit_analysis %}
+ {% if risky_commit_analysis and risky_commit_analysis.total_risky > 0 %}
Risky Commits
-
-
{{ risky_commit_analysis.total_risky_commits }}
-
Total Risky
-
-
-
{{ "%.1f"|format(risky_commit_analysis.risk_score) }}%
-
Risk Score
-
+
{{ risky_commit_analysis.total_risky }} potentially risky commits detected
+ {% if risky_commit_analysis.large_commits %}
+
Large Commits ({{ risky_commit_analysis.large_commits|length }})
+
+ | SHA | Author | Changes |
+ {% for commit in risky_commit_analysis.large_commits[:5] %}
+
+ | {{ commit.sha }} |
+ {{ commit.author_name }} |
+ +{{ commit.additions }} / -{{ commit.deletions }} |
+
+ {% endfor %}
+
+ {% endif %}
{% endif %}
@@ -125,8 +144,8 @@ class HTMLFormatter(BaseFormatter):
return template.render(
timestamp=datetime.now().isoformat(),
- commit_analysis=data.commit_analysis if hasattr(data, "commit_analysis") else None,
- velocity_analysis=data.velocity_analysis if hasattr(data, "velocity_analysis") else None,
- code_churn_analysis=data.code_churn_analysis if hasattr(data, "code_churn_analysis") else None,
- risky_commit_analysis=data.risky_commit_analysis if hasattr(data, "risky_commit_analysis") else None,
+ commit_analysis=getattr(data, "commit_analysis", None),
+ velocity_analysis=getattr(data, "velocity_analysis", None),
+ code_churn_analysis=getattr(data, "code_churn_analysis", None),
+ risky_commit_analysis=getattr(data, "risky_commit_analysis", None),
)