class RuboCop::Formatter::GitHubActionsFormatter
in GitHub check annotations when run within GitHub Actions.
This formatter formats report data as GitHub Workflow commands resulting
def file_finished(file, offenses)
def file_finished(file, offenses) @offenses_for_files[file] = offenses unless offenses.empty? end
def finished(_inspected_files)
def finished(_inspected_files) @offenses_for_files.each do |file, offenses| offenses.each do |offense| report_offense(file, offense) end end output.puts end
def github_escape(string)
def github_escape(string) string.gsub(Regexp.union(ESCAPE_MAP.keys), ESCAPE_MAP) end
def github_severity(offense)
def github_severity(offense) offense.severity < minimum_severity_to_fail ? 'warning' : 'error' end
def minimum_severity_to_fail
def minimum_severity_to_fail @minimum_severity_to_fail ||= begin # Unless given explicitly as `fail_level`, `:info` severity offenses do not fail name = options.fetch(:fail_level, :refactor) RuboCop::Cop::Severity.new(name) end end
def report_offense(file, offense)
def report_offense(file, offense) output.printf( "\n::%<severity>s file=%<file>s,line=%<line>d,col=%<column>d::%<message>s", severity: github_severity(offense), file: PathUtil.smart_path(file), line: offense.line, column: offense.real_column, message: github_escape(offense.message) ) end
def started(_target_files)
def started(_target_files) @offenses_for_files = {} end