class DeadCodeDetector::Initializer
Attributes
fully_enabled[RW]
last_enabled_class[RW]
Public Class Methods
allowed?()
click to toggle source
# File lib/dead_code_detector/initializer.rb, line 54 def allowed? if DeadCodeDetector.config.allowed.respond_to?(:call) DeadCodeDetector.config.allowed.call else DeadCodeDetector.config.allowed end end
cached_classes()
click to toggle source
# File lib/dead_code_detector/initializer.rb, line 62 def cached_classes DeadCodeDetector.config.storage.get(tracked_classes_key) end
clear_cache()
click to toggle source
# File lib/dead_code_detector/initializer.rb, line 23 def clear_cache cached_classes.each do |class_name| klass = Object.const_get(class_name) rescue nil if klass DeadCodeDetector::ClassMethodWrapper.new(klass).clear_cache DeadCodeDetector::InstanceMethodWrapper.new(klass).clear_cache end end DeadCodeDetector.config.storage.clear(tracked_classes_key) end
enable(klass)
click to toggle source
# File lib/dead_code_detector/initializer.rb, line 34 def enable(klass) DeadCodeDetector::ClassMethodWrapper.new(klass).wrap_methods! DeadCodeDetector::InstanceMethodWrapper.new(klass).wrap_methods! end
enable_for_cached_classes!()
click to toggle source
# File lib/dead_code_detector/initializer.rb, line 39 def enable_for_cached_classes! return if fully_enabled return unless allowed? classes = cached_classes.sort.to_a starting_index = (classes.index(last_enabled_class) || -1) + 1 start_time = Process.clock_gettime(Process::CLOCK_MONOTONIC) classes[starting_index..-1].each do |class_name| klass = Object.const_get(class_name) rescue nil enable(klass) if klass self.last_enabled_class = class_name return if Process.clock_gettime(Process::CLOCK_MONOTONIC) - start_time > DeadCodeDetector.config.max_seconds_to_enable end self.fully_enabled = true end
refresh_cache_for(klass)
click to toggle source
# File lib/dead_code_detector/initializer.rb, line 14 def refresh_cache_for(klass) self.fully_enabled = false self.last_enabled_class = nil classes = [klass, *descendants_of(klass)] classes.each do |class_to_enable| cache_methods_for(class_to_enable) end end
refresh_caches()
click to toggle source
# File lib/dead_code_detector/initializer.rb, line 8 def refresh_caches DeadCodeDetector.config.classes_to_monitor.each do |klass| refresh_cache_for(klass) end end
Private Class Methods
cache_methods_for(klass)
click to toggle source
# File lib/dead_code_detector/initializer.rb, line 73 def cache_methods_for(klass) class_wrapper = DeadCodeDetector::ClassMethodWrapper.new(klass).tap(&:refresh_cache) instance_wrapper = DeadCodeDetector::InstanceMethodWrapper.new(klass).tap(&:refresh_cache) if class_wrapper.number_of_tracked_methods + instance_wrapper.number_of_tracked_methods > 0 DeadCodeDetector.config.storage.add(tracked_classes_key, klass.name) end end
descendants_of(parent_class)
click to toggle source
# File lib/dead_code_detector/initializer.rb, line 67 def descendants_of(parent_class) ObjectSpace.each_object(parent_class.singleton_class).select do |klass| klass < parent_class && !klass.name.nil? end end
tracked_classes_key()
click to toggle source
# File lib/dead_code_detector/initializer.rb, line 81 def tracked_classes_key "dead_code_detector/method_wrapper/tracked_classes" end