Class: Brakeman::IgnoreConfig
- Defined in:
- lib/brakeman/report/ignore/config.rb
Instance Attribute Summary collapse
-
#file ⇒ Object
Returns the value of attribute file.
-
#ignored_warnings ⇒ Object
readonly
Returns the value of attribute ignored_warnings.
-
#shown_warnings ⇒ Object
readonly
Returns the value of attribute shown_warnings.
Instance Method Summary collapse
-
#add_note(warning, note) ⇒ Object
Add note for warning.
-
#filter_ignored ⇒ Object
Populate ignored_warnings and shown_warnings based on ignore configuration.
- #ignore(warning) ⇒ Object
-
#ignored?(warning) ⇒ Boolean
Determine if warning should be ignored.
-
#initialize(file, new_warnings) ⇒ IgnoreConfig
constructor
A new instance of IgnoreConfig.
-
#note_for(warning) ⇒ Object
Retrieve note for warning if it exists.
-
#read_from_file(file = @file) ⇒ Object
Read configuration to file.
-
#save_to_file(warnings, file = @file) ⇒ Object
Save configuration to file.
-
#save_with_old ⇒ Object
Save old ignored warnings and newly ignored ones.
-
#unignore(warning) ⇒ Object
Remove warning from ignored list.
Constructor Details
#initialize(file, new_warnings) ⇒ IgnoreConfig
Returns a new instance of IgnoreConfig.
9 10 11 12 13 14 15 16 |
# File 'lib/brakeman/report/ignore/config.rb', line 9 def initialize file, new_warnings @file = file @new_warnings = new_warnings @already_ignored = [] @ignored_fingerprints = Set.new @notes = {} @shown_warnings = @ignored_warnings = nil end |
Instance Attribute Details
#file ⇒ Object
Returns the value of attribute file.
7 8 9 |
# File 'lib/brakeman/report/ignore/config.rb', line 7 def file @file end |
#ignored_warnings ⇒ Object (readonly)
Returns the value of attribute ignored_warnings.
6 7 8 |
# File 'lib/brakeman/report/ignore/config.rb', line 6 def ignored_warnings @ignored_warnings end |
#shown_warnings ⇒ Object (readonly)
Returns the value of attribute shown_warnings.
6 7 8 |
# File 'lib/brakeman/report/ignore/config.rb', line 6 def shown_warnings @shown_warnings end |
Instance Method Details
#add_note(warning, note) ⇒ Object
Add note for warning
53 54 55 |
# File 'lib/brakeman/report/ignore/config.rb', line 53 def add_note warning, note @notes[warning.fingerprint] = note end |
#filter_ignored ⇒ Object
Populate ignored_warnings and shown_warnings based on ignore configuration
20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/brakeman/report/ignore/config.rb', line 20 def filter_ignored @shown_warnings = [] @ignored_warnings = [] @new_warnings.each do |w| if ignored? w @ignored_warnings << w else @shown_warnings << w end end @shown_warnings end |
#ignore(warning) ⇒ Object
48 49 50 |
# File 'lib/brakeman/report/ignore/config.rb', line 48 def ignore warning @ignored_fingerprints << warning.fingerprint end |
#ignored?(warning) ⇒ Boolean
Determine if warning should be ignored
44 45 46 |
# File 'lib/brakeman/report/ignore/config.rb', line 44 def ignored? warning @ignored_fingerprints.include? warning.fingerprint end |
#note_for(warning) ⇒ Object
Retrieve note for warning if it exists. Returns nil if no note is found
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/brakeman/report/ignore/config.rb', line 59 def note_for warning if warning.is_a? Warning fingerprint = warning.fingerprint else fingerprint = warning[:fingerprint] end @already_ignored.each do |w| if fingerprint == w[:fingerprint] return w[:note] end end nil end |
#read_from_file(file = @file) ⇒ Object
Read configuration to file
76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/brakeman/report/ignore/config.rb', line 76 def read_from_file file = @file if File.exist? file @already_ignored = MultiJson.load(File.read(file), :symbolize_keys => true)[:ignored_warnings] else Brakeman.notify "[Notice] Could not find ignore configuration in #{file}" @already_ignored = [] end @already_ignored.each do |w| @ignored_fingerprints << w[:fingerprint] @notes[w[:fingerprint]] = w[:note] end end |
#save_to_file(warnings, file = @file) ⇒ Object
Save configuration to file
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 |
# File 'lib/brakeman/report/ignore/config.rb', line 91 def save_to_file warnings, file = @file warnings = warnings.map do |w| if w.is_a? Warning w_hash = w.to_hash w_hash[:file] = w.relative_path w = w_hash end w[:note] = @notes[w[:fingerprint]] || "" w end output = { :ignored_warnings => warnings, :updated => Time.now.to_s, :brakeman_version => Brakeman::Version } File.open file, "w" do |f| f.puts MultiJson.dump(output, :pretty => true) end end |
#save_with_old ⇒ Object
Save old ignored warnings and newly ignored ones
115 116 117 118 119 120 121 122 123 124 125 126 127 128 |
# File 'lib/brakeman/report/ignore/config.rb', line 115 def save_with_old warnings = @ignored_warnings.dup # Only add ignored warnings not already ignored @already_ignored.each do |w| fingerprint = w[:fingerprint] unless @ignored_warnings.find { |w| w.fingerprint == fingerprint } warnings << w end end save_to_file warnings end |
#unignore(warning) ⇒ Object
Remove warning from ignored list
36 37 38 39 40 41 |
# File 'lib/brakeman/report/ignore/config.rb', line 36 def unignore warning @ignored_fingerprints.delete warning.fingerprint @already_ignored.reject! do |w| w[:fingerprint] == warning.fingerprint end end |