Running mete-tools

This document describes the various arguments for running mete-tools. It assumes that the application exists as a jar file mete-tools.jar. It works only from the command line.

Requirements

mete-tools is compiled with a 1.5 compiler and needs bcel-5.2 and jgrapht-jdk1.5 in the same directory as mete-tools.jar.

Summary

    java <arguments> <jvm specs> -jar mete-tools.jar <file specification>

The <jvm specs> are mainly need to specify the heap size. Anything less than 1G is likely to not be enough. For some applications, even 1G won't do it.

The <file specification> is a path specifying where the code to be analysed is to be found. It can specify a single file or a directory. Exactly what is analysed depends on the <arguments>.

Examples of use can be found in the detailed description of the processing options, and also here.

Arguments

All arguments other than the files to be analysed are specifed using system properties (that is, the -D flag).

The properties are:
source This is a required argument specifying what is actually being analysed. Useful values are:
Classfiles
Analyse class files. The file specification can be a single .class file, or a directory. If a directory, then all .class files within it (and all subdirectories, recursively) will be analysed.
Jarfiles
Analyse jar files. The file specification can be a single .jar file, or a directory. If a directory, then all .jar files within it (and all subdirectories, recursively)
Corpus
Analyse an application in the Qualitas Corpus. The file specification should indicate where the application is, and what is analysed is all jar files in the bin directory. The application identification and source packages is determined from the .properties file.
There are other possibilities, but they aren't to be trusted at the moment.
processing This is a required argument specifying what kind of analysis to perform. There are many possible values, some of them may actually be useful. See the contents for what's been documented.
format This is a required argument specifying what format the output should be provided in. The most reliable format is 'Text', however some forms of processing will also provide 'Html' output. Other legal values aren't to be trusted.
packages This is a comma separated list of strings that are intended to identify those modules that are considered to be in the application. It is not required if the source is 'Corpus', but is required otherwise.
appID This is a string that provides some identification of the application (typically it's name) for output. It is not needed when the source is 'Corpus' (as it can be determined from the .properties file) but is otherwise.
evidence This is an optional argument (default value 'None') specifying how much evidence to provide to support the claimed measurements. This is useful to examine interesting measurements in more detail ("How is it possible that a class has 237 fields? What class is that?!") Valid values are:-
None
Do no provide anything other than the measurements.
Immediate
For each measurement, indicate which entities (typically modules) have that measurement.
Raw
Provide more detail. This is named to indicate that the detail is probably the raw data that is then processed in some way to get the measurements. However it needn't be - it's very processing dependent.
warnings This is an optional argument (default value 'All') specifying what warnings to report. There are a number of places where the analysis has to give up (e.g., reference to classes by dead code, and those classes haven't been provided). Such situations are reported. This is probably of dubious worth. Best to use 'None'. ('Some' is another option)
options This is a string that provides a means to specify processing-specific options. Details as to formats are given in the respective descriptions of processing possibilities. If the string is exactly "help", it will give processing-specific help (which hopefully says what options are available).
usage This will give a summary of the arguments.
help More details on how to use mete-tools, some of which may actually be still current.
version Prints the version of mete-tools and stops.