Class: Kolekti::Radon::Collector

Inherits:
Collector
  • Object
show all
Defined in:
lib/kolekti/radon/collector.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeCollector

Returns a new instance of Collector.



21
22
23
24
25
26
# File 'lib/kolekti/radon/collector.rb', line 21

def initialize
  supported_metrics = parse_supported_metrics(
    File.expand_path('../metrics.yml', __FILE__), 'Radon', [:PYTHON])

  super('Radon', 'Set of Python metric tools', supported_metrics)
end

Class Method Details

.available?Boolean

Returns:

  • (Boolean)


6
7
8
9
10
# File 'lib/kolekti/radon/collector.rb', line 6

def self.available?
  # FIXME: below is the better form of writing this, but it does not look compatible with ruby 2.1.5 and 2.0.0
  # system('radon', '--version', [:out, :err] => '/dev/null') ? true : false
  system('radon', '--version', out: '/dev/null', err: '/dev/null') ? true : false
end

.loggerObject



12
13
14
15
16
17
18
19
# File 'lib/kolekti/radon/collector.rb', line 12

def self.logger
  if @logger.nil?
    @logger = Logger.new(STDERR)
    @logger.progname = 'kolekti/radon'
  end

  @logger
end

Instance Method Details

#clean(code_directory, wanted_metric_configurations) ⇒ Object



42
43
44
# File 'lib/kolekti/radon/collector.rb', line 42

def clean(code_directory, wanted_metric_configurations)
  # no need to do anything, we only use pipes during collection
end

#collect_metrics(code_directory, wanted_metric_configurations, persistence_strategy) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/kolekti/radon/collector.rb', line 28

def collect_metrics(code_directory, wanted_metric_configurations, persistence_strategy)
  parsers_metric_configurations = Hash.new { |hash, key| hash[key] = [] }

  wanted_metric_configurations.each_value do |metric_configuration|
    parser = metric_configuration_parser(metric_configuration)
    parsers_metric_configurations[parser] << metric_configuration
  end

  parsers_metric_configurations.each do |parser_class, metric_configurations|
    parser = parser_class.new(metric_configurations, persistence_strategy, self.class.logger)
    run_radon(code_directory, parser)
  end
end

#default_value_from(metric_configuration) ⇒ Object



47
48
49
# File 'lib/kolekti/radon/collector.rb', line 47

def default_value_from(metric_configuration)
  metric_configuration_parser(metric_configuration).default_value
end