metric_fu 4.11.3 → 4.11.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (188) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/.rubocop.yml +15 -0
  5. data/.rubocop_todo.yml +69 -0
  6. data/.travis.yml +0 -1
  7. data/CONTRIBUTORS +1 -1
  8. data/Gemfile +23 -20
  9. data/Guardfile +9 -9
  10. data/HISTORY.md +10 -1
  11. data/checksum/metric_fu-4.11.3.gem.sha512 +1 -0
  12. data/config/rubocop.yml +269 -0
  13. data/gem_tasks/rubocop.rake +10 -0
  14. data/lib/metric_fu.rb +11 -9
  15. data/lib/metric_fu/calculate.rb +0 -1
  16. data/lib/metric_fu/cli/client.rb +6 -6
  17. data/lib/metric_fu/cli/helper.rb +22 -13
  18. data/lib/metric_fu/cli/parser.rb +14 -18
  19. data/lib/metric_fu/configuration.rb +7 -11
  20. data/lib/metric_fu/constantize.rb +4 -4
  21. data/lib/metric_fu/data_structures/line_numbers.rb +10 -11
  22. data/lib/metric_fu/data_structures/location.rb +12 -14
  23. data/lib/metric_fu/data_structures/sexp_node.rb +31 -13
  24. data/lib/metric_fu/environment.rb +29 -31
  25. data/lib/metric_fu/formatter.rb +4 -6
  26. data/lib/metric_fu/formatter/html.rb +13 -13
  27. data/lib/metric_fu/formatter/syntax.rb +5 -7
  28. data/lib/metric_fu/formatter/yaml.rb +1 -1
  29. data/lib/metric_fu/gem_run.rb +13 -15
  30. data/lib/metric_fu/gem_version.rb +9 -11
  31. data/lib/metric_fu/generator.rb +5 -8
  32. data/lib/metric_fu/io.rb +13 -15
  33. data/lib/metric_fu/loader.rb +17 -18
  34. data/lib/metric_fu/logger.rb +15 -18
  35. data/lib/metric_fu/logging/mf_debugger.rb +4 -4
  36. data/lib/metric_fu/metric.rb +11 -12
  37. data/lib/metric_fu/metrics/cane/generator.rb +10 -9
  38. data/lib/metric_fu/metrics/cane/grapher.rb +5 -7
  39. data/lib/metric_fu/metrics/cane/metric.rb +6 -8
  40. data/lib/metric_fu/metrics/cane/report.html.erb +3 -3
  41. data/lib/metric_fu/metrics/cane/violations.rb +6 -6
  42. data/lib/metric_fu/metrics/churn/generator.rb +2 -6
  43. data/lib/metric_fu/metrics/churn/hotspot.rb +1 -3
  44. data/lib/metric_fu/metrics/churn/metric.rb +5 -7
  45. data/lib/metric_fu/metrics/flay/generator.rb +7 -11
  46. data/lib/metric_fu/metrics/flay/grapher.rb +5 -6
  47. data/lib/metric_fu/metrics/flay/hotspot.rb +5 -7
  48. data/lib/metric_fu/metrics/flay/metric.rb +5 -7
  49. data/lib/metric_fu/metrics/flog/generator.rb +22 -23
  50. data/lib/metric_fu/metrics/flog/grapher.rb +11 -11
  51. data/lib/metric_fu/metrics/flog/hotspot.rb +3 -5
  52. data/lib/metric_fu/metrics/flog/metric.rb +3 -5
  53. data/lib/metric_fu/metrics/hotspots/analysis/analyzed_problems.rb +0 -1
  54. data/lib/metric_fu/metrics/hotspots/analysis/analyzer_tables.rb +19 -18
  55. data/lib/metric_fu/metrics/hotspots/analysis/grouping.rb +0 -2
  56. data/lib/metric_fu/metrics/hotspots/analysis/groupings.rb +1 -3
  57. data/lib/metric_fu/metrics/hotspots/analysis/problems.rb +4 -6
  58. data/lib/metric_fu/metrics/hotspots/analysis/ranked_problem_location.rb +14 -9
  59. data/lib/metric_fu/metrics/hotspots/analysis/ranking.rb +4 -5
  60. data/lib/metric_fu/metrics/hotspots/analysis/rankings.rb +1 -3
  61. data/lib/metric_fu/metrics/hotspots/analysis/record.rb +3 -5
  62. data/lib/metric_fu/metrics/hotspots/analysis/scoring_strategies.rb +0 -2
  63. data/lib/metric_fu/metrics/hotspots/analysis/table.rb +3 -4
  64. data/lib/metric_fu/metrics/hotspots/generator.rb +3 -6
  65. data/lib/metric_fu/metrics/hotspots/hotspot.rb +13 -13
  66. data/lib/metric_fu/metrics/hotspots/hotspot_analyzer.rb +5 -8
  67. data/lib/metric_fu/metrics/hotspots/metric.rb +1 -3
  68. data/lib/metric_fu/metrics/hotspots/report.html.erb +1 -1
  69. data/lib/metric_fu/metrics/rails_best_practices/generator.rb +10 -12
  70. data/lib/metric_fu/metrics/rails_best_practices/grapher.rb +5 -6
  71. data/lib/metric_fu/metrics/rails_best_practices/metric.rb +1 -3
  72. data/lib/metric_fu/metrics/rcov/external_client.rb +1 -3
  73. data/lib/metric_fu/metrics/rcov/generator.rb +13 -15
  74. data/lib/metric_fu/metrics/rcov/grapher.rb +6 -7
  75. data/lib/metric_fu/metrics/rcov/hotspot.rb +5 -7
  76. data/lib/metric_fu/metrics/rcov/metric.rb +5 -7
  77. data/lib/metric_fu/metrics/rcov/rcov_format_coverage.rb +16 -55
  78. data/lib/metric_fu/metrics/rcov/rcov_line.rb +48 -0
  79. data/lib/metric_fu/metrics/rcov/report.html.erb +2 -2
  80. data/lib/metric_fu/metrics/rcov/simplecov_formatter.rb +10 -11
  81. data/lib/metric_fu/metrics/reek/generator.rb +22 -23
  82. data/lib/metric_fu/metrics/reek/grapher.rb +5 -6
  83. data/lib/metric_fu/metrics/reek/hotspot.rb +5 -7
  84. data/lib/metric_fu/metrics/reek/metric.rb +2 -4
  85. data/lib/metric_fu/metrics/roodi/generator.rb +9 -10
  86. data/lib/metric_fu/metrics/roodi/grapher.rb +5 -6
  87. data/lib/metric_fu/metrics/roodi/hotspot.rb +1 -3
  88. data/lib/metric_fu/metrics/roodi/metric.rb +2 -4
  89. data/lib/metric_fu/metrics/saikuro/generator.rb +23 -27
  90. data/lib/metric_fu/metrics/saikuro/hotspot.rb +1 -3
  91. data/lib/metric_fu/metrics/saikuro/metric.rb +7 -8
  92. data/lib/metric_fu/metrics/saikuro/parsing_element.rb +6 -8
  93. data/lib/metric_fu/metrics/saikuro/report.html.erb +1 -1
  94. data/lib/metric_fu/metrics/saikuro/scratch_file.rb +24 -29
  95. data/lib/metric_fu/metrics/stats/generator.rb +9 -12
  96. data/lib/metric_fu/metrics/stats/grapher.rb +8 -9
  97. data/lib/metric_fu/metrics/stats/hotspot.rb +1 -3
  98. data/lib/metric_fu/metrics/stats/metric.rb +3 -5
  99. data/lib/metric_fu/reporter.rb +1 -1
  100. data/lib/metric_fu/reporting/graphs/graph.rb +8 -12
  101. data/lib/metric_fu/reporting/graphs/grapher.rb +7 -9
  102. data/lib/metric_fu/reporting/result.rb +0 -3
  103. data/lib/metric_fu/run.rb +12 -3
  104. data/lib/metric_fu/tasks/metric_fu.rake +8 -8
  105. data/lib/metric_fu/templates/configuration.rb +2 -5
  106. data/lib/metric_fu/templates/metrics_template.rb +19 -19
  107. data/lib/metric_fu/templates/report.rb +5 -8
  108. data/lib/metric_fu/templates/template.rb +20 -24
  109. data/lib/metric_fu/utility.rb +7 -8
  110. data/lib/metric_fu/version.rb +1 -1
  111. data/metric_fu.gemspec +31 -32
  112. data/spec/cli/helper_spec.rb +7 -14
  113. data/spec/dummy/lib/bad_encoding.rb +1 -1
  114. data/spec/fixtures/coverage-153.rb +2 -2
  115. data/spec/fixtures/coverage.rb +2 -2
  116. data/spec/metric_fu/calculate_spec.rb +3 -3
  117. data/spec/metric_fu/configuration_spec.rb +70 -82
  118. data/spec/metric_fu/data_structures/line_numbers_spec.rb +3 -5
  119. data/spec/metric_fu/data_structures/location_spec.rb +13 -31
  120. data/spec/metric_fu/formatter/configuration_spec.rb +11 -13
  121. data/spec/metric_fu/formatter/html_spec.rb +21 -28
  122. data/spec/metric_fu/formatter/yaml_spec.rb +9 -17
  123. data/spec/metric_fu/formatter_spec.rb +6 -6
  124. data/spec/metric_fu/gem_version_spec.rb +3 -5
  125. data/spec/metric_fu/generator_spec.rb +28 -38
  126. data/spec/metric_fu/loader_spec.rb +1 -3
  127. data/spec/metric_fu/metric_spec.rb +17 -21
  128. data/spec/metric_fu/metrics/cane/configuration_spec.rb +8 -8
  129. data/spec/metric_fu/metrics/cane/generator_spec.rb +26 -29
  130. data/spec/metric_fu/metrics/churn/configuration_spec.rb +6 -8
  131. data/spec/metric_fu/metrics/churn/generator_spec.rb +6 -11
  132. data/spec/metric_fu/metrics/flay/configuration_spec.rb +6 -8
  133. data/spec/metric_fu/metrics/flay/generator_spec.rb +36 -37
  134. data/spec/metric_fu/metrics/flay/grapher_spec.rb +2 -2
  135. data/spec/metric_fu/metrics/flog/configuration_spec.rb +11 -13
  136. data/spec/metric_fu/metrics/flog/generator_spec.rb +29 -31
  137. data/spec/metric_fu/metrics/flog/grapher_spec.rb +8 -10
  138. data/spec/metric_fu/metrics/hotspots/analysis/analyzed_problems_spec.rb +18 -24
  139. data/spec/metric_fu/metrics/hotspots/analysis/analyzer_tables_spec.rb +12 -17
  140. data/spec/metric_fu/metrics/hotspots/analysis/ranking_spec.rb +2 -6
  141. data/spec/metric_fu/metrics/hotspots/analysis/rankings_spec.rb +5 -14
  142. data/spec/metric_fu/metrics/hotspots/analysis/table_spec.rb +1 -3
  143. data/spec/metric_fu/metrics/hotspots/generator_spec.rb +6 -8
  144. data/spec/metric_fu/metrics/hotspots/hotspot_analyzer_spec.rb +1 -3
  145. data/spec/metric_fu/metrics/hotspots/hotspot_spec.rb +4 -5
  146. data/spec/metric_fu/metrics/rails_best_practices/configuration_spec.rb +6 -10
  147. data/spec/metric_fu/metrics/rails_best_practices/generator_spec.rb +2 -3
  148. data/spec/metric_fu/metrics/rails_best_practices/grapher_spec.rb +3 -3
  149. data/spec/metric_fu/metrics/rcov/configuration_spec.rb +20 -22
  150. data/spec/metric_fu/metrics/rcov/generator_spec.rb +6 -10
  151. data/spec/metric_fu/metrics/rcov/grapher_spec.rb +2 -2
  152. data/spec/metric_fu/metrics/rcov/hotspot_spec.rb +8 -8
  153. data/spec/metric_fu/metrics/rcov/rcov_line_spec.rb +89 -0
  154. data/spec/metric_fu/metrics/rcov/simplecov_formatter_spec.rb +31 -33
  155. data/spec/metric_fu/metrics/reek/configuration_spec.rb +6 -6
  156. data/spec/metric_fu/metrics/reek/generator_spec.rb +19 -20
  157. data/spec/metric_fu/metrics/reek/grapher_spec.rb +4 -4
  158. data/spec/metric_fu/metrics/roodi/configuration_spec.rb +7 -9
  159. data/spec/metric_fu/metrics/roodi/generator_spec.rb +3 -3
  160. data/spec/metric_fu/metrics/roodi/grapher_spec.rb +2 -2
  161. data/spec/metric_fu/metrics/saikuro/configuration_spec.rb +18 -19
  162. data/spec/metric_fu/metrics/saikuro/generator_spec.rb +7 -7
  163. data/spec/metric_fu/metrics/stats/generator_spec.rb +9 -9
  164. data/spec/metric_fu/metrics/stats/grapher_spec.rb +2 -2
  165. data/spec/metric_fu/reporter_spec.rb +3 -4
  166. data/spec/metric_fu/reporting/graphs/graph_spec.rb +1 -4
  167. data/spec/metric_fu/reporting/graphs/grapher_spec.rb +5 -5
  168. data/spec/metric_fu/reporting/result_spec.rb +9 -11
  169. data/spec/metric_fu/run_spec.rb +18 -32
  170. data/spec/metric_fu/templates/configuration_spec.rb +28 -34
  171. data/spec/metric_fu/templates/metrics_template_spec.rb +11 -0
  172. data/spec/metric_fu/templates/report_spec.rb +4 -4
  173. data/spec/metric_fu/templates/template_spec.rb +62 -48
  174. data/spec/metric_fu/utility_spec.rb +2 -2
  175. data/spec/metric_fu_spec.rb +5 -7
  176. data/spec/shared/configured.rb +9 -11
  177. data/spec/shared/test_coverage.rb +5 -9
  178. data/spec/spec_helper.rb +9 -9
  179. data/spec/support/deferred_garbaged_collection.rb +1 -2
  180. data/spec/support/matcher_create_file.rb +2 -4
  181. data/spec/support/matcher_create_files.rb +2 -4
  182. data/spec/support/suite.rb +3 -3
  183. data/spec/support/test_fixtures.rb +5 -7
  184. data/spec/support/timeout.rb +1 -1
  185. data/spec/support/usage_test.rb +23 -24
  186. data/spec/usage_test_spec.rb +18 -20
  187. metadata +12 -2
  188. metadata.gz.sig +0 -0
@@ -1,5 +1,5 @@
1
1
  # coding: utf-8
2
- require 'rubygems'
2
+ require "rubygems"
3
3
  module MetricFu
4
4
  class GemVersion
5
5
  # regexp from https://github.com/gemnasium/gemnasium-parser/blob/807d7ccc/lib/gemnasium/parser/patterns.rb#L11
@@ -14,13 +14,12 @@ module MetricFu
14
14
  COMMENT = /(#[^\n]*)?/
15
15
  ADD_DEPENDENCY_CALL = /^[ \t]*\w+\.add(?<type>_runtime|_development)?_dependency\(?[ \t]*#{QUOTED_GEM_NAME}(?:[ \t]*,[ \t]*#{REQUIREMENTS})?[ \t]*\)?[ \t]*#{COMMENT}$/
16
16
 
17
-
18
17
  def initialize
19
- @gem_spec = File.open(gemspec, 'rb') {|f| f.readlines }
18
+ @gem_spec = File.open(gemspec, "rb") { |f| f.readlines }
20
19
  end
21
20
 
22
21
  def gemspec
23
- File.join(MetricFu.root_dir, 'metric_fu.gemspec')
22
+ File.join(MetricFu.root_dir, "metric_fu.gemspec")
24
23
  end
25
24
 
26
25
  def new_dependency(name, version)
@@ -32,10 +31,10 @@ module MetricFu
32
31
  begin
33
32
  @gem_spec.grep(/add_dependency|add_runtime/).map do |line|
34
33
  match = line.match(ADD_DEPENDENCY_CALL)
35
- name = match['name'].downcase.sub('metric_fu-', '')
36
- version = [match['req1'], match['req2']].compact
34
+ name = match["name"].downcase.sub("metric_fu-", "")
35
+ version = [match["req1"], match["req2"]].compact
37
36
  new_dependency(name, version)
38
- end.compact << new_dependency('rcov', ['~> 0.8'])
37
+ end.compact << new_dependency("rcov", ["~> 0.8"])
39
38
  end
40
39
  end
41
40
 
@@ -49,7 +48,7 @@ module MetricFu
49
48
  end
50
49
 
51
50
  def unknown_dependency(name)
52
- ->{ new_dependency(name, ['>= 0']) }
51
+ -> { new_dependency(name, [">= 0"]) }
53
52
  end
54
53
 
55
54
  RESOLVER = new
@@ -79,8 +78,8 @@ module MetricFu
79
78
  name = gem_dep.name
80
79
  version = activated_version(gem_dep.name) || gem_dep.requirements_list
81
80
  {
82
- 'name' => name,
83
- 'version' => version,
81
+ "name" => name,
82
+ "version" => version,
84
83
  }
85
84
  end
86
85
 
@@ -89,6 +88,5 @@ module MetricFu
89
88
  dependency_summary(gem_dep)
90
89
  end
91
90
  end
92
-
93
91
  end
94
92
  end
@@ -1,6 +1,5 @@
1
- MetricFu.lib_require { 'utility' }
1
+ MetricFu.lib_require { "utility" }
2
2
  module MetricFu
3
-
4
3
  # = Generator
5
4
  #
6
5
  # The Generator class is an abstract class that provides the
@@ -31,10 +30,9 @@ module MetricFu
31
30
  # in general setup the directory structure that the MetricFu system
32
31
  # expects.
33
32
  class Generator
34
-
35
33
  attr_reader :result, :template, :options
36
34
 
37
- def initialize(options={})
35
+ def initialize(options = {})
38
36
  @options = options
39
37
  end
40
38
 
@@ -53,7 +51,7 @@ module MetricFu
53
51
  end
54
52
 
55
53
  def self.get_generator(metric)
56
- generators.find{|generator|generator.metric.to_s == metric.to_s.downcase}
54
+ generators.find { |generator|generator.metric.to_s == metric.to_s.downcase }
57
55
  end
58
56
 
59
57
  def self.inherited(subclass)
@@ -66,7 +64,7 @@ module MetricFu
66
64
  MetricFu::Metric.get_metric(metric).run_options[:output_directory] ||
67
65
  begin
68
66
  metric_directory = MetricFu::Io::FileSystem.scratch_directory(metric)
69
- MetricFu::Utility.mkdir_p(metric_directory, :verbose => false)
67
+ MetricFu::Utility.mkdir_p(metric_directory, verbose: false)
70
68
  end
71
69
  end
72
70
 
@@ -109,7 +107,7 @@ module MetricFu
109
107
  end
110
108
 
111
109
  def round_to_tenths(decimal)
112
- decimal = 0.0 if decimal.to_s.eql?('NaN')
110
+ decimal = 0.0 if decimal.to_s.eql?("NaN")
113
111
  (decimal * 10).round / 10.0
114
112
  end
115
113
 
@@ -133,6 +131,5 @@ module MetricFu
133
131
  information.
134
132
  EOF
135
133
  end
136
-
137
134
  end
138
135
  end
@@ -1,16 +1,15 @@
1
- MetricFu.lib_require { 'utility' }
1
+ MetricFu.lib_require { "utility" }
2
2
  module MetricFu
3
3
  module Io
4
4
  # TODO: Move this module / functionality elsewhere and make less verbose
5
5
  module FileSystem
6
-
7
6
  # TODO: Use a better environmental variable name for the output / artiface dir. Set to a different default in tests.
8
- @default_artifact_dir = 'tmp/metric_fu'
7
+ @default_artifact_dir = "tmp/metric_fu"
9
8
  def self.default_artifact_dir
10
9
  @default_artifact_dir
11
10
  end
12
11
  def self.artifact_dir
13
- (ENV['CC_BUILD_ARTIFACTS'] || @artifact_dir)
12
+ (ENV["CC_BUILD_ARTIFACTS"] || @artifact_dir)
14
13
  end
15
14
  def self.artifact_dir=(artifact_dir)
16
15
  @artifact_dir = artifact_dir
@@ -28,7 +27,7 @@ module MetricFu
28
27
  end
29
28
 
30
29
  def scratch_directory(name)
31
- File.join(directory('scratch_directory'), name.to_s)
30
+ File.join(directory("scratch_directory"), name.to_s)
32
31
  end
33
32
 
34
33
  def file_globs_to_ignore
@@ -37,15 +36,15 @@ module MetricFu
37
36
 
38
37
  def set_directories
39
38
  @directories = {}
40
- @directories['base_directory'] = MetricFu.artifact_dir
41
- @directories['scratch_directory'] = MetricFu.scratch_dir
42
- @directories['output_directory'] = MetricFu.output_dir
43
- @directories['data_directory'] = MetricFu.data_dir
39
+ @directories["base_directory"] = MetricFu.artifact_dir
40
+ @directories["scratch_directory"] = MetricFu.scratch_dir
41
+ @directories["output_directory"] = MetricFu.output_dir
42
+ @directories["data_directory"] = MetricFu.data_dir
44
43
  create_directories @directories.values
45
44
 
46
- @directories['root_directory'] = MetricFu.root_dir
45
+ @directories["root_directory"] = MetricFu.root_dir
47
46
  # TODO Though this is true of the general AwesomeTemplate, it is not necessarily true of templates within each Metric. Each metric should probably know how to use AwesomeTemplate (or whatever)
48
- @directories['template_directory'] = File.join(@directories.fetch('root_directory'), 'lib', 'templates')
47
+ @directories["template_directory"] = File.join(@directories.fetch("root_directory"), "lib", "templates")
49
48
  @file_globs_to_ignore = []
50
49
  set_code_dirs
51
50
  end
@@ -60,9 +59,8 @@ module MetricFu
60
59
 
61
60
  # Add the 'app' directory if we're running within rails.
62
61
  def set_code_dirs
63
- @directories['code_dirs'] = %w(app lib).select{|dir| Dir.exists?(dir) }
62
+ @directories["code_dirs"] = %w(app lib).select { |dir| Dir.exists?(dir) }
64
63
  end
65
-
66
64
  end
67
65
 
68
66
  # Writes the output to a file or io stream.
@@ -114,7 +112,7 @@ module MetricFu
114
112
  end
115
113
 
116
114
  def file_for(path, &block)
117
- File.open(path_relative_to_base(path), 'w') do |file|
115
+ File.open(path_relative_to_base(path), "w") do |file|
118
116
  block.call(file)
119
117
  end
120
118
  end
@@ -127,7 +125,7 @@ module MetricFu
127
125
  end
128
126
 
129
127
  def path_relative_to_base(path)
130
- pathname = MetricFu.run_path.join(MetricFu::Io::FileSystem.directory('base_directory')) # make full path relative to base directory
128
+ pathname = MetricFu.run_path.join(MetricFu::Io::FileSystem.directory("base_directory")) # make full path relative to base directory
131
129
  pathname.join(path)
132
130
  end
133
131
  end
@@ -9,14 +9,14 @@ module MetricFu
9
9
  @loaded_files = []
10
10
  end
11
11
 
12
- def lib_require(base='',&block)
12
+ def lib_require(base = "", &_block)
13
13
  paths = []
14
14
  base_path = File.join(@lib_root, base)
15
15
  Array((yield paths, base_path)).each do |path|
16
16
  file = File.join(base_path, *Array(path))
17
17
  require file
18
18
  if @loaded_files.include?(file)
19
- puts "!!!\tAlready loaded #{file}" if !!(ENV['MF_DEBUG'] =~ /true/i)
19
+ puts "!!!\tAlready loaded #{file}" if !!(ENV["MF_DEBUG"] =~ /true/i)
20
20
  else
21
21
  @loaded_files << file
22
22
  end
@@ -36,9 +36,9 @@ module MetricFu
36
36
  class << klass
37
37
  Array(yield).each do |dir|
38
38
  define_method("#{dir}_dir") do
39
- File.join(lib_dir,dir)
39
+ File.join(lib_dir, dir)
40
40
  end
41
- module_eval(%Q(def #{dir}_require(&block); lib_require('#{dir}', &block); end), __FILE__, __LINE__)
41
+ module_eval(%(def #{dir}_require(&block); lib_require('#{dir}', &block); end), __FILE__, __LINE__)
42
42
  end
43
43
  end
44
44
  end
@@ -52,41 +52,41 @@ module MetricFu
52
52
  def create_artifact_subdirs(klass)
53
53
  class << klass
54
54
  Array(yield).each do |dir|
55
- define_method("#{dir.gsub(/[^A-Za-z0-9]/,'')}_dir") do
56
- File.join(artifact_dir,dir)
55
+ define_method("#{dir.gsub(/[^A-Za-z0-9]/, '')}_dir") do
56
+ File.join(artifact_dir, dir)
57
57
  end
58
58
  end
59
59
  end
60
60
  end
61
61
 
62
62
  def setup
63
- MetricFu.lib_require { 'logger' }
64
- MetricFu.logger.debug_on = !!(ENV['MF_DEBUG'] =~ /true/i)
63
+ MetricFu.lib_require { "logger" }
64
+ MetricFu.logger.debug_on = !!(ENV["MF_DEBUG"] =~ /true/i)
65
65
 
66
66
  load_metric_configuration
67
67
 
68
- MetricFu.lib_require { 'reporter' }
69
- MetricFu.reporting_require { 'result' }
68
+ MetricFu.lib_require { "reporter" }
69
+ MetricFu.reporting_require { "result" }
70
70
 
71
- MetricFu.load_tasks('metric_fu.rake', task_name: 'metrics:all')
71
+ MetricFu.load_tasks("metric_fu.rake", task_name: "metrics:all")
72
72
  end
73
73
 
74
74
  def load_metric_configuration
75
- MetricFu.lib_require { 'configuration' }
75
+ MetricFu.lib_require { "configuration" }
76
76
  load_installed_metrics
77
77
  MetricFu.configuration.configure_metrics
78
78
  load_user_configuration
79
79
  end
80
80
 
81
81
  def load_installed_metrics
82
- MetricFu.lib_require { 'metric' }
83
- Dir.glob(File.join(MetricFu.metrics_dir, '**/metric.rb')).each do |metric_config|
82
+ MetricFu.lib_require { "metric" }
83
+ Dir.glob(File.join(MetricFu.metrics_dir, "**/metric.rb")).each do |metric_config|
84
84
  require metric_config
85
85
  end
86
86
  end
87
87
 
88
88
  def load_user_configuration
89
- file = File.join(MetricFu.run_dir, '.metrics')
89
+ file = File.join(MetricFu.run_dir, ".metrics")
90
90
  load file if File.exist?(file)
91
91
  end
92
92
 
@@ -96,11 +96,10 @@ module MetricFu
96
96
  # @param tasks_relative_path [String] 'metric_fu.rake' by default
97
97
  # @param options [Hash] optional task_name to check if loaded
98
98
  # @option options [String] :task_name The task_name to load, if not yet loaded
99
- def load_tasks(tasks_relative_path, options={task_name: ''})
99
+ def load_tasks(tasks_relative_path, options = { task_name: "" })
100
100
  if defined?(Rake::Task) and not Rake::Task.task_defined?(options[:task_name])
101
- load File.join(@lib_root, 'tasks', *Array(tasks_relative_path))
101
+ load File.join(@lib_root, "tasks", *Array(tasks_relative_path))
102
102
  end
103
103
  end
104
-
105
104
  end
106
105
  end
@@ -1,7 +1,6 @@
1
- require 'logger'
2
- require 'forwardable'
1
+ require "logger"
2
+ require "forwardable"
3
3
  module MetricFu
4
-
5
4
  def self.logger
6
5
  @logger ||= ::MetricFu::Logger.new($stdout)
7
6
  end
@@ -13,12 +12,12 @@ module MetricFu
13
12
  def initialize(stdout)
14
13
  @logger = MfLogger.new(stdout)
15
14
  self.debug_on = false
16
- self.formatter = ->(severity, time, progname, msg){ "#{msg}\n" }
17
- self.level = 'info'
15
+ self.formatter = ->(_severity, _time, _progname, msg) { "#{msg}\n" }
16
+ self.level = "info"
18
17
  end
19
18
 
20
19
  def debug_on=(bool)
21
- self.level = bool ? 'debug' : 'info'
20
+ self.level = bool ? "debug" : "info"
22
21
  end
23
22
 
24
23
  def debug_on
@@ -28,12 +27,12 @@ module MetricFu
28
27
  def_delegators :@logger, :info, :warn, :error, :fatal, :unknown
29
28
 
30
29
  LEVELS = {
31
- 'debug' => MfLogger::DEBUG,
32
- 'info' => MfLogger::INFO,
33
- 'warn' => MfLogger::WARN,
34
- 'error' => MfLogger::ERROR,
35
- 'fatal' => MfLogger::FATAL,
36
- 'unknown' => MfLogger::UNKNOWN,
30
+ "debug" => MfLogger::DEBUG,
31
+ "info" => MfLogger::INFO,
32
+ "warn" => MfLogger::WARN,
33
+ "error" => MfLogger::ERROR,
34
+ "fatal" => MfLogger::FATAL,
35
+ "unknown" => MfLogger::UNKNOWN,
37
36
  }
38
37
 
39
38
  def level=(level)
@@ -45,21 +44,19 @@ module MetricFu
45
44
  end
46
45
 
47
46
  def log(msg)
48
- @logger.info '*'*5 + msg.to_s
47
+ @logger.info "*" * 5 + msg.to_s
49
48
  end
50
49
 
51
50
  def debug(msg)
52
- @logger.debug '*'*5 + msg.to_s
51
+ @logger.debug "*" * 5 + msg.to_s
53
52
  end
54
-
55
53
  end
56
-
57
54
  end
58
55
  # For backward compatibility
59
- def mf_debug(msg,&block)
56
+ def mf_debug(msg, &block)
60
57
  MetricFu.logger.debug(msg, &block)
61
58
  end
62
59
 
63
- def mf_log(msg,&block)
60
+ def mf_log(msg, &block)
64
61
  MetricFu.logger.log(msg, &block)
65
62
  end
@@ -1,5 +1,5 @@
1
1
  warn "MfDebugger if deprecated. Please use MetricFu.logger"
2
- MetricFu.lib_require { 'logger' }
2
+ MetricFu.lib_require { "logger" }
3
3
  module MfDebugger
4
4
  extend self
5
5
  class Logger
@@ -9,13 +9,13 @@ module MfDebugger
9
9
  end
10
10
  def self.debug_on=(bool)
11
11
  warn "MfDebugger if deprecated. Please use MetricFu.logger"
12
- MetricFu.logger.level = bool ? 'debug' : 'info'
12
+ MetricFu.logger.level = bool ? "debug" : "info"
13
13
  end
14
- def self.log(msg, &block)
14
+ def self.log(msg, &_block)
15
15
  warn "MfDebugger if deprecated. Please use MetricFu.logger"
16
16
  MetricFu.logger.info msg
17
17
  end
18
- def self.debug(msg, &block)
18
+ def self.debug(msg, &_block)
19
19
  warn "MfDebugger if deprecated. Please use MetricFu.logger"
20
20
  MetricFu.logger.debug msg
21
21
  end
@@ -1,10 +1,9 @@
1
- require 'set'
2
- MetricFu.lib_require { 'gem_run' }
3
- MetricFu.lib_require { 'generator' }
1
+ require "set"
2
+ MetricFu.lib_require { "gem_run" }
3
+ MetricFu.lib_require { "generator" }
4
4
  # Encapsulates the configuration options for each metric
5
5
  module MetricFu
6
6
  class Metric
7
-
8
7
  attr_accessor :enabled, :activated
9
8
 
10
9
  def initialize
@@ -20,7 +19,7 @@ module MetricFu
20
19
  # TODO: Confirm this catches load errors from requires in subclasses, such as for flog
21
20
  def activate
22
21
  MetricFu.metrics_require { default_metric_library_paths }
23
- @libraries.each {|library| require(library) }
22
+ @libraries.each { |library| require(library) }
24
23
  self.activated = true
25
24
  rescue LoadError => e
26
25
  mf_log "#{name} metric not activated, #{e.message}"
@@ -41,7 +40,7 @@ module MetricFu
41
40
  end
42
41
 
43
42
  def default_run_args
44
- run_options.map { |k, v| "--#{k} #{v}" }.join(' ')
43
+ run_options.map { |k, v| "--#{k} #{v}" }.join(" ")
45
44
  end
46
45
 
47
46
  def run
@@ -49,12 +48,12 @@ module MetricFu
49
48
  end
50
49
 
51
50
  def run_external(args = default_run_args)
52
- runner = GemRun.new({
51
+ runner = GemRun.new(
53
52
  gem_name: gem_name.to_s,
54
53
  metric_name: name.to_s,
55
54
  # version: ,
56
55
  args: args,
57
- })
56
+ )
58
57
  stdout, stderr, status = runner.run
59
58
  # TODO: do something with the stderr
60
59
  # for now, just acknowledge we got it
@@ -90,11 +89,11 @@ module MetricFu
90
89
  end
91
90
 
92
91
  def self.enabled_metrics
93
- metrics.select{|metric| metric.enabled && metric.activated}.sort_by {|metric| metric.name == :hotspots ? 1 : 0 }
92
+ metrics.select { |metric| metric.enabled && metric.activated }.sort_by { |metric| metric.name == :hotspots ? 1 : 0 }
94
93
  end
95
94
 
96
95
  def self.get_metric(name)
97
- metrics.find{|metric|metric.name.to_s == name.to_s}
96
+ metrics.find { |metric|metric.name.to_s == name.to_s }
98
97
  end
99
98
 
100
99
  def self.inherited(subclass)
@@ -119,7 +118,7 @@ module MetricFu
119
118
 
120
119
  # Used above to identify the stem of a setter method
121
120
  def method_to_attr(method)
122
- method.to_s.sub(/=$/, '').to_sym
121
+ method.to_s.sub(/=$/, "").to_sym
123
122
  end
124
123
 
125
124
  private
@@ -136,7 +135,7 @@ module MetricFu
136
135
  paths = []
137
136
  paths << generator_path = "#{name}/generator"
138
137
  if has_graph?
139
- paths << grapher_path = "#{name}/grapher"
138
+ paths << grapher_path = "#{name}/grapher"
140
139
  end
141
140
  paths
142
141
  end