• Stars
    star
    240
  • Rank 168,229 (Top 4 %)
  • Language
    Ruby
  • License
    MIT License
  • Created almost 14 years ago
  • Updated 9 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Hopefully-meaningful metrics

Hopefully-meaningful Metrics

Based on Michael Feathers' recent work in project churn and complexity.

Here is how to read the graph (extracted from the above article):

  • The upper right quadrant is particularly important. These files have a high degree of complexity, and they change quite frequently. There are a number of reasons why this can happen. The one to look out for, though, is something I call runaway conditionals. Sometimes a class becomes so complex that refactoring seems too difficult. Developers hack if-then-elses into if-then-elses, and the rat’s nest grows. These classes are particularly ripe for a refactoring investment.

  • The lower left quadrant. is the healthy closure region. Abstractions here have low complexity and don't change much.

  • The upper left is what I call the cowboy region. This is complex code that sprang from someone's head and didn't seem to grow incrementally.

  • The bottom right is very interesting. I call it the fertile ground. It can consist of files that are somewhat configurational, but often there are also files that act as incubators for new abstractions. People add code, it grows, and then they factor outward, extracting new classes. The files churn frequently, but their complexity remains low.

Installation

$ gem install turbulence

Usage

In your project directory, run:

$ bule

and it will generate (and open) turbulence/turbulence.html

Supported SCM systems

Currently, bule defaults to using git. If you are using Perforce, call it like so:

$ bule --scm p4

You need to have an environment variable P4CLIENT set to the name of your client workspace.

WARNING

When you run bule, it creates a JavaScript file which contains your file paths and names. If those are sensitive, be careful where you put these generated files and who you share them with.

More Repositories

1

gitjour

Serve git and advertise with bonjour
Ruby
281
star
2

sor-tutorial

Scotland on Rails Charity tutorial
C
28
star
3

resque-sharp

.NET implementation of Resque, aiming to be fully compatible with the Ruby version
C#
28
star
4

sigsurv

A stupid gem that provides a visual indicator of Ruby code complexity in the current directory.
Ruby
15
star
5

activemodel

Moved ActiveModel out of Rails for various reasons (and just for now)
Ruby
15
star
6

irb_plugin

Trivial irb plugin loader
Ruby
14
star
7

chad.github.io

This is where I put my awesome GitHub web page
HTML
9
star
8

batch_api_server

Service for Batch API requests ala arsduo/batch_api
Scala
9
star
9

abstracts

Abstracts for talks I may give or have given
6
star
10

ruby19onrails234

ruby 1.9 Rails monkey patches
Ruby
5
star
11

rubyauth

RubyGems.org/RubyForge OAuth Provider
Ruby
5
star
12

rubygems-desc

Gem plugin to quickly describe a gem
Ruby
4
star
13

plzaskus

plz, ask us
Ruby
4
star
14

HTTParty.NET

An attempt at a .NET clone of John Nunemaker's HTTParty Ruby library, because doing HTTP in .NET is harder than it should be.
C#
4
star
15

microservices-group-talk

4
star
16

hubsync

Synchronize your GitHub repositories for offline viewing
Ruby
4
star
17

shaikatah

Playing with MacRuby. Nothing to see here.
Ruby
3
star
18

vimstuff

Various Vim config (probably not interesting to you)
3
star
19

flogtime

Flog score over time
Ruby
2
star
20

makeymakey

Makes makefiles (and maybe other kinds of build files)
Ruby
2
star
21

echo

BlueEyes echo service
Scala
2
star
22

talks

Ruby
2
star
23

runchat

Playing with Android
Java
2
star
24

gs

gs
Ruby
2
star
25

protagonizer

Keeping track of all of the characters in the play
Clojure
2
star
26

bikeshed

TODO: one-line summary of your gem
Ruby
2
star
27

eventpump

Example akka app
Scala
1
star
28

hockeylog

Ruby
1
star
29

watership

DO NOT USE. Wrapper around the Bunny gem to handle some connection issues.
Ruby
1
star
30

rooms

Chat with everyone on github
1
star
31

helloplay

Playing with Play deployment
Scala
1
star
32

octopress

JavaScript
1
star
33

post-librato-counts

Post a librato count metric from a Haskell program.
Haskell
1
star
34

music

music
Ruby
1
star
35

chadtest

Just playing
1
star
36

dl

An attempt to write a code-only simple Android app with no unnecessary boilerplate or cruft.
Java
1
star
37

throwaway

JavaScript
1
star