JavaNCSS - Usage

Usage

Make sure javancss-x.y/lib/javancss.jar is added to your CLASSPATH.

Then to start JavaNCSS type: java javancss.Main. As an alternative you can edit and use either the javancss.bat or javancss file. Just change the JAVA_HOME and CLASSPATH variables according to your system.

Now for the first run type in (being in the javancss-x.y directory itself):

./bin/javancss -gui src/test/resources/*.java

or

./bin/javancss -gui -recursive src/test/resources/

If no parameter is provided for JavaNCSS, standard input (stdin) is used as the input stream. Multiple java source files can be specified in the command line. If a '@' char is put in front of a file name, then not this file will be measured but its content will be interpreted as a list of Java source files that shall be counted. The '@' functionality can be used recursively inside this file as well. Wild cards are not supported yet. (If the operating system processes the command line for the program, then you are lucky. Windows doesn't do that.) Instead use something like cat *.java | javancss or type *.java | javancss. Of course, this can lead to ambiguities when mixing source files that belong to a package with files that doesn't.

If no option is given, JavaNCSS only calculates the total non commenting source statements (NCSS) of the given input.

JavaNCSS can also be used conveniently via Ant. For details have a look at the JavaNCSS Ant Task page, especially at the example at the bottom of that page. You can also have a look at the build.xml file that gets distributed with JavaNCSS itself (see "javancss" target).

Synopsis

javancss [-option] stdin | [@]source_file*

Options

-ncss
This is the default which counts total non commenting source statements and nothing else.
-package
Collects the metrics data for each package. This is the most top level view javancss offers for your projects. Take a look here what javancss prints out for the Sun JDK 1.1.5 java.* source tree.
-object
Collects the metrics data for each class/interface. For an example program output, look here.
-function
Collects the metrics data for each function. For an example program output, look here.
-all
The same as '-package -object -function'.
-gui
Opens a gui to presents the '-all' output in tabbed panels.
-xml
Output in xml and not in ascii format. Additional option '-all' is recommended.
-out file
Output goes normally to standard output, with this option an output file can be specified.
-recursive
Java file in sub directories will be parsed as well. Be careful not to get caught in an endless loops because some Unix links.
-version
Prints out the version of JavaNCSS.
-help
Prints out some basic information.

XSLT Stylesheets

JavaNCSS comes with some XSLT stylesheet (javancss-x.y/xslt/javancss2text.xsl and javancss-x.y/xslt/javancss2html.xsl). These stylesheets can be used to convert XML output from JavaNCSS to ASCII or HTML output. In case of the ASCII output this is of course quite boring and much slower as JavaNCSS creates the identical output by default anyway. But you can use this stylesheet (or any of the others shipped as well) as a starting point to have your own presentation format. You could also change sort rules (e.g. sort by NCSS) or add your own filters to the output (e.g. show only methods with NCSS greater some limit).

Assuming you have e.g. Xalan2 installed and somewhere in your path is a shell script named 'xslt' that knows how to invoke Java with the Xalan 2 main processor class (org.apache.xalan.xslt.Process), here is how you can make use of JavaNCSS' XSLT stylesheet:

cd javancss-x.y
javancss -all -xml -recursive src > example.xml
xslt -in example.xml -xsl xslt/javancss2text.xsl

Have fun. If you create a useful new stylesheet for JavaNCSS, I would be happy to get a copy of it.

SVG Output

Yves Coene <Yves.Coene@spacebel.be> has donated some XSLT stylesheets which produce beautiful SVG charts out of JavaNCSS's XML output.

Use e.g. batik as an SVG viewer and have a look at the example files in directory xslt/svg under the JavaNCSS home directory.

Here is an example SVG chart file.

Generation of SVG files is similar to using other XSLT stylesheets as described above.