RAT (Release Audit Tool) results

The following document contains the results of RAT (Release Audit Tool).

*****************************************************
Summary
-------
Generated at: 2013-03-04T22:03:05+01:00
Notes: 0
Binaries: 0
Archives: 0
Standards: 136

Apache Licensed: 108
Generated Documents: 0

JavaDocs are generated and so license header is optional
Generated files do not required license headers

28 Unknown Licenses

*******************************

Unapproved licenses:

  src/it/mpmd-138/invoker.properties
  src/it/mpmd-138/mod-1/src/main/java/test/MyClass.java
  src/it/mpmd-138/mod-2/src/main/java/test/MyClass.java
  src/it/mpmd-138/mod-3/src/main/java/test/MyClass.java
  src/it/mpmd-138/mod-3/src/main/java/test/sub/MyClass.java
  src/it/mpmd-138/mod-4/src/main/java/test/MyClass.java
  src/it/mpmd-138/mod-4/src/main/java/test/OtherClass.java
  src/it/mpmd-138/mod-4/src/main/java/test/sub/MyClass.java
  src/it/mpmd-142/invoker.properties
  src/it/mpmd-142/src/main/java/test/MyClass.java
  src/it/MPMD-163/invoker.properties
  src/it/MPMD-163/src/main/java/com/mycompany/app/App.java
  src/it/MPMD-163/src/main/java/com/mycompany/app/Foo.java
  src/it/mpmd-89/invoker.properties
  src/it/mpmd-89/verify.bsh
  src/it/multi-module/mod-1/src/main/config/pmd/latin-1.xml
  src/it/multi-module/mod-1/src/main/config/pmd/utf-8.xml
  src/it/multi-module/mod-1/src/main/java/test/MyClass.java
  src/it/multi-module/mod-2/rulesets/basic.xml
  src/it/multi-module/mod-2/src/main/java/test/MyClass.java
  src/it/multi-module/mod-3/src/main/config/pmd/abs.xml
  src/it/multi-module/mod-3/src/main/config/pmd/rel.xml
  src/it/multi-module/mod-3/src/main/java/test/MyClass.java
  src/it/multi-module/mod-4/src/main/java/test/MyClass.java
  src/it/multi-module/verify.bsh
  src/main/mdo/cpd.mdo
  src/main/mdo/pmd.mdo
  src/test/resources/unit/default-configuration/js/Sample.js

*******************************

Archives:

*****************************************************
  Files with Apache License headers will be marked AL
  Binary files (which do not require AL headers) will be marked B
  Compressed archives will be marked A
  Notices, licenses etc will be marked N
  AL    pom.xml
 !????? src/it/mpmd-138/invoker.properties
  AL    src/it/mpmd-138/mod-1/pom.xml
 !????? src/it/mpmd-138/mod-1/src/main/java/test/MyClass.java
  AL    src/it/mpmd-138/mod-2/pom.xml
 !????? src/it/mpmd-138/mod-2/src/main/java/test/MyClass.java
  AL    src/it/mpmd-138/mod-3/pom.xml
 !????? src/it/mpmd-138/mod-3/src/main/java/test/MyClass.java
 !????? src/it/mpmd-138/mod-3/src/main/java/test/sub/MyClass.java
  AL    src/it/mpmd-138/mod-4/pom.xml
 !????? src/it/mpmd-138/mod-4/src/main/java/test/MyClass.java
 !????? src/it/mpmd-138/mod-4/src/main/java/test/OtherClass.java
 !????? src/it/mpmd-138/mod-4/src/main/java/test/sub/MyClass.java
  AL    src/it/mpmd-138/pom.xml
  AL    src/it/mpmd-138/verify.groovy
 !????? src/it/mpmd-142/invoker.properties
  AL    src/it/mpmd-142/pom.xml
 !????? src/it/mpmd-142/src/main/java/test/MyClass.java
 !????? src/it/MPMD-163/invoker.properties
  AL    src/it/MPMD-163/pom.xml
 !????? src/it/MPMD-163/src/main/java/com/mycompany/app/App.java
 !????? src/it/MPMD-163/src/main/java/com/mycompany/app/Foo.java
  AL    src/it/MPMD-163/verify.groovy
  AL    src/it/mpmd-80-included/pom.xml
  AL    src/it/mpmd-80-included/verify.groovy
  AL    src/it/mpmd-80-not-included/pom.xml
  AL    src/it/mpmd-80-not-included/verify.groovy
 !????? src/it/mpmd-89/invoker.properties
  AL    src/it/mpmd-89/pom.xml
  AL    src/it/mpmd-89/src/main/pmd/ruleset.xml
  AL    src/it/mpmd-89/src/test/java/it/NoTestsHere.java
  AL    src/it/mpmd-89/src/test/java/it/TestSupport.java
 !????? src/it/mpmd-89/verify.bsh
  AL    src/it/multi-module/mod-1/pom.xml
 !????? src/it/multi-module/mod-1/src/main/config/pmd/latin-1.xml
 !????? src/it/multi-module/mod-1/src/main/config/pmd/utf-8.xml
 !????? src/it/multi-module/mod-1/src/main/java/test/MyClass.java
  AL    src/it/multi-module/mod-2/pom.xml
 !????? src/it/multi-module/mod-2/rulesets/basic.xml
 !????? src/it/multi-module/mod-2/src/main/java/test/MyClass.java
  AL    src/it/multi-module/mod-3/pom.xml
 !????? src/it/multi-module/mod-3/src/main/config/pmd/abs.xml
 !????? src/it/multi-module/mod-3/src/main/config/pmd/rel.xml
 !????? src/it/multi-module/mod-3/src/main/java/test/MyClass.java
  AL    src/it/multi-module/mod-4/pom.xml
 !????? src/it/multi-module/mod-4/src/main/java/test/MyClass.java
  AL    src/it/multi-module/pom.xml
 !????? src/it/multi-module/verify.bsh
  AL    src/it/settings.xml
  AL    src/main/java/org/apache/maven/plugin/pmd/AbstractPmdReport.java
  AL    src/main/java/org/apache/maven/plugin/pmd/AbstractPmdViolationCheckMojo.java
  AL    src/main/java/org/apache/maven/plugin/pmd/CpdReport.java
  AL    src/main/java/org/apache/maven/plugin/pmd/CpdReportGenerator.java
  AL    src/main/java/org/apache/maven/plugin/pmd/CpdViolationCheckMojo.java
  AL    src/main/java/org/apache/maven/plugin/pmd/PmdFileInfo.java
  AL    src/main/java/org/apache/maven/plugin/pmd/PmdReport.java
  AL    src/main/java/org/apache/maven/plugin/pmd/PmdReportListener.java
  AL    src/main/java/org/apache/maven/plugin/pmd/PmdViolationCheckMojo.java
  AL    src/main/java/org/apache/maven/plugin/pmd/ViolationDetails.java
 !????? src/main/mdo/cpd.mdo
 !????? src/main/mdo/pmd.mdo
  AL    src/main/resources/cpd-report.properties
  AL    src/main/resources/cpd-report_de.properties
  AL    src/main/resources/cpd-report_en.properties
  AL    src/main/resources/cpd-report_fr.properties
  AL    src/main/resources/cpd-report_it.properties
  AL    src/main/resources/cpd-report_nl.properties
  AL    src/main/resources/cpd-report_pt_BR.properties
  AL    src/main/resources/cpd-report_sv.properties
  AL    src/main/resources/pmd-report.properties
  AL    src/main/resources/pmd-report_de.properties
  AL    src/main/resources/pmd-report_en.properties
  AL    src/main/resources/pmd-report_fr.properties
  AL    src/main/resources/pmd-report_it.properties
  AL    src/main/resources/pmd-report_nl.properties
  AL    src/main/resources/pmd-report_pt_BR.properties
  AL    src/main/resources/pmd-report_sv.properties
  AL    src/main/resources/rulesets/maven.xml
  AL    src/site/apt/examples/javascriptReport.apt.vm
  AL    src/site/apt/examples/removeReport.apt.vm
  AL    src/site/apt/examples/targetJdk.apt.vm
  AL    src/site/apt/examples/usingRuleSets.apt.vm
  AL    src/site/apt/examples/violation-exclusions.apt.vm
  AL    src/site/apt/examples/violationChecking.apt.vm
  AL    src/site/apt/index.apt.vm
  AL    src/site/apt/usage.apt.vm
  AL    src/site/fml/faq.fml
  AL    src/site/site.xml
  AL    src/test/java/org/apache/maven/plugin/pmd/AbstractPmdReportTest.java
  AL    src/test/java/org/apache/maven/plugin/pmd/CpdReportTest.java
  AL    src/test/java/org/apache/maven/plugin/pmd/CpdViolationCheckMojoTest.java
  AL    src/test/java/org/apache/maven/plugin/pmd/PmdReportTest.java
  AL    src/test/java/org/apache/maven/plugin/pmd/PmdViolationCheckMojoTest.java
  AL    src/test/java/org/apache/maven/plugin/pmd/stubs/CustomConfigurationMavenProjectStub.java
  AL    src/test/java/org/apache/maven/plugin/pmd/stubs/DefaultArtifactHandlerStub.java
  AL    src/test/java/org/apache/maven/plugin/pmd/stubs/DefaultConfigurationMavenProjectStub.java
  AL    src/test/java/org/apache/maven/plugin/pmd/stubs/InvalidFormatMavenProjectStub.java
  AL    src/test/java/org/apache/maven/plugin/pmd/stubs/PmdPluginArtifactStub.java
  AL    src/test/resources/unit/custom-configuration/cpd-custom-configuration-plugin-config.xml
  AL    src/test/resources/unit/custom-configuration/custom/configuration/AnotherSample.java
  AL    src/test/resources/unit/custom-configuration/custom/configuration/App.java
  AL    src/test/resources/unit/custom-configuration/custom/configuration/AppSample.java
  AL    src/test/resources/unit/custom-configuration/custom/configuration/Sample.java
  AL    src/test/resources/unit/custom-configuration/custom-configuration-plugin-config.xml
  AL    src/test/resources/unit/custom-configuration/pmd-check-exception-test-plugin-config.xml
  AL    src/test/resources/unit/custom-configuration/resources/rulesets/custom.xml
  AL    src/test/resources/unit/custom-configuration/skip-plugin-config.xml
  AL    src/test/resources/unit/default-configuration/cpd-default-configuration-plugin-config.xml
  AL    src/test/resources/unit/default-configuration/def/configuration/App.java
  AL    src/test/resources/unit/default-configuration/def/configuration/App2.java
  AL    src/test/resources/unit/default-configuration/def/configuration/AppSample.java
  AL    src/test/resources/unit/default-configuration/default-configuration-plugin-config.xml
  AL    src/test/resources/unit/default-configuration/javascript-configuration-plugin-config.xml
 !????? src/test/resources/unit/default-configuration/js/Sample.js
  AL    src/test/resources/unit/default-configuration/jxr-files/xref/allclasses-frame.html
  AL    src/test/resources/unit/default-configuration/jxr-files/xref/def/configuration/App.html
  AL    src/test/resources/unit/default-configuration/jxr-files/xref/def/configuration/AppSample.html
  AL    src/test/resources/unit/default-configuration/jxr-files/xref/def/configuration/package-frame.html
  AL    src/test/resources/unit/default-configuration/jxr-files/xref/def/configuration/package-summary.html
  AL    src/test/resources/unit/default-configuration/jxr-files/xref/index.html
  AL    src/test/resources/unit/default-configuration/jxr-files/xref/overview-frame.html
  AL    src/test/resources/unit/default-configuration/jxr-files/xref/overview-summary.html
  AL    src/test/resources/unit/default-configuration/jxr-files/xref/stylesheet.css
  AL    src/test/resources/unit/default-configuration/pmd-check-cpd-exclusions-configuration-plugin-config.xml
  AL    src/test/resources/unit/default-configuration/pmd-check-default-configuration-plugin-config.xml
  AL    src/test/resources/unit/default-configuration/pmd-check-failandwarnonpriority-plugin-config.xml
  AL    src/test/resources/unit/default-configuration/pmd-check-failonpriority-plugin-config.xml
  AL    src/test/resources/unit/default-configuration/pmd-check-notfailonviolation-plugin-config.xml
  AL    src/test/resources/unit/default-configuration/pmd-check-pmd-exclusions-configuration-plugin-config.xml
  AL    src/test/resources/unit/excludes/cpd_exclude.txt
  AL    src/test/resources/unit/excludes/pmd_exclude.properties
  AL    src/test/resources/unit/invalid-format/cpd-invalid-format-plugin-config.xml
  AL    src/test/resources/unit/invalid-format/invalid/format/App.java
  AL    src/test/resources/unit/invalid-format/invalid/format/AppSample.java
  AL    src/test/resources/unit/invalid-format/invalid-format-plugin-config.xml
  AL    src/test/resources/unit/invalid-format/invalid-target-jdk-plugin-config.xml
 
 *****************************************************
 Printing headers for files without AL header...
 
 
 =======================================================================
 ==src/it/mpmd-138/invoker.properties
 =======================================================================
invoker.goals = clean verify

 =======================================================================
 ==src/it/mpmd-138/mod-1/src/main/java/test/MyClass.java
 =======================================================================
package test;

public class MyClass
{

    public static void main( String[] args )
    {
        ;
        return;
    }

}

 =======================================================================
 ==src/it/mpmd-138/mod-2/src/main/java/test/MyClass.java
 =======================================================================
package test;

public class MyClass
{
    private String x;
}

 =======================================================================
 ==src/it/mpmd-138/mod-3/src/main/java/test/MyClass.java
 =======================================================================
package test;

public class MyClass
{

    
    /**
     * 
     * @param args
     */
    public static void main( String[] args )
    {
        int nullArgs = 0;
        int emptyArgs = 0;
        int notEmptyArgs = 0;
        for ( int i = 0; i < args.length; i++ )
        {
            if( args[i] == null )
            {
                nullArgs++;
                System.out.println( "arg[" + i + "] is null, weird" );
            }
            else if( args[i] == "" )
            {
                emptyArgs++;
                System.out.println( "arg[" + i + "] is empty" );
            }
            else
            {
                notEmptyArgs++;
                System.out.println( "arg[" + i + "] is not empty" );
            }
            System.out.print( "Number of null args: " + nullArgs );
            System.out.print( "Number of empty args: " + emptyArgs );
            System.out.print( "Number of not empty args: " + notEmptyArgs );
        }
    }

}

 =======================================================================
 ==src/it/mpmd-138/mod-3/src/main/java/test/sub/MyClass.java
 =======================================================================
package test.sub;

public class MyClass
{

    
    
    
    /**
     * 
     * @param args
     */
    public static void main( String[] args )
    {
        int nullArgs = 0;
        int emptyArgs = 0;
        int notEmptyArgs = 0;
        for ( int i = 0; i < args.length; i++ )
        {
            if( args[i] == null )
            {
                nullArgs++;
                System.out.println( "arg[" + i + "] is null, weird" );
            }
            else if( args[i] == "" )
            {
                emptyArgs++;
                System.out.println( "arg[" + i + "] is empty" );
            }
            else
            {
                notEmptyArgs++;
                System.out.println( "arg[" + i + "] is not empty" );
            }
            System.out.print( "Number of null args: " + nullArgs );
            System.out.print( "Number of empty args: " + emptyArgs );
            System.out.print( "Number of not empty args: " + notEmptyArgs );
        }
    }
}

 =======================================================================
 ==src/it/mpmd-138/mod-4/src/main/java/test/MyClass.java
 =======================================================================
package test;

public class MyClass
{

    /**
     * 
     * @param args
     */
    public static void main( String[] args )
    {
        int nullArgs = 0;
        int emptyArgs = 0;
        int notEmptyArgs = 0;
        for ( int i = 0; i < args.length; i++ )
        {
            if( args[i] == null )
            {
                nullArgs++;
                System.out.println( "arg[" + i + "] is null, weird" );
            }
            else if( args[i] == "" )
            {
                emptyArgs++;
                System.out.println( "arg[" + i + "] is empty" );
            }
            else
            {
                notEmptyArgs++;
                System.out.println( "arg[" + i + "] is not empty" );
            }
            System.out.print( "Number of null args: " + nullArgs );
            System.out.print( "Number of empty args: " + emptyArgs );
            System.out.print( "Number of not empty args: " + notEmptyArgs );
        }
    }
}

 =======================================================================
 ==src/it/mpmd-138/mod-4/src/main/java/test/OtherClass.java
 =======================================================================
package test;

public class OtherClass
{

    
    
    
    /**
     * 
     * @param args
     */
    public static void main( String[] args )
    {
        int nullArgs = 0;
        int emptyArgs = 0;
        int notEmptyArgs = 0;
        for ( int i = 0; i < args.length; i++ )
        {
            if( args[i] == null )
            {
                nullArgs++;
                System.out.println( "arg[" + i + "] is null, weird" );
            }
            else if( args[i] == "" )
            {
                emptyArgs++;
                System.out.println( "arg[" + i + "] is empty" );
            }
            else
            {
                notEmptyArgs++;
                System.out.println( "arg[" + i + "] is not empty" );
            }
            System.out.print( "Number of null args: " + nullArgs );
            System.out.print( "Number of empty args: " + emptyArgs );
            System.out.print( "Number of not empty args: " + notEmptyArgs );
        }
    }
}

 =======================================================================
 ==src/it/mpmd-138/mod-4/src/main/java/test/sub/MyClass.java
 =======================================================================
package test.sub;

public class MyClass
{
    /**
     * 
     * @param args
     */
    public static void main( String[] args )
    {
        int nullArgs = 0;
        int emptyArgs = 0;
        int notEmptyArgs = 0;
        for ( int i = 0; i < args.length; i++ )
        {
            if( args[i] == null )
            {
                nullArgs++;
                System.out.println( "arg[" + i + "] is null, weird" );
            }
            else if( args[i] == "" )
            {
                emptyArgs++;
                System.out.println( "arg[" + i + "] is empty" );
            }
            else
            {
                notEmptyArgs++;
                System.out.println( "arg[" + i + "] is not empty" );
            }
            System.out.print( "Number of null args: " + nullArgs );
            System.out.print( "Number of empty args: " + emptyArgs );
            System.out.print( "Number of not empty args: " + notEmptyArgs );
        }
    }
}

 =======================================================================
 ==src/it/mpmd-142/invoker.properties
 =======================================================================
invoker.goals = clean site

 =======================================================================
 ==src/it/mpmd-142/src/main/java/test/MyClass.java
 =======================================================================
package test;

public class MyClass
{

    public static void main( String[] args )
    {
        ;
        return;
    }

}

 =======================================================================
 ==src/it/MPMD-163/invoker.properties
 =======================================================================
invoker.goals = clean pmd:check

 =======================================================================
 ==src/it/MPMD-163/src/main/java/com/mycompany/app/App.java
 =======================================================================
package com.mycompany.app;


public class App 
{

    
}

 =======================================================================
 ==src/it/MPMD-163/src/main/java/com/mycompany/app/Foo.java
 =======================================================================
import java.util.ArrayList;
public class Foo
{
    public Foo(final ArrayList<String> foo)
    {
    }
    
}

 =======================================================================
 ==src/it/mpmd-89/invoker.properties
 =======================================================================
invoker.goals = clean test-compile
invoker.buildResult = failure

 =======================================================================
 ==src/it/mpmd-89/verify.bsh
 =======================================================================
File pmdXml = new File( basedir, "target/pmd.xml" );
if (!pmdXml.isFile())
{
    throw new IllegalStateException( pmdXml + " does not exist" );
}

 =======================================================================
 ==src/it/multi-module/mod-1/src/main/config/pmd/latin-1.xml
 =======================================================================
<?xml version="1.0" encoding="ISO-8859-1"?>
<ruleset name="Custom ruleset"
    xmlns="http://pmd.sf.net/ruleset/1.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd"
    xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd">
  <description>
    This ruleset is encoded with ISO-8859-1 to check proper encoding handling.
  </description>
  <rule ref="rulesets/basic.xml/UnnecessaryReturn" message="LATIN-1-CHARS: ������߼���"/>
  <!-- note: ���� = 0xBC 0xBD 0xBE 0xA4 don't exist any more in Latin 15, replaced by OE oe Y" and euro -->
</ruleset>

 =======================================================================
 ==src/it/multi-module/mod-1/src/main/config/pmd/utf-8.xml
 =======================================================================
<?xml version="1.0" encoding="UTF-8"?>
<ruleset name="Custom ruleset"
    xmlns="http://pmd.sf.net/ruleset/1.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd"
    xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd">
  <description>
    This ruleset is encoded with UTF-8 to check proper encoding handling.
  </description>
  <rule ref="rulesets/basic.xml/EmptyStatementNotInLoop" message="UTF-8-CHARS: ÄÖÜäöüß¼½¾¤"/>
</ruleset>

 =======================================================================
 ==src/it/multi-module/mod-1/src/main/java/test/MyClass.java
 =======================================================================
package test;

public class MyClass
{

    public static void main( String[] args )
    {
        ;
        return;
    }

}

 =======================================================================
 ==src/it/multi-module/mod-2/rulesets/basic.xml
 =======================================================================
<?xml version="1.0" encoding="UTF-8"?>
<ruleset name="Custom ruleset"
    xmlns="http://pmd.sf.net/ruleset/1.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd"
    xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd">
  <description>
    The relative path of this ruleset matches the built-in ruleset "basic".
  </description>
  <rule ref="rulesets/basic.xml/EmptyStatementNotInLoop" message="TEST: LOCAL-FILE-RULESET"/>
</ruleset>

 =======================================================================
 ==src/it/multi-module/mod-2/src/main/java/test/MyClass.java
 =======================================================================
package test;

public class MyClass
{

    public static void main( String[] args )
    {
        ;
        return;
    }

}

 =======================================================================
 ==src/it/multi-module/mod-3/src/main/config/pmd/abs.xml
 =======================================================================
<?xml version="1.0" encoding="ISO-8859-1"?>
<ruleset name="Custom ruleset"
    xmlns="http://pmd.sf.net/ruleset/1.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd"
    xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd">
  <description>
    This ruleset is specified via an absolute filesystem path.
  </description>
  <rule ref="rulesets/basic.xml/UnnecessaryReturn" message="TEST: ABSOLUTE-PATH"/>
</ruleset>

 =======================================================================
 ==src/it/multi-module/mod-3/src/main/config/pmd/rel.xml
 =======================================================================
<?xml version="1.0" encoding="UTF-8"?>
<ruleset name="Custom ruleset"
    xmlns="http://pmd.sf.net/ruleset/1.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd"
    xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd">
  <description>
    This ruleset is specified via a relative filesystem path.
  </description>
  <rule ref="rulesets/basic.xml/EmptyStatementNotInLoop" message="TEST: RELATIVE-PATH"/>
</ruleset>

 =======================================================================
 ==src/it/multi-module/mod-3/src/main/java/test/MyClass.java
 =======================================================================
package test;

public class MyClass
{

    public static void main( String[] args )
    {
        ;
        return;
    }

}

 =======================================================================
 ==src/it/multi-module/mod-4/src/main/java/test/MyClass.java
 =======================================================================
package test;

public class MyClass
{

    public static void main( String[] args )
    {
        ;
        return;
    }

}

 =======================================================================
 ==src/it/multi-module/verify.bsh
 =======================================================================
import org.codehaus.plexus.util.FileUtils;

import java.io.*;
import java.util.*;

String[] modules = { "mod-1", "mod-2", "mod-3" };
String[] paths =
{
    "target/site/pmd.html",
    "target/site/cpd.html",
    "target/pmd.xml",
    "target/cpd.xml",
};

// files must exist in every module
for ( String module : modules )
{
    // PMD and CPD reports
    for ( String path : paths )
    {
        File file = new File( basedir, module + '/' + path );
        System.out.println( "Checking for existence of " + file );
        if ( !file.isFile() )
        {
            throw new FileNotFoundException( "Missing: " + file.getAbsolutePath() );
        }
    }
}

// files must not exist in parent
for ( String path : paths )
{
    File file = new File( basedir, path );
    System.out.println( "Checking for absence of " + file );
    if ( file.exists() )
    {
        throw new IOException( "Banned: " + file.getAbsolutePath() );
    }
}


// check PMD rulesets target copy
File rule = new File( basedir, "mod-1/target/latin-1.xml" );
String nonascii = "-CHARS: \u00C4\u00D6\u00DC\u00E4\u00F6\u00FC\u00DF\u00BC\u00BD\u00BE\u00A4";
String content = FileUtils.fileRead( rule, "ISO-8859-1" );
if ( content.indexOf( nonascii ) < 0 )
{
    throw new IOException( "non-ascii content corrupted in Latin1." );
}
rule = new File( basedir, "mod-1/target/utf-8.xml" );

 =======================================================================
 ==src/main/mdo/cpd.mdo
 =======================================================================
<model xmlns="http://modello.codehaus.org/MODELLO/1.4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://modello.codehaus.org/MODELLO/1.4.0 http://modello.codehaus.org/xsd/modello-1.4.0.xsd">
  
  <!-- Source: http://www.jcoderz.org/fawkez/browser/trunk/src/xml/schema/cpd.xsd -->
  
  <name>Cpd</name>
  
  <defaults>
    <default>
      <key>package</key>
      <value>org.apache.maven.plugin.pmd.model</value>
    </default>
  </defaults>
  <versionDefinition>
    <type>namespace</type>
    <value>1.0+</value>
  </versionDefinition>
  
  <classes>
    <class xml.tagName="pmd-cpd" rootElement="true">
      <name>CpdErrorDetail</name>
      <fields>
        <field>
          <name>duplications</name>
          <association xml.tagName="duplication" xml.itemsStyle="flat">
            <type>Duplication</type>
            <multiplicity>*</multiplicity>
          </association>
        </field>
      </fields>
    </class>
    <class>
      <name>Duplication</name>
      <fields>
        <field xml.attribute="true">
          <name>lines</name>
          <type>int</type>
        </field>
        <field xml.attribute="true">
          <name>tokens</name>
          <type>int</type>
        </field>
        <field xml.tagName="file">
          <name>files</name>
          <association xml.tagName="file" xml.itemsStyle="flat">
            <type>CpdFile</type>
            <multiplicity>*</multiplicity>
          </association>
        </field>
        <field>

 =======================================================================
 ==src/main/mdo/pmd.mdo
 =======================================================================
<model xmlns="http://modello.codehaus.org/MODELLO/1.4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://modello.codehaus.org/MODELLO/1.4.0 http://modello.codehaus.org/xsd/modello-1.4.0.xsd">

  <!-- Source: http://www.jcoderz.org/fawkez/browser/trunk/src/xml/schema/pmd.xsd  -->

  <name>Pmd</name>
  
  <defaults>
    <default>
      <key>package</key>
      <value>org.apache.maven.plugin.pmd.model</value>
    </default>
  </defaults>
  <versionDefinition>
    <type>namespace</type>
    <value>1.0+</value>
  </versionDefinition>
 
  <classes>
    <class rootElement="true" xml.tagName="pmd">
      <name>PmdErrorDetail</name>
      <fields>
        <field>
          <name>files</name>
          <association xml.tagName="file" xml.itemsStyle="flat">
            <type>PmdFile</type>
            <multiplicity>*</multiplicity>
          </association>
        </field>
        <!-- 
        <field>
          <name>errors</name>
          <association xml.tagName="error" xml.itemsStyle="flat">
            <type>PmdError</type>
            <multiplicity>*</multiplicity>
          </association>
        </field>
         -->
      </fields>
    </class>
    <class>
      <name>PmdFile</name>
      <fields>
        <field xml.attribute="true">
          <name>name</name>
          <type>String</type>
        </field>
        <field>
          <name>violations</name>
          <association xml.tagName="violation" xml.itemsStyle="flat">

 =======================================================================
 ==src/test/resources/unit/default-configuration/js/Sample.js
 =======================================================================
(function() {

    globalVariable = 1;

})();