Codecheckers check java source against some ruleset and output all violations against this ruleset. The rules may be classified in categories and/or priorities/severities.
The codecheckers parse java source or class files and produce their results in either xml-files flat-file or in some directory structure. Metacheck reads and parses these results and writes it to a common jcsc-like structure.
Metacheck implements for each codechecker a corresponding 'stylist' java class. This stylist reads and parses the results from the codechecker, integrates these results in metacheck and for some codechecker reads some additional information like rule categories or descriptions.
For usage from an ant build script ant-tasks are implemented, they can be used in an ant build script ant after a taskdef like this:
<taskdef name="lint4j-style" classname="nl.romme.tools.metacheck.ant.Lint4jStylistTask"/>
<taskdef resource="metachecktask.properties"/>
Finally a description of report-style is provided.
Checkstyle, findbugs, pmd and revjava (can) generate their results in an xml format. These results can be used as input to their metacheck-style tasks: For example:
<checkstyle-style todir="target/metacheck/checkstyle" inxml="checkstyle-report.xml"/>
Cpd and lint4j generate their results in an flat file format. These results can be used as input to their metacheck-style tasks, for example:
<cpd-style todir="target/metacheck/cpd" intxt="cpd-report-file.txt"/>
Hammurapi, jcsc and qjpro generate their results in a directory containing multiple files. These results can be used as input to their metacheck-style tasks, for example:
<qjpro-style todir="target/metacheck/qjpro" indir="qjpro-output-directory"/>
Finally the report-style task can be used to run style tasks for multiple style tasks, it gathers information from the tasks and generates the meta report. Report-style has one parameter 'todir' and for each code checker a parameter that specifies where it's codecheckers results are to be found. For example:
<report-style todir="target/metacheck" jcsc="jcsc-output-directory" pmd="pmd-report.xml" lint4j="lint4j-report.txt" />