 ------
 Usage
 ------
 Maria Odea Ching
 ------
 2017-11-11
 ------

 ~~ 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.

Usage

  The PMD plugin generates PMD and CPD reports using the PMD code analysis tool.

  To include a report with default rule sets and configuration in your project site, set the following in the
  <<<\<reporting\>>>> section of your POM:

+-----+
<project>
  ...
  <reporting>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-pmd-plugin</artifactId>
        <version>${project.version}</version>
      </plugin>
    </plugins>
  </reporting>
  ...
</project>
+-----+

  You can also explicitly execute the PMD plugin and generate the same report by setting the plugin in the
  <<<\<build\>>>> section of your POM as shown below:

+-----+
<project>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-pmd-plugin</artifactId>
        <version>${project.version}</version>
      </plugin>
    </plugins>
  </build>
  ...
</project>
+-----+


Configuration

  The PMD and CPD reports share the same configuration.  For example, the following tells Maven to run the PMD
  and CPD report as part of the site report generation.

  The reports will link directly to the cross-referenced source if you enable this with the <<<linkXRef>>> parameter.
  See the {{{http://maven.apache.org/plugins/maven-jxr-plugin/}JXR plugin}} for more details.

  If your source uses a non-default encoding, you can use the <<<sourceEncoding>>> parameter to tell Maven which
  encoding to use when reading the java source.  Note also the ability to exclude source which you want
  to ignore.

  You can configure the minimum code size which trips the CPD.  The default of <<<100>>> tokens corresponds
  to approximately 5-10 lines of code.

  Since PMD parses the Java source, it needs to know which Java version to use. CPD's default is <<<1.9>>>.
  The following is a possible configuration:

+-----+
<project>
  ...
  <reporting>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-pmd-plugin</artifactId>
        <version>${project.version}</version>
        <configuration>
          <linkXref>true</linkXref>
          <sourceEncoding>utf-8</sourceEncoding>
          <minimumTokens>100</minimumTokens>
          <targetJdk>1.5</targetJdk>
          <excludes>
            <exclude>**/*Bean.java</exclude>
            <exclude>**/generated/*.java</exclude>
          </excludes>
          <excludeRoots>
            <excludeRoot>target/generated-sources/stubs</excludeRoot>
          </excludeRoots>
        </configuration>
      </plugin>
    </plugins>
  </reporting>
  ...
</project>
+-----+
