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 |
![](charts/voidmeter-r0.png)
![](charts/voidmeter-r0-trailing.png)