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