blob: 0086a4b838eefcd4435b5b01eedc9f0203c99df8 [file] [log] [blame]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~ Licensed to the Apache Software Foundation (ASF) under one or more
~~ contributor license agreements. See the NOTICE file distributed with
~~ this work for additional information regarding copyright ownership.
~~ The ASF licenses this file to You under the Apache License, Version 2.0
~~ (the "License"); you may not use this file except in compliance with
~~ the License. You may obtain a copy of the License at
~~
~~ http://www.apache.org/licenses/LICENSE-2.0
~~
~~ Unless required by applicable law or agreed to in writing, software
~~ distributed under the License is distributed on an "AS IS" BASIS,
~~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~~ See the License for the specific language governing permissions and
~~ limitations under the License.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-----
The Report Task
-----
Report Task
The Report task is the heart of the Apache Rat Ant Task Library, it
runs Rat on a given set of resources and generates the report.
The task can work on any Ant
{{{http://ant.apache.org/manual/Types/resources.html}resource or
resource collection}} and the usual Ant selectors can be applied to
restrict things even further.
Reports can use Rat's internal XML or plain text format or be styled
by a custom XSLT stylesheet.
It is possible to define custom matchers for licenses not directly supported
by Rat via nested elements to the Report task.
Attributes of the Task
*-------------------------*-------------------------------+
|Name |Description |
*-------------------------*-------------------------------+
| reportFile | Name of the file to write the report to. If ommitted the report will be sent to Ant's logging system instead.
*-------------------------*-------------------------------+
| format | The format to use for the report.
| | Choices are <<<xml>>> for Rat's XML format,
| | <<<plain>>> for plain text using Rat's built-in stylesheet,
| | <<<styled>>> transforms the XML output using the given stylesheet. The stylesheet nested element must be set as well if this attribute is used.
| | Defaults to <<<plain>>>|
*-------------------------*-------------------------------+
| addDefaultLicenseMatchers | Whether to use Rat's built-in set of license matchers in addition to those specified as nested elements.
| | Boolean, defaults to <<<true>>>.|
*-------------------------*-------------------------------+
| addLicenseHeaders | Whether to add license headers to files that don't have one.
| | Choices are <<<true>>>, <<<false>>> and <<<forced>>> where <<<forced>>> would add a license even if Rat already found one.
| | Boolean, defaults to <<<false>>>.|
*-------------------------*-------------------------------+
| copyrightMessage | If Rat is adding license headers: Sets the optional copyright message. This value is ignored, if no license headers are added.
*-------------------------*-------------------------------+
Nested Elements
* Resources
The files to be checked by Rat are specified as nested
{{{http://ant.apache.org/manual/Types/resources.html} resource
(collection)(s)}}, the most basic one would probably be a
{{{http://ant.apache.org/manual/Types/fileset.html} fileset}}.
For example the following would check all Java files in the
<<<src>>> directory.
---
<rat:report>
<fileset dir="src" includes="**/*.java"/>
</rat:report>
---
* Stylesheet
If the <<<format>>> attribute has been set to <<<styled>>> the XSLT
stylesheet to apply is specified as a nested resource element. For
example
---
<rat:report format="styled" reportFile="rat-report.html">
...
<stylesheet>
<file file="my/rat-xml-2-html.xslt"/>
</stylesheet>
</rat:report>
---
* License Matchers
Any defined Ant type that implements the <<<IHeaderMatcher>>>
interface can be used as nested element to provide a matcher to Rat.
License matchers are the pieces that make Rat identify the license
of a document.
The Ant library already contains
{{{./types.html#License_Matchers}types for the built-in license
matchers}} but you can define your own classes for
{{{./examples/custom.html}custom matchers}}.
There are two scenarios where you'd use a nested element to define
license matchers to Rat. The more common one would be if you wanted
Rat to detect and identify a license that isn't supported out of the
box - in this case you will want to write a custom matcher.
The second case would be if you want to only detect a subset of
licenses known to Rat for some reason. For example if the only
license you want to detect was the Apache License 2.0 you'd first
disable the built-in matchers by setting
<<<addDefaultLicenseMatchers>>> to false and then explicitly add the
built-in <<<asl20>>> matcher
---
<rat:report addDefaultLicenseMatchers="false">
<rat:asl20/>
</rat:report>
---
* Approved License Families
Any defined Ant type that implements the <<<ILicenseFamily>>>
interface can be used as nested element to provide a license family
as an approved license to Rat.
The Ant library already contains
{{{./types.html#License_Matchers}types for the built-in license families}}
but you can define your own classes for {{{./examples/custom.html}custom
families}}. In most cases
{{{./types.html#approvedLicense}<<<approvedLicense>>>}} should be
sufficient, though.