class AdLint::Postfilter::MessageSuppressionList

Public Class Methods

new(initial_header_suppression, platform_header_suppression, project_wide_suppressions, tunit_wide_suppressions, line_wise_suppressions) click to toggle source
# File lib/adlint/postfilter/suppress.rb, line 128
def initialize(initial_header_suppression, platform_header_suppression,
               project_wide_suppressions,
               tunit_wide_suppressions, line_wise_suppressions)
  @initial_header_suppression = initial_header_suppression
  @platform_header_suppression = platform_header_suppression
  @p_index = create_p_index(project_wide_suppressions)
  @t_index = create_t_index(tunit_wide_suppressions)
  @l_index = create_l_index(line_wise_suppressions)
end

Public Instance Methods

apply_to(content) click to toggle source
# File lib/adlint/postfilter/suppress.rb, line 138
def apply_to(content)
  content.each_with_index do |line, index|
    if line.filterable?
      supps = suppressions_for(line.message_id, line.fpath, line.line_no)
      if supps.any? { |supp| line.match_with?(supp) }
        content[index] = nil
      end
    end
  end
end

Private Instance Methods

create_l_index(suppressions) click to toggle source
# File lib/adlint/postfilter/suppress.rb, line 188
def create_l_index(suppressions)
  index = Hash.new { |mesg_id_hash, mesg_id|
    mesg_id_hash[mesg_id] = Hash.new { |fpath_hash, fpath|
      fpath_hash[fpath] = []
    }
  }
  suppressions.each do |supp|
    index[supp.message_id][supp.fpath].push(supp)
  end
  index
end
create_p_index(suppressions) click to toggle source
# File lib/adlint/postfilter/suppress.rb, line 174
def create_p_index(suppressions)
  suppressions.each_with_object({}) do |supp, index|
    index[supp.message_id] = supp
  end
end
create_t_index(suppressions) click to toggle source
# File lib/adlint/postfilter/suppress.rb, line 180
def create_t_index(suppressions)
  index = Hash.new { |mesg_id_hash, mesg_id| mesg_id_hash[mesg_id] = {} }
  suppressions.each do |supp|
    index[supp.message_id][supp.fpath] = supp
  end
  index
end
select_line_wise_suppressions(message_id, fpath, line_no) click to toggle source
# File lib/adlint/postfilter/suppress.rb, line 166
def select_line_wise_suppressions(message_id, fpath, line_no)
  @l_index[message_id][fpath].each_with_object({}) do |supp, result|
    if supp.line_no == line_no
      result[supp.message_id] = supp
    end
  end
end
select_project_wide_suppressions(message_id) click to toggle source
# File lib/adlint/postfilter/suppress.rb, line 158
def select_project_wide_suppressions(message_id)
  (supp = @p_index[message_id]) ? {message_id => supp} : {}
end
select_tunit_wide_suppressions(message_id, fpath) click to toggle source
# File lib/adlint/postfilter/suppress.rb, line 162
def select_tunit_wide_suppressions(message_id, fpath)
  (supp = @t_index[message_id][fpath]) ? {message_id => supp} : {}
end
suppressions_for(message_id, fpath, line_no) click to toggle source
# File lib/adlint/postfilter/suppress.rb, line 150
def suppressions_for(message_id, fpath, line_no)
  p_hash = select_project_wide_suppressions(message_id)
  t_hash = select_tunit_wide_suppressions(message_id, fpath)
  l_hash = select_line_wise_suppressions(message_id, fpath, line_no)
  [@initial_header_suppression, @platform_header_suppression] +
    p_hash.merge(t_hash).merge(l_hash).values
end