Static analysis for Ruby and Rails

Excellent finds the nasty lines in your code. It implements a comprehensive set of checks for possibly buggy parts of your app that would otherwise make it into your repo and eventually to the production server.


Assume you have the following class definition,

class ShoppingBasket < ActiveRecord::Base

  def initialize(items = [])
    self.items = items


then Excellent will report the problems in this piece of code:

$ excellent shopping_basket.rb

  Excellent result:

    * Line   1: ShoppingBasket does not validate any attributes.
    * Line   1: ShoppingBasket defines initialize method.
    * Line   1: ShoppingBasket does not specify attr_accessible.

  Found 3 warnings.


Excellent is available as a gem:

$ gem install excellent

Get involved!

Have a look at the Wiki that explains all the checks that are currently implemented. If you miss a check, please fill an issue on github.

You can also fork Excellent on github (you might want to have a look at the RDoc then).

Copyright/ Acknowledgement

Excellent is developed by and © Marco Otte-Witte. It is released under the MIT License and inspired by the great gems roodi, reek and flog.