5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
# File 'lib/dart_linter/dart_analyze_parser.rb', line 5
def violations(input)
filtered_input = filter_input(input)
return [] if filtered_input.detect { |element| element.include? "No issues found!" }
level_pattern = /^(?:error|warning|info)/
issues = filtered_input.select { |line| line.match?(level_pattern) }
separator = issues.first.include?(" • ") ? " • " : " - "
first_issue_parts = issues.first.split(separator)
unless first_issue_parts.length >= 4
raise "Unknown issue format. Please check the report file.\n#{issues.first}"
end
is_dart_analyze = first_issue_parts[1].match?(/\.dart:\d+:\d+/) || false
is_flutter_analyze = first_issue_parts[2].match?(/\.dart:\d+:\d+/) || false
unless is_dart_analyze || is_flutter_analyze
raise "Unknown report format. Please check the report file.\n#{issues.first}"
end
issues.map { |line| parse_line(line, separator, is_dart_analyze) }
end
|