Class: Labkit::Logging::FieldValidator::Registry
- Inherits:
-
Object
- Object
- Labkit::Logging::FieldValidator::Registry
- Includes:
- Singleton
- Defined in:
- lib/labkit/logging/field_validator/registry.rb
Instance Attribute Summary collapse
-
#offenses ⇒ Object
readonly
Returns the value of attribute offenses.
Instance Method Summary collapse
- #check_for_removed_offenses(callsite, fields, logger_class) ⇒ Object
- #clear! ⇒ Object
-
#finalize ⇒ Object
Returns [detected_offenses, new_offenses, removed_offenses].
-
#initialize ⇒ Registry
constructor
A new instance of Registry.
- #record_offense(callsite, lineno, deprecated_field, standard_field, logger_class) ⇒ Object
Constructor Details
#initialize ⇒ Registry
Returns a new instance of Registry.
14 15 16 17 18 19 20 21 |
# File 'lib/labkit/logging/field_validator/registry.rb', line 14 def initialize @mutex = Mutex.new @offenses = Set.new @offense_keys = Set.new # For O(1) lookup @removed_offenses = Set.new @baseline_by_callsite = nil @resolved_fields = {} # Cache for resolved standard fields end |
Instance Attribute Details
#offenses ⇒ Object (readonly)
Returns the value of attribute offenses.
12 13 14 |
# File 'lib/labkit/logging/field_validator/registry.rb', line 12 def offenses @offenses end |
Instance Method Details
#check_for_removed_offenses(callsite, fields, logger_class) ⇒ Object
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/labkit/logging/field_validator/registry.rb', line 44 def check_for_removed_offenses(callsite, fields, logger_class) baseline = baseline_by_callsite[[callsite, logger_class]] return unless baseline @mutex.synchronize do baseline.each do |offense| key = offense_key(offense) next if @offense_keys.include?(key) deprecated = offense['deprecated_field'] standard = resolve_standard_field(offense['standard_field']) next unless fields.include?(standard) && fields.exclude?(deprecated) @removed_offenses << offense end end end |
#clear! ⇒ Object
74 75 76 77 78 79 80 81 82 |
# File 'lib/labkit/logging/field_validator/registry.rb', line 74 def clear! @mutex.synchronize do @offenses.clear @offense_keys.clear @removed_offenses.clear @baseline_by_callsite = nil @resolved_fields.clear end end |
#finalize ⇒ Object
Returns [detected_offenses, new_offenses, removed_offenses]
64 65 66 67 68 69 70 71 72 |
# File 'lib/labkit/logging/field_validator/registry.rb', line 64 def finalize @mutex.synchronize do baseline_keys = load_baseline.to_set { |b| offense_key(b) } new_offenses = @offenses.reject { |o| baseline_keys.include?(offense_key(o)) } [@offenses.to_a, new_offenses, @removed_offenses.to_a] end end |
#record_offense(callsite, lineno, deprecated_field, standard_field, logger_class) ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/labkit/logging/field_validator/registry.rb', line 23 def record_offense(callsite, lineno, deprecated_field, standard_field, logger_class) key = [callsite, deprecated_field, logger_class].freeze return if @offense_keys.include?(key) @mutex.synchronize do next if @offense_keys.include?(key) @offense_keys << key @offenses << { 'callsite' => callsite, 'lineno' => lineno, 'deprecated_field' => deprecated_field, 'standard_field' => standard_field, 'logger_class' => logger_class }.freeze @removed_offenses.reject! { |r| offense_key(r) == key } end end |