class Warnings::RubocopParser
Parser
class for rubocop reports.
Constants
- FILE_PATTERN
- ISSUE_PATTERN
- NAME
Public Instance Methods
name()
click to toggle source
# File lib/warnings/parser/rubocop_parser.rb, line 20 def name NAME end
parse(file)
click to toggle source
# File lib/warnings/parser/rubocop_parser.rb, line 12 def parse(file) if json?(file) extract_json_issues(file) else extract_pattern_issues(file) end end
Private Instance Methods
extract_json_issues(file)
click to toggle source
# File lib/warnings/parser/rubocop_parser.rb, line 26 def extract_json_issues(file) json_hash = json(file) files = json_hash['files'] files.each(&method(:store_json_issue)) end
extract_pattern_issues(file)
click to toggle source
# File lib/warnings/parser/rubocop_parser.rb, line 32 def extract_pattern_issues(file) last_file = nil read_lines(file).each do |line| file_match = line.scan(FILE_PATTERN) unless file_match.empty? last_file = file_match[0][0] next end issue_match = line.scan(ISSUE_PATTERN) next if issue_match.empty? issue_content = issue_match[0] issue = { severity: issue_content[0], line: issue_content[1], message: issue_content[2] } store_simple_issue(last_file, issue) end end
store_json_issue(file_hash)
click to toggle source
# File lib/warnings/parser/rubocop_parser.rb, line 53 def store_json_issue(file_hash) offenses = file_hash['offenses'] return if offenses.empty? offenses.each do |offense| issue = Issue.new issue.file_name = file_hash['path'] issue.line = offense['location']['line'] issue.category = offense['cop_name'] issue.severity = SeverityUtil.rcwef_full(offense['severity']) issue.message = offense['message'] @issues << issue end end
store_simple_issue(file, issue_hash)
click to toggle source
# File lib/warnings/parser/rubocop_parser.rb, line 68 def store_simple_issue(file, issue_hash) issue = Issue.new issue.file_name = file issue.line = issue_hash[:line].to_i issue.severity = SeverityUtil.rcwef_full(issue_hash[:severity]) issue.message = issue_hash[:message] @issues << issue end