Module: ChurnVsComplexity::Hotspots::Serializer::Markdown

Defined in:
lib/churn_vs_complexity/hotspots/serializer.rb

Constant Summary collapse

RISK_HEADINGS =
{
  'high' => 'High Risk -- require tests and careful review',
  'medium' => 'Medium Risk -- exercise judgement',
  'low' => 'Low Risk -- safe for quick changes',
}.freeze

Class Method Summary collapse

Class Method Details

.serialize(result) ⇒ Object



25
26
27
28
29
30
31
32
33
# File 'lib/churn_vs_complexity/hotspots/serializer.rb', line 25

def self.serialize(result)
  entries = RiskAnnotator.annotate(result[:values_by_file], language: result[:language])
  entries.sort_by! { |e| -e[:gamma_score] }
  grouped = entries.group_by { |e| e[:risk] }

  lines = ["## Hotspots (generated #{Date.today})", '']
  RISK_HEADINGS.each { |level, heading| append_section(lines, grouped[level], heading) }
  lines.join("\n")
end