VoidMeter

< < <

VoidMeter is mainly used to generate the result artifacts for Tabs versus Spaces. The program is written for JRuby and uses two external dependencies: the JSON gem and the JFreeChart library for charting. The source code is released under the terms of the GNU General Public License version 2. The whole thing was only tested under a recent GNU/Linux distribution.

Example

In the following example, VoidMeter is used to inspect its own source code:

$ export JAVA_HOME=/opt/jdk-1.6.0
$ export PATH=$JAVA_HOME/bin:$PATH

$ export JRUBY_HOME=/opt/jruby-1.6
$ export PATH=$JRUBY_HOME/bin:$PATH

$ java -version
java version "1.6.0_24"
Java(TM) SE Runtime Environment (build 1.6.0_24-b07)
Java HotSpot(TM) Server VM (build 19.1-b02, mixed mode)

$ jruby --1.9 --version
jruby 1.6.0 (ruby 1.9.2 patchlevel 136) (2011-03-15 f3b6154) (Java HotSpot(TM) Client VM 1.6.0_24) [linux-i386-java]

$ jruby --1.9 -S gem install json
Successfully installed json-1.5.1-java
1 gem installed

$ cd /tmp
$ wget http://www.vakuumverpackt.de/voidmeter/VoidMeter-r0.tar.gz
$ tar -zxvf VoidMeter-r0.tar.gz
VoidMeter-r0/
...
VoidMeter-r0/README

$ cd VoidMeter-r0
$ jruby --1.9 -J-cp 'jfreechart/*' test/test.rb
...
7 tests, 59 assertions, 0 failures, 0 errors, 0 skips
...

$ vim VoidMeter.rb
...

$ cat VoidMeter.rb
# encoding: utf-8

require_relative 'lib/Projects'

files = VoidMeter::Files.new
files.add_file(extension: '.rb', block_comment: { open: '=begin', close: '=end' })
files.add_file(extension: '.html')

project = VoidMeter::Project.new(name: 'VoidMeter', files: files, encoding: 'utf-8')
project.add_release(version: 'r0', path: '/tmp/VoidMeter-r0')

projects = VoidMeter::Projects.new
projects.add_project(project)
projects.meter
projects.render

$ jruby --1.9 -J-cp 'jfreechart/*' VoidMeter.rb
VoidMeter::Meter#meter!: project.name == VoidMeter
VoidMeter::Meter#meter!: release.version == r0
VoidMeter::ChartRenderer#render: project.name == VoidMeter
VoidMeter::ChartRenderer#render: release.version == r0
VoidMeter::HtmlRenderer#render: project.name == VoidMeter

$ ls -1 results
./
../
charts/
VoidMeter.html
VoidMeter.json
VoidMeterProjectPanel.html

The generated result artifacts:

Lines indented by
Version Files Lines Not Tabs Spaces Both Block comment Trailing
r0 13 1082 401 681 0 0 0 0

Download