class CC::Analyzer::IssueSorter

Public Class Methods

new(issues) click to toggle source
# File lib/cc/analyzer/issue_sorter.rb, line 4
def initialize(issues)
  @issues = issues
end

Public Instance Methods

by_location() click to toggle source
# File lib/cc/analyzer/issue_sorter.rb, line 8
def by_location
  @issues.sort_by { |i| line_or_offset(i) }
end

Private Instance Methods

line_or_offset(issue) click to toggle source
# File lib/cc/analyzer/issue_sorter.rb, line 14
def line_or_offset(issue)
  location = issue["location"]

  case
  when location["lines"]
    [location["lines"]["begin"].to_i]
  when location["positions"] && location["positions"]["begin"]["line"]
    [location["positions"]["begin"]["line"].to_i, location["positions"]["begin"]["column"].to_i]
  when location["positions"] && location["positions"]["begin"]["offset"]
    [1_000_000_000] # push offsets to end of list
  else
    [0] # whole-file issues are first
  end
end