metric_fu 4.11.1 → 4.13.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (206) hide show
  1. checksums.yaml +5 -13
  2. data/.gitignore +6 -0
  3. data/.rubocop.yml +15 -0
  4. data/.rubocop_todo.yml +69 -0
  5. data/.simplecov +35 -3
  6. data/.travis.yml +6 -10
  7. data/CONTRIBUTORS +12 -11
  8. data/Gemfile +48 -29
  9. data/Guardfile +9 -9
  10. data/HISTORY.md +47 -1
  11. data/README.md +70 -57
  12. data/Rakefile +1 -15
  13. data/appveyor.yml +34 -0
  14. data/certs/bf4.pem +20 -20
  15. data/checksum/metric_fu-4.11.1.gem.sha512 +1 -0
  16. data/checksum/metric_fu-4.11.2.gem.sha512 +1 -0
  17. data/checksum/metric_fu-4.11.3.gem.sha512 +1 -0
  18. data/checksum/metric_fu-4.11.4.gem.sha512 +1 -0
  19. data/checksum/metric_fu-4.12.0.gem.sha512 +1 -0
  20. data/checksum/metric_fu-4.13.0.gem.sha512 +1 -0
  21. data/config/rubocop.yml +269 -0
  22. data/gem_tasks/build.rake +1 -0
  23. data/gem_tasks/rubocop.rake +10 -0
  24. data/gem_tasks/yard.rake +24 -0
  25. data/lib/metric_fu.rb +20 -9
  26. data/lib/metric_fu/calculate.rb +0 -1
  27. data/lib/metric_fu/cli/client.rb +6 -6
  28. data/lib/metric_fu/cli/helper.rb +22 -13
  29. data/lib/metric_fu/cli/parser.rb +14 -18
  30. data/lib/metric_fu/configuration.rb +7 -11
  31. data/lib/metric_fu/constantize.rb +4 -4
  32. data/lib/metric_fu/data_structures/line_numbers.rb +10 -11
  33. data/lib/metric_fu/data_structures/location.rb +12 -14
  34. data/lib/metric_fu/data_structures/sexp_node.rb +31 -13
  35. data/lib/metric_fu/environment.rb +29 -31
  36. data/lib/metric_fu/formatter.rb +4 -6
  37. data/lib/metric_fu/formatter/html.rb +13 -13
  38. data/lib/metric_fu/formatter/syntax.rb +5 -7
  39. data/lib/metric_fu/formatter/yaml.rb +1 -1
  40. data/lib/metric_fu/gem_run.rb +13 -15
  41. data/lib/metric_fu/gem_version.rb +10 -12
  42. data/lib/metric_fu/generator.rb +6 -9
  43. data/lib/metric_fu/io.rb +13 -15
  44. data/lib/metric_fu/loader.rb +17 -18
  45. data/lib/metric_fu/logger.rb +15 -18
  46. data/lib/metric_fu/logging/mf_debugger.rb +4 -4
  47. data/lib/metric_fu/metric.rb +11 -12
  48. data/lib/metric_fu/metrics/cane/generator.rb +10 -9
  49. data/lib/metric_fu/metrics/cane/grapher.rb +5 -7
  50. data/lib/metric_fu/metrics/cane/metric.rb +6 -8
  51. data/lib/metric_fu/metrics/cane/report.html.erb +3 -3
  52. data/lib/metric_fu/metrics/cane/violations.rb +6 -6
  53. data/lib/metric_fu/metrics/churn/generator.rb +2 -6
  54. data/lib/metric_fu/metrics/churn/hotspot.rb +1 -3
  55. data/lib/metric_fu/metrics/churn/metric.rb +5 -7
  56. data/lib/metric_fu/metrics/flay/generator.rb +7 -11
  57. data/lib/metric_fu/metrics/flay/grapher.rb +5 -6
  58. data/lib/metric_fu/metrics/flay/hotspot.rb +5 -7
  59. data/lib/metric_fu/metrics/flay/metric.rb +5 -7
  60. data/lib/metric_fu/metrics/flog/generator.rb +35 -24
  61. data/lib/metric_fu/metrics/flog/grapher.rb +11 -11
  62. data/lib/metric_fu/metrics/flog/hotspot.rb +3 -5
  63. data/lib/metric_fu/metrics/flog/metric.rb +3 -5
  64. data/lib/metric_fu/metrics/hotspots/analysis/analyzed_problems.rb +0 -1
  65. data/lib/metric_fu/metrics/hotspots/analysis/analyzer_tables.rb +19 -18
  66. data/lib/metric_fu/metrics/hotspots/analysis/grouping.rb +0 -2
  67. data/lib/metric_fu/metrics/hotspots/analysis/groupings.rb +1 -3
  68. data/lib/metric_fu/metrics/hotspots/analysis/problems.rb +4 -6
  69. data/lib/metric_fu/metrics/hotspots/analysis/ranked_problem_location.rb +14 -17
  70. data/lib/metric_fu/metrics/hotspots/analysis/ranking.rb +4 -5
  71. data/lib/metric_fu/metrics/hotspots/analysis/rankings.rb +1 -3
  72. data/lib/metric_fu/metrics/hotspots/analysis/record.rb +3 -5
  73. data/lib/metric_fu/metrics/hotspots/analysis/scoring_strategies.rb +0 -2
  74. data/lib/metric_fu/metrics/hotspots/analysis/table.rb +3 -4
  75. data/lib/metric_fu/metrics/hotspots/generator.rb +3 -6
  76. data/lib/metric_fu/metrics/hotspots/hotspot.rb +13 -13
  77. data/lib/metric_fu/metrics/hotspots/hotspot_analyzer.rb +5 -8
  78. data/lib/metric_fu/metrics/hotspots/metric.rb +1 -3
  79. data/lib/metric_fu/metrics/hotspots/report.html.erb +1 -1
  80. data/lib/metric_fu/metrics/rails_best_practices/generator.rb +14 -12
  81. data/lib/metric_fu/metrics/rails_best_practices/grapher.rb +5 -6
  82. data/lib/metric_fu/metrics/rails_best_practices/metric.rb +5 -4
  83. data/lib/metric_fu/metrics/rcov/external_client.rb +1 -3
  84. data/lib/metric_fu/metrics/rcov/generator.rb +13 -15
  85. data/lib/metric_fu/metrics/rcov/grapher.rb +6 -7
  86. data/lib/metric_fu/metrics/rcov/hotspot.rb +5 -7
  87. data/lib/metric_fu/metrics/rcov/metric.rb +5 -7
  88. data/lib/metric_fu/metrics/rcov/rcov_format_coverage.rb +16 -55
  89. data/lib/metric_fu/metrics/rcov/rcov_line.rb +48 -0
  90. data/lib/metric_fu/metrics/rcov/report.html.erb +2 -2
  91. data/lib/metric_fu/metrics/rcov/simplecov_formatter.rb +10 -11
  92. data/lib/metric_fu/metrics/reek/generator.rb +36 -82
  93. data/lib/metric_fu/metrics/reek/grapher.rb +5 -6
  94. data/lib/metric_fu/metrics/reek/hotspot.rb +5 -7
  95. data/lib/metric_fu/metrics/reek/metric.rb +2 -4
  96. data/lib/metric_fu/metrics/roodi/generator.rb +9 -10
  97. data/lib/metric_fu/metrics/roodi/grapher.rb +5 -6
  98. data/lib/metric_fu/metrics/roodi/hotspot.rb +1 -3
  99. data/lib/metric_fu/metrics/roodi/metric.rb +2 -4
  100. data/lib/metric_fu/metrics/saikuro/generator.rb +23 -27
  101. data/lib/metric_fu/metrics/saikuro/hotspot.rb +1 -3
  102. data/lib/metric_fu/metrics/saikuro/metric.rb +7 -8
  103. data/lib/metric_fu/metrics/saikuro/parsing_element.rb +6 -8
  104. data/lib/metric_fu/metrics/saikuro/report.html.erb +1 -1
  105. data/lib/metric_fu/metrics/saikuro/scratch_file.rb +24 -29
  106. data/lib/metric_fu/metrics/stats/generator.rb +9 -12
  107. data/lib/metric_fu/metrics/stats/grapher.rb +8 -9
  108. data/lib/metric_fu/metrics/stats/hotspot.rb +1 -3
  109. data/lib/metric_fu/metrics/stats/metric.rb +3 -5
  110. data/lib/metric_fu/reporter.rb +1 -1
  111. data/lib/metric_fu/reporting/graphs/graph.rb +8 -12
  112. data/lib/metric_fu/reporting/graphs/grapher.rb +7 -9
  113. data/lib/metric_fu/reporting/result.rb +0 -3
  114. data/lib/metric_fu/run.rb +12 -3
  115. data/lib/metric_fu/tasks/metric_fu.rake +8 -8
  116. data/lib/metric_fu/templates/configuration.rb +2 -5
  117. data/lib/metric_fu/templates/metrics_template.rb +45 -32
  118. data/lib/metric_fu/templates/report.rb +5 -8
  119. data/lib/metric_fu/templates/template.rb +20 -24
  120. data/lib/metric_fu/utility.rb +15 -8
  121. data/lib/metric_fu/version.rb +7 -1
  122. data/metric_fu.gemspec +29 -32
  123. data/spec/capture_warnings.rb +29 -22
  124. data/spec/cli/helper_spec.rb +9 -16
  125. data/spec/dummy/lib/bad_encoding.rb +1 -1
  126. data/spec/fixtures/coverage-153.rb +2 -2
  127. data/spec/fixtures/coverage.rb +2 -2
  128. data/spec/metric_fu/calculate_spec.rb +3 -3
  129. data/spec/metric_fu/configuration_spec.rb +71 -83
  130. data/spec/metric_fu/data_structures/line_numbers_spec.rb +3 -5
  131. data/spec/metric_fu/data_structures/location_spec.rb +13 -31
  132. data/spec/metric_fu/formatter/configuration_spec.rb +18 -20
  133. data/spec/metric_fu/formatter/html_spec.rb +21 -28
  134. data/spec/metric_fu/formatter/yaml_spec.rb +9 -17
  135. data/spec/metric_fu/formatter_spec.rb +16 -16
  136. data/spec/metric_fu/gem_version_spec.rb +4 -6
  137. data/spec/metric_fu/generator_spec.rb +33 -43
  138. data/spec/metric_fu/loader_spec.rb +5 -4
  139. data/spec/metric_fu/metric_spec.rb +21 -25
  140. data/spec/metric_fu/metrics/cane/configuration_spec.rb +14 -14
  141. data/spec/metric_fu/metrics/cane/generator_spec.rb +26 -29
  142. data/spec/metric_fu/metrics/churn/configuration_spec.rb +7 -9
  143. data/spec/metric_fu/metrics/churn/generator_spec.rb +6 -11
  144. data/spec/metric_fu/metrics/flay/configuration_spec.rb +7 -9
  145. data/spec/metric_fu/metrics/flay/generator_spec.rb +36 -37
  146. data/spec/metric_fu/metrics/flay/grapher_spec.rb +2 -2
  147. data/spec/metric_fu/metrics/flog/configuration_spec.rb +12 -14
  148. data/spec/metric_fu/metrics/flog/generator_spec.rb +31 -32
  149. data/spec/metric_fu/metrics/flog/grapher_spec.rb +8 -10
  150. data/spec/metric_fu/metrics/hotspots/analysis/analyzed_problems_spec.rb +18 -24
  151. data/spec/metric_fu/metrics/hotspots/analysis/analyzer_tables_spec.rb +12 -17
  152. data/spec/metric_fu/metrics/hotspots/analysis/ranking_spec.rb +2 -6
  153. data/spec/metric_fu/metrics/hotspots/analysis/rankings_spec.rb +5 -14
  154. data/spec/metric_fu/metrics/hotspots/analysis/table_spec.rb +1 -3
  155. data/spec/metric_fu/metrics/hotspots/generator_spec.rb +6 -8
  156. data/spec/metric_fu/metrics/hotspots/hotspot_analyzer_spec.rb +1 -3
  157. data/spec/metric_fu/metrics/hotspots/hotspot_spec.rb +4 -5
  158. data/spec/metric_fu/metrics/rails_best_practices/configuration_spec.rb +25 -17
  159. data/spec/metric_fu/metrics/rails_best_practices/generator_spec.rb +2 -3
  160. data/spec/metric_fu/metrics/rails_best_practices/grapher_spec.rb +3 -3
  161. data/spec/metric_fu/metrics/rcov/configuration_spec.rb +21 -23
  162. data/spec/metric_fu/metrics/rcov/generator_spec.rb +6 -10
  163. data/spec/metric_fu/metrics/rcov/grapher_spec.rb +2 -2
  164. data/spec/metric_fu/metrics/rcov/hotspot_spec.rb +8 -8
  165. data/spec/metric_fu/metrics/rcov/rcov_line_spec.rb +89 -0
  166. data/spec/metric_fu/metrics/rcov/simplecov_formatter_spec.rb +31 -33
  167. data/spec/metric_fu/metrics/reek/configuration_spec.rb +7 -7
  168. data/spec/metric_fu/metrics/reek/generator_spec.rb +131 -111
  169. data/spec/metric_fu/metrics/reek/grapher_spec.rb +4 -4
  170. data/spec/metric_fu/metrics/roodi/configuration_spec.rb +8 -10
  171. data/spec/metric_fu/metrics/roodi/generator_spec.rb +3 -3
  172. data/spec/metric_fu/metrics/roodi/grapher_spec.rb +2 -2
  173. data/spec/metric_fu/metrics/saikuro/configuration_spec.rb +22 -23
  174. data/spec/metric_fu/metrics/saikuro/generator_spec.rb +7 -7
  175. data/spec/metric_fu/metrics/stats/generator_spec.rb +10 -10
  176. data/spec/metric_fu/metrics/stats/grapher_spec.rb +2 -2
  177. data/spec/metric_fu/reporter_spec.rb +8 -9
  178. data/spec/metric_fu/reporting/graphs/graph_spec.rb +1 -4
  179. data/spec/metric_fu/reporting/graphs/grapher_spec.rb +5 -5
  180. data/spec/metric_fu/reporting/result_spec.rb +12 -14
  181. data/spec/metric_fu/run_spec.rb +19 -33
  182. data/spec/metric_fu/templates/configuration_spec.rb +34 -40
  183. data/spec/metric_fu/templates/metrics_template_spec.rb +11 -0
  184. data/spec/metric_fu/templates/report_spec.rb +4 -4
  185. data/spec/metric_fu/templates/template_spec.rb +78 -64
  186. data/spec/metric_fu/utility_spec.rb +3 -3
  187. data/spec/metric_fu_spec.rb +23 -6
  188. data/spec/quality_spec.rb +43 -15
  189. data/spec/shared/configured.rb +9 -11
  190. data/spec/shared/test_coverage.rb +5 -9
  191. data/spec/spec_helper.rb +13 -31
  192. data/spec/{dummy → support}/.metrics +0 -0
  193. data/spec/support/deferred_garbaged_collection.rb +1 -2
  194. data/spec/support/matcher_create_file.rb +6 -4
  195. data/spec/support/matcher_create_files.rb +6 -4
  196. data/spec/support/samples/reek/alfa.rb +1 -0
  197. data/spec/support/suite.rb +3 -3
  198. data/spec/support/test_fixtures.rb +5 -7
  199. data/spec/support/timeout.rb +1 -1
  200. data/spec/support/usage_test.rb +24 -25
  201. data/spec/usage_test_spec.rb +30 -32
  202. metadata +104 -103
  203. checksums.yaml.gz.sig +0 -0
  204. data.tar.gz.sig +0 -0
  205. data/gemfiles/Gemfile.travis +0 -10
  206. metadata.gz.sig +0 -0
@@ -5,7 +5,7 @@ module MetricFu
5
5
 
6
6
  DEFAULT_PATH = "report.yml"
7
7
 
8
- def initialize(opts={})
8
+ def initialize(opts = {})
9
9
  @options = opts
10
10
  @path_or_io = @options[:output] || DEFAULT_PATH
11
11
  end
@@ -1,20 +1,19 @@
1
1
  # encoding: utf-8
2
- require 'open3'
3
- require 'shellwords'
4
- require 'metric_fu'
5
- MetricFu.lib_require { 'logger' }
6
- MetricFu.lib_require { 'gem_version' }
2
+ require "open3"
3
+ require "shellwords"
4
+ require "metric_fu"
5
+ MetricFu.lib_require { "logger" }
6
+ MetricFu.lib_require { "gem_version" }
7
7
  module MetricFu
8
8
  class GemRun
9
-
10
9
  attr_reader :output, :gem_name, :library_name, :version, :arguments
11
- def initialize(arguments={})
10
+ def initialize(arguments = {})
12
11
  @gem_name = arguments.fetch(:gem_name)
13
12
  @library_name = arguments.fetch(:metric_name)
14
13
  @version = arguments.fetch(:version) { MetricFu::GemVersion.for(library_name) }
15
14
  args = arguments.fetch(:args)
16
15
  @arguments = args.respond_to?(:scan) ? Shellwords.shellwords(args) : args
17
- @output = ''
16
+ @output = ""
18
17
  @errors = []
19
18
  end
20
19
 
@@ -28,10 +27,10 @@ module MetricFu
28
27
 
29
28
  def execute
30
29
  mf_debug "Running #{summary}"
31
- captured_output = ''
32
- captured_errors = ''
33
- thread = ''
34
- Open3.popen3("#{library_name}", *arguments) do |stdin, stdout, stderr, wait_thr|
30
+ captured_output = ""
31
+ captured_errors = ""
32
+ thread = ""
33
+ Open3.popen3("#{library_name}", *arguments) do |_stdin, stdout, stderr, wait_thr|
35
34
  captured_output << stdout.read.chomp
36
35
  captured_errors << stderr.read.chomp
37
36
  thread = wait_thr
@@ -52,8 +51,8 @@ module MetricFu
52
51
  def handle_system_exit(system_exit)
53
52
  status = system_exit.success? ? "SUCCESS" : "FAILURE"
54
53
  message = "#{status} with code #{system_exit.status}: " <<
55
- "#{system_exit.message}: #{system_exit.backtrace.inspect}"
56
- if status == 'SUCCESS'
54
+ "#{system_exit.message}: #{system_exit.backtrace.inspect}"
55
+ if status == "SUCCESS"
57
56
  mf_debug message
58
57
  else
59
58
  @errors << message
@@ -67,6 +66,5 @@ module MetricFu
67
66
  STDERR.puts "\t" << error
68
67
  end
69
68
  end
70
-
71
69
  end
72
70
  end
@@ -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
@@ -12,15 +12,14 @@ module MetricFu
12
12
  REQUIREMENT_LIST = /(?<qr1>["'])(?<req1>#{REQUIREMENT})\k<qr1>(?:[ \t]*,[ \t]*(?<qr2>["'])(?<req2>#{REQUIREMENT})\k<qr2>)?/
13
13
  REQUIREMENTS = /(?:#{REQUIREMENT_LIST}|\[[ \t]*#{REQUIREMENT_LIST}[ \t]*\])/
14
14
  COMMENT = /(#[^\n]*)?/
15
- ADD_DEPENDENCY_CALL = /^[ \t]*\w+\.add(?<type>_runtime|_development)?_dependency\(?[ \t]*#{QUOTED_GEM_NAME}(?:[ \t]*,[ \t]*#{REQUIREMENTS})?[ \t]*\)?[ \t]*#{COMMENT}$/
16
-
15
+ ADD_DEPENDENCY_CALL = /^[ \t]*\w+\.add(?<type>_runtime|_development)?_dependency\(?[ \t]*#{QUOTED_GEM_NAME}(.freeze)?(?:[ \t]*,[ \t]*#{REQUIREMENTS})?[ \t]*\)?[ \t]*#{COMMENT}$/
17
16
 
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
 
@@ -126,13 +124,12 @@ module MetricFu
126
124
  end
127
125
 
128
126
  def self.not_implemented
129
- raise <<-EOF
127
+ raise NotImplementedError.new <<-EOF
130
128
  Required method #{caller[0]} not implemented in #{__FILE__}.
131
129
  This method must be implemented by a concrete class descending
132
130
  from Generator. See generator class documentation for more
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.exist?(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