class Swagcov::Coverage

def report

def report
  Rails.application.routes.routes.each do |route|
    path = route.path.spec.to_s.sub(/\(\.:format\)$/, "")
    if ignore_path?(path)
      @ignored += 1
      @routes_ignored << { verb: route.verb, path: path, status: "ignored" }
      next
    end
    next if only_path_mismatch?(path)
    @total += 1
    regex = Regexp.new("#{path.gsub(%r{:[^/]+}, '\\{[^/]+\\}')}(\\.[^/]+)?$")
    matching_keys = docs_paths.keys.select { |k| regex.match?(k) }
    if (doc = docs_paths.dig(matching_keys.first, route.verb.downcase))
      @covered += 1
      @routes_covered << { verb: route.verb, path: path, status: doc["responses"].keys.map(&:to_s).sort.join("  ") }
    else
      @routes_not_covered << { verb: route.verb, path: path, status: "none" }
    end
  end
  routes_output(@routes_covered, "green")
  routes_output(@routes_ignored, "yellow")
  routes_output(@routes_not_covered, "red")
  final_output
  exit @total - @covered
end