lib/metric_fu/base.rb in p8-metric_fu-0.8.0.16 vs lib/metric_fu/base.rb in p8-metric_fu-0.8.2
- old
+ new
@@ -1,46 +1,30 @@
-require 'erb'
module MetricFu
TEMPLATE_DIR = File.join(File.dirname(__FILE__), '..', 'templates')
BASE_DIRECTORY = ENV['CC_BUILD_ARTIFACTS'] || 'tmp/metric_fu'
RAILS = File.exist?("config/environment.rb")
if RAILS
CODE_DIRS = ['app', 'lib']
- DEFAULT_METRICS = [:coverage, :churn, :flog, :flay, :reek, :roodi, :stats, :saikuro ]
else
CODE_DIRS = ['lib']
- DEFAULT_METRICS = [:coverage, :churn, :flog, :flay, :reek, :roodi, :saikuro ]
- end
+ end
module Base
-
- ######################################################################
- # Base class for report Generators
- #
class Generator
- def initialize(options={})
- @base_dir = self.class.metric_dir
+ def initialize(base_dir, options={})
+ @base_dir = base_dir
end
- def self.metric_dir
- File.join(BASE_DIRECTORY, template_name)
+ def self.generate_report(base_dir, options={})
+ self.new(base_dir, options).generate_report
end
-
- def self.template_name
- self.to_s.split('::').last.downcase
- end
- def self.generate_report(options={})
- FileUtils.mkdir_p(metric_dir, :verbose => false) unless File.directory?(metric_dir)
- self.new(options).generate_report
- end
-
- def save_html(content, file='index.html')
- open("#{@base_dir}/#{file}", "w") do |f|
+ def save_html(content, file='index')
+ open("#{@base_dir}/#{file}.html", "w") do |f|
f.puts content
end
end
def generate_report
@@ -49,111 +33,21 @@
def generate_html
analyze
html = ERB.new(File.read(template_file)).result(binding)
end
-
- def template_name
- self.class.template_name
- end
def template_file
File.join(MetricFu::TEMPLATE_DIR, "#{template_name}.html.erb")
- end
-
- ########################
- # Template methods
-
- def inline_css(css)
- open(File.join(MetricFu::TEMPLATE_DIR, css)) { |f| f.read }
end
-
+
def link_to_filename(name, line = nil)
filename = File.expand_path(name)
if PLATFORM['darwin']
%{<a href="txmt://open/?url=file://#{filename}&line=#{line}">#{name}</a>}
else
%{<a href="file://#{filename}">#{name}</a>}
end
end
-
- def cycle(first_value, second_value, iteration)
- return first_value if iteration % 2 == 0
- return second_value
- end
- end
- end
-
- class << self
- # The Configuration instance used to configure the Rails environment
- def configuration
- @@configuration ||= Configuration.new
- end
-
- def churn
- configuration.churn
- end
-
- def coverage
- configuration.coverage
- end
-
- def flay
- configuration.flay
- end
-
- def flog
- configuration.flog
- end
-
- def metrics
- configuration.metrics
- end
-
- def open_in_browser?
- PLATFORM['darwin'] && !ENV['CC_BUILD_ARTIFACTS']
- end
-
- def saikuro
- configuration.saikuro
- end
-
- def reek
- configuration.reek
- end
-
- def roodi
- configuration.roodi
- end
-
- end
-
- class Configuration
- attr_accessor :churn, :coverage, :flay, :flog, :metrics, :reek, :roodi, :saikuro
- def initialize
- raise "Use config.churn instead of MetricFu::CHURN_OPTIONS" if defined? ::MetricFu::CHURN_OPTIONS
- raise "Use config.flog[:dirs_to_flog] instead of MetricFu::DIRECTORIES_TO_FLOG" if defined? ::MetricFu::DIRECTORIES_TO_FLOG
- raise "Use config.saikuro instead of MetricFu::SAIKURO_OPTIONS" if defined? ::MetricFu::SAIKURO_OPTIONS
- reset
- end
-
- def self.run()
- yield MetricFu.configuration
- end
-
- def reset
- @churn = {}
- @coverage = { :test_files => ['test/**/*_test.rb', 'spec/**/*_spec.rb'] }
- @flay = { :dirs_to_flay => CODE_DIRS}
- @flog = { :dirs_to_flog => CODE_DIRS}
- @reek = { :dirs_to_reek => CODE_DIRS}
- @roodi = { :dirs_to_roodi => CODE_DIRS}
- @metrics = DEFAULT_METRICS
- @saikuro = {}
- end
-
- def saikuro=(options)
- raise "saikuro need to be a Hash" unless options.is_a?(Hash)
- @saikuro = options
end
end
end
\ No newline at end of file