panopticon:

  1. An optical instrument or device; a mechanical peep-show offering views of European capitals, etc., for public entertainment.
  2. A circular prison with cells arranged around a central well, from which inmates can be observed at all times.
  3. A place where all is on display; a public exhibition hall or showroom.

source: Oxford English Dictionary

panopticode:

  1. A project dedicated to making code metrics so widely understood, valuable, and simple that their use becomes ubiquitous, thus raising the quality of software across the industry.

    The Panopticode project provides a set of open source tools for gathering, correlating, and displaying code metrics.

The Good

There is a rich selection of tools available to the Java community for gathering code metrics. These tools can be invaluable for tasks such as:

The Bad and The Ugly

While these tools are powerful they suffer from a number of problems such as:

The Solution

The Panopticode project was conceived to address all of the concerns above.

It provides a set of Ant build files to simplify configuring many of the most popular tools. Setting up a project can be as simple as:

  1. Download and extract Panopticode in your project's home directory
  2. Copy the PROJECT_HOME/panopticode/build-example.xml file to PROJECT_HOME/build.xml
  3. edit the PROJECT_HOME/build.xml to specify your classpath and source code directory.
  4. (optional) Select your source code management tool in the PROJECT_HOME/panopticode/panopticode-imports.xml

The whole thing can be easily done in 5 minutes. If you have a fast internet connection you could probably pull it off in 2 minutes :)

Now when you run your build using the metrics target you will get:

NOTE: In the current version (0.1) Only JDepend, Emma, and JavaNCSS metrics are integrated into the panopticode.xml file. However, all other metrics listed are gathered.

In the time you have spent reading this you could already be using Panopticode, so why don't you go download and try it. After you've played with it a bit you might want to check out the documentation to learn how to customize and extend Panopticode.

If you have any questions or ideas for Panopticode, or need any help, please let us know.


Sponsors:

ThoughtWorks - Project Lead's Employer

ThoughtWorks OpenSource Logo

SourceForge - Project Hosting

SourceForge.net Logo