Watch for Turbulence

How important is the refactoring you’re working on? Michael Feathers has a metric you should consider when deciding: plot the complexity against the churn.

Chad Fowler’s turbulence gem does just that.

The “complexity” is some arbitrary number of how tricky the code is to read; this can range from the amount of indentation to the amount of metaprogramming, and everything in between. This is computed using flog.

“Churn” simply refers to how often a file changes; a file that’s changed a bunch has high churn. Highly-churned files should be easy to modify, since people do it a ton. This is computing using git.

Using it is simple: drop this in your Gemfile:

group :development do
  gem 'turbulence'
end

Then run it:

bundle exec bule

Watch out, it’ll open a new tab in the browser for you:

Caveats

  • It’s just a number. It doesn’t replace human thought, passion, and desires.
  • Only works on Ruby 1.8!
  • Outliers make the plot nearly impossible to read.
Mike Burns

Hound automatically reviews Ruby, JavaScript, and CoffeeScript code in your GitHub pull requests and comments on style violations. It is free for open source repos and $12/month per private repo.