lib/haml_lint/reporter/checkstyle_reporter.rb
# frozen_string_literal: false module HamlLint # Outputs report as an XML checkstyle document. class Reporter::CheckstyleReporter < Reporter def display_report(report) lints = report.lints files = lints.group_by(&:filename) xml = '<?xml version="1.0" encoding="utf-8"?>' xml << '<checkstyle version="5.7">' files.each do |filename, offenses| xml << "<file name=\"#{filename}\">" xml << render_offenses(offenses) xml << '</file>' end xml << '</checkstyle>' log.log xml end private def render_offenses(offenses) xml = '' offenses.each do |offense| xml << "<error line=\"#{offense.line}\" severity=\"#{offense.severity}\" " xml << "message=\"#{CGI.escapeHTML offense.message}\" " xml << "source=\"#{offense.linter.name}\" " if offense.linter xml << '/>' end xml end end end