nity4j.sanity4j.1.8.1.source-code.sanity4j-qa-test.xml Maven / Gradle / Ivy
<?xml version="1.0"?> <!-- ******************************************************************* ** ** NAME ** sanity4j-qa-test.xml ** ** PURPOSE ** This file is an XML (eXtensible Markup Language) file used to define ** an Apache ANT (http://ant.apache.org) library. ** ** This set of macros perform code quality assurance tests using ** various third party tools. ** ** USAGE ** Ensure that you are running at least Java 1.5, as some of the tools ** don't work on 1.4 or earlier VMs. ** ** Within a project's build.xml file, include the following line: ** ** <typedef ** resource ="sanity4j-qa-test.xml" ** classpath ="sanity4j.jar"/> ** ** MACROS ** sanity4j.run - Runs the QA tools against a project ** ** AUTHOR ** Yiannis Paschalidis, 2008. ** ******************************************************************** --> <antlib> <!-- *************************************************************** ** TYPE DEFINITIONS **************************************************************** --> <!-- No types --> <!-- *************************************************************** ** TASK DEFINITIONS **************************************************************** --> <!-- *************************************************************** ** This runs the QA tools against a project and produces the raw ** output that is used to generate the reports. Projects should use ** the sanity4j.run macro instead. ** ** The QA tools are run using java code rather than a macro as ** - the ant Tasks for tools use different types (e.g. not all allow FileSets) ** - Most tools don't support multiple source directories ** - It's less of a pain for an end user to set a few top-level directories ** and let the task figure out what the source/class paths should be. ** **************************************************************** --> <typedef name="sanity4j.runtask" classname="com.github.sanity4j.ant.taskdef.RunQA"/> <!-- *************************************************************** ** MACRO DEFINITIONS **************************************************************** --> <!-- *************************************************************** ** This runs the QA tools against a project and produces reports that ** can be published on a webserver. ** ** Attributes: ** ** products.dir ** ** The location of the products vob containing the QA tools ** (FindBugs, PMD, CheckStyle, etc.) ** ** report.dir ** ** The report output directory. Subdirectories will be created ** for each type of report. ** ** cobertura.data.file [optional] ** ** A cobertura data file (e.g. cobertura.ser) if you want to ** include unit testing coverage data in your report. ** ** summary.data.file [optional] ** ** The location of a (persitent) file to store summary data, if ** you want to include trend graphs in your report. ** ** include.tool.output [optional] ** ** If set to "true", the raw tool output is also copied to the ** report directory. ** ** java.runtime [optional] ** ** The location of the java executable; 1.5 or later. ** ** Elements: ** ** source.path ** ** This element accepts nested Paths pointing to ** the location of *this* project's source only. ** If you have multiple source directories contained within ** a main directory, you can just list the main directory ** here - the task will search for all source directories. ** ** class.path ** ** This element accepts nested Paths pointing to ** the location of *this* project's built classes/jars only ** ** library.path ** ** This element accepts nested Paths pointing to ** the location of jars/classes that this project depends on. ** Don't use the whole products_vob, use the products directory ** in the project that only contains symlinks to the libaries ** that the project depends on to compile. ** ** EXAMPLE: ** ** <sanity4j.run ** products.dir="${component.rootdir}/../products" ** report.dir="${build.dir}/reports"> ** ** <source.path> ** <path path="${component.rootdir}"/> ** </source.path> ** <class.path> ** <path path="${build.dir}/libs"/> ** </class.path> ** <library.path> ** <path> ** <fileset dir="${component.rootdir}/products"> ** <exclude name="WebSphere_6.0/**"/> ** </fileset> ** </path> ** </library.files> ** </sanity4j.run> ** **************************************************************** --> <macrodef name="sanity4j.run"> <attribute name="products.dir"/> <attribute name="report.dir"/> <attribute name="cobertura.data.file" default=""/> <attribute name="summary.data.file" default=""/> <attribute name="java.runtime" default="java"/> <attribute name="include.tool.output" default="false"/> <element name="source.path"/> <element name="class.path"/> <element name="library.path"/> <sequential> <!-- delete all old data/reports --> <delete dir="@{report.dir}" failonerror="false" /> <mkdir dir="@{report.dir}" /> <!-- generate the raw output --> <echo message="Performing QA analysis"/> <sanity4j.runtask productsDir="@{products.dir}" reportDir="@{report.dir}" coberturaDataFile="@{cobertura.data.file}" summaryDataFile="@{summary.data.file}" javaRuntime="@{java.runtime}" includeToolOutput="@{include.tool.output}"> <sourcepath> <source.path/> </sourcepath> <classpath> <class.path/> </classpath> <librarypath> <library.path/> </librarypath> </sanity4j.runtask> </sequential> </macrodef> </antlib>