Sha256: 53930d23e5c4049aa39ae86e75515078e6c1fc28d0549bd9be6f8faf2171107e

Contents?: true

Size: 1002 Bytes

Versions: 2

Compression:

Stored size: 1002 Bytes

Contents

require 'zombie_scout/ruby_project'
require 'zombie_scout/method_finder'
require 'zombie_scout/method_call_finder'

module ZombieScout
  class Mission
    def initialize(globs)
      puts "Scouting out #{Dir.pwd}!"
      @ruby_project = RubyProject.new(*globs)
    end

    def scout
      zombies.each do |zombie|
        puts [zombie.location, zombie.name] * "\t"
      end

      puts "Scouted #{methods.size} methods in #{sources.size} files. Found #{zombies.size} potential zombies."
    end

    private

    def zombies
      @zombies ||= methods.select { |method|
        might_be_dead?(method)
      }
    end

    def methods
      @methods ||= sources.map { |ruby_source|
        MethodFinder.new(ruby_source).find_methods
      }.flatten
    end

    def sources
      @sources ||= @ruby_project.ruby_sources
    end

    def might_be_dead?(method)
      @method_call_counter ||= MethodCallFinder.new(@ruby_project)
      @method_call_counter.count_calls(method.name) < 2
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
zombie_scout-0.0.2 lib/zombie_scout/mission.rb
zombie_scout-0.0.1 lib/zombie_scout/mission.rb