AOP metrics ant task
Description
Ant task is a prefered way to launch aopmetrics metrics suite. You
can also use the command line described in a separate page.
The task is using AspectJ compiler. It launches an internal build of sources specified
by <fileset> or lst config file.
Compiled class files are stored in the workdir.
Then, Java and AspectJ syntax trees are analysed and
all supported metrics are generated.
Finally, aopmetrics exports measurements' results to specified
resultfile (or writes to the standard output, by default).
Currently, aopmetrics provides two export file formats:
- Simple XML-based format. Useful for an automatic processing (scripts, programs)
or transformations (to HTML). An example is shown below.
<project name="aop-metrics">
<package name="org.tigris.aopmetrics.metrics">
<type kind="class" name="DepthOfInheritanceTree">
<metric name="LOCC" value="39"/>
<metric name="WOM" value="3"/>
<metric name="DIT" value="0"/>
[...]
</type>
[...]
<metric name="NOT" value="38"/>
<metric name="Ce" value="52"/>
<metric name="Ca" value="1"/>
[...]
</package>
<package name="org.tigris.aopmetrics">
[...]
</package>
[...]
</project>
XLS format (Ms Excel). Useful for a human analysis. Can be viewed by
Gnumeric. Here is
a sample (metrics' results for the aopmetrics project).
Parameters
| Attribute |
Description |
Required |
| configfile |
Specifies a config file (.lst), which is commonly used in AspectJ projects. The config
file contains paths of all source files (separated by newline). |
Yes, unless nested fileset is used. |
| export |
Specifies an export type. Currently only 'xml' and 'xls' types are supported. |
No, default: xml. |
| resultsfile |
Specifies a file, where the aopmetrics writes results of all measurements. If the file
is not specified, then the results will be printed to the standard output. |
No |
| workdir |
Specifies a directory, where aopmetrics stores temporary files (compiled sources
by AspectJ compiler). If the directory doesn't exist, then the task creates it. |
Yes |
| sourcelevel |
Specifies a source compiliance level. The value is passed to the AspectJ compiler.
Currently, the compiler supports '1.3', '1.4' and '1.5' levels. |
No, default: 1.4. |
| verbose |
Specifies a verbosity level. The attribute is useful for debugging.
Currently, 'normal', 'info' and 'debug' levels are supported. |
No, default: normal. |
| charset |
Specifies a character encoding of given sources. |
No. |
Nested elements
fileset
Nested fileset elements can be used for specifying source files for measurements.
This is simpler than using AspectJ config file (.lst), when you don't use it in your project.
Usually this element is identical to filesets in javac or ajc
tasks.
classpath
Nested classpath elements can be used for specifying user class files.
Usually this element is identical to classpaths in javac or ajc
tasks.
Examples
Example of the aopmetrics task's definition:
<path id="cp.aopmetrics">
<fileset dir="tools/aopmetrics">
<include name="*.jar" />
</fileset>
</path>
<taskdef name="aopmetrics" classname="org.tigris.aopmetrics.AopMetricsTask">
<classpath refid="cp.aopmetrics"/>
</taskdef>
Specifying source files using a nested fileset:
<path id="cp.compile">
<fileset dir="lib">
<include name="*.jar" />
</fileset>
</path>
<aopmetrics workdir="build/workdir" sourcelevel="1.5"
resultsfile="build/aop-metrics-results.xml">
<fileset dir="src" includes="**/*.java"/>
<fileset dir="testsrc" includes="**/*.java"/>
<classpath refid="cp.compile"/>
</aopmetrics>
Specifying source files using a config file. Results are printed to the standard output:
<aopmetrics workdir="build/workdir" configfile="without-tracing.lst">
<classpath refid="cp.compile"/>
</aopmetrics>
For more a complex example see aopmetrics old build file.