Freeze the VM after running it.

This is the first step in getting rid of global data and making sure analysis
classes (and basically everything else that runs after the VM has been
executed) doesn't mess around with the VM itself.

Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>
Moved the global scope to the VM.

Instead of using RubyLint.global_scope all code now uses
RubyLint::VirtualMachine.global_scope.

Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>
Removed duplicate node -> definition code.

Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>
Include NOTE tags in `rake todo`.

Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>
Documented RubyLint::VirtualMachine.

Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>
Build method receivers in the VM.

Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>
Documentation for the definition builders.

Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>
Removed the sclass definition builder.

This builder class is no longer used.

Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>
Updated the Markdown based documentation.

Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>
Refactored the CLI and setting options.

Instead of using Ruby based configuration files ruby-lint now uses simple YAML
files.

Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>
Re-organized method tests + tests for patching.

The new test checks if the VM allows code to patch global constants (e.g.
String).

Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>
Ability to customize analysis output destination.

Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>
Tests for the commandline interface.

Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>