Skip to content

Instantly share code, notes, and snippets.

@leobessa
Created September 1, 2010 19:59
Show Gist options
  • Save leobessa/561250 to your computer and use it in GitHub Desktop.
Save leobessa/561250 to your computer and use it in GitHub Desktop.
#!/usr/bin/env ruby
require 'date'
require 'rubygems'
begin
require 'metric_fu'
require 'reek'
require 'roodi'
rescue LoadError
puts "Error loading gems. Try this: gem install metric_fu reek roodi"
exit
end
ENV['CC_BUILD_ARTIFACTS']="tmp/metric_fu"
MetricFu::Configuration.run do |config|
#define which metrics you want to use
config.metrics = [:flog, :flay, :roodi]
config.graphs = [:flog, :flay, :roodi]
config.flay = { :dirs_to_flay => ['app/controllers','app/helpers','app/models', 'lib'], :minimum_score => 10 }
config.flog = { :dirs_to_flog => ['app', 'lib'] }
config.roodi = { :dirs_to_roodi => ['app', 'lib'] }
config.graph_engine = :bluff
end
def metric_fu(time,commit_hash)
%x{git checkout #{commit_hash}}
MetricFu::Configuration.run {}
MetricFu.metrics.each {|metric| MetricFu.report.add(metric) }
MetricFu.report.save_output(MetricFu.report.to_yaml,
MetricFu.base_directory,
"report.yml")
MetricFu.report.save_output(MetricFu.report.to_yaml,
MetricFu.data_directory,
"#{time.strftime("%Y%m%d")}.yml")
MetricFu.report.save_templatized_report
end
commits = %x[git rev-list --branches master --since="4 weeks ago" --timestamp]
last_commits_by_date = {}
commits.each do |line|
timestamp , commit_hash = line.split
time = Time.at(timestamp.to_i)
date = Date.parse(time.strftime('%Y/%m/%d'))
unless last_commits_by_date.include?(date)
last_commits_by_date[date] = commit_hash
end
end
last_commits_by_date.keys.sort.each do |date|
metric_fu(date,last_commits_by_date[date])
end
MetricFu.graphs.each {|graph| MetricFu.graph.add(graph, MetricFu.graph_engine) }
MetricFu.graph.generate
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment