After listening to Ryan Davis' inspiring talk, "Hurting Code for Fun & Profit" at GoRuCo today, I wrote this rake task to figure out what code to hurt. It looks though your git log, and takes the 15 .rb files in your Rails' app/ directory and runs them through flog, so you can see which are the most complicated.
RUBY:
-
namespace :analyze do
-
namespace :commits do
-
desc 'Flog the most commonly revised files in the git history'
-
task :most_changed_files do
-
counts = Hash.new(0)
-
IO.popen("PAGER=cat git log --name-only --pretty=oneline 2>&1") do |pipe|
-
while (!pipe.eof) do
-
line = pipe.readline
-
next unless line =~ /^(app|lib).*\.rb$/
-
counts[line.chomp] += 1
-
end
-
end
-
counts.sort_by{|item| item.last}.reverse.first(15).each do |item|
-
flog_score = `flog -s #{item.first}`.to_f.round
-
puts "#{item.first} (in #{item.last} commits) (Flog: #{flog_score})"
-
end
-
end
-
end
-
end
Install it with sake from here.
UPDATE: If you're interested in watching Ryan's stellar talk, it will be up on Confreaks soon, or you can try the RubyConf edition of the talk.