You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@maven.apache.org by Dennis Lundberg <de...@apache.org> on 2012/01/25 23:06:37 UTC
Re: svn commit: r1233066 - in /maven/plugins/trunk/maven-pmd-plugin:
./ src/it/mpmd-138/ src/it/mpmd-138/mod-1/ src/it/mpmd-138/mod-1/src/ src/it/mpmd-138/mod-1/src/main/
src/it/mpmd-138/mod-1/src/main/config/ src/it/mpmd-138/mod-1/src/main/config/pmd/
src...
Hi Robert,
The new IT mpmd-138 is failing for me on both Windows 7 and Ubuntu:
[INFO] Building: mpmd-138\pom.xml
[INFO] ..FAILED (10.9 s)
[INFO] The post-build script did not succeed. Expression: (1 ==
buildLog.getText().count([INFO] PMD Failure: test.MyClass:8
Rule:EmptyStatementNotInLoop Priority:3 An empty statement (semicolon)
not part of a loop.))
Can you have a look at it?
On 2012-01-18 21:59, rfscholte@apache.org wrote:
> Author: rfscholte
> Date: Wed Jan 18 20:59:15 2012
> New Revision: 1233066
>
> URL: http://svn.apache.org/viewvc?rev=1233066&view=rev
> Log:
> Fix MPMD-138: Use modello to generate models to read pmd and cpd files
>
> Added:
> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/
> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/invoker.properties
> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/
> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/pom.xml
> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/
> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/
> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/
> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/
> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/latin-1.xml
> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/utf-8.xml
> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/java/
> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/java/test/
> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/java/test/MyClass.java
> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/
> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/pom.xml
> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/rulesets/
> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/rulesets/basic.xml
> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/src/
> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/src/main/
> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/src/main/java/
> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/src/main/java/test/
> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/src/main/java/test/MyClass.java
> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/
> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/pom.xml
> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/
> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/
> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/
> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/
> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/MyClass.java
> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/sub/
> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/sub/MyClass.java
> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/
> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/pom.xml
> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/
> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/
> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/
> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/
> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/MyClass.java
> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/OtherClass.java
> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/sub/
> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/sub/MyClass.java
> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/pom.xml
> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/verify.groovy
> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/ViolationDetails.java
> maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/
> maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/cpd.mdo
> maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/pmd.mdo
> Modified:
> maven/plugins/trunk/maven-pmd-plugin/pom.xml
> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/AbstractPmdViolationCheckMojo.java
> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/CpdViolationCheckMojo.java
> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdViolationCheckMojo.java
>
> Modified: maven/plugins/trunk/maven-pmd-plugin/pom.xml
> URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/pom.xml?rev=1233066&r1=1233065&r2=1233066&view=diff
> ==============================================================================
> --- maven/plugins/trunk/maven-pmd-plugin/pom.xml (original)
> +++ maven/plugins/trunk/maven-pmd-plugin/pom.xml Wed Jan 18 20:59:15 2012
> @@ -68,6 +68,33 @@ under the License.
> <sitePluginVersion>3.0</sitePluginVersion>
> </properties>
>
> + <build>
> + <plugins>
> + <plugin>
> + <groupId>org.codehaus.modello</groupId>
> + <artifactId>modello-maven-plugin</artifactId>
> + <version>1.4.1</version>
> + <configuration>
> + <useJava5>true</useJava5>
> + <models>
> + <model>src/main/mdo/pmd.mdo</model>
> + <model>src/main/mdo/cpd.mdo</model>
> + </models>
> + <version>1.0</version>
> + </configuration>
> + <executions>
> + <execution>
> + <phase>generate-sources</phase>
> + <goals>
> + <goal>java</goal>
> + <goal>xpp3-reader</goal>
> + </goals>
> + </execution>
> + </executions>
> + </plugin>
> + </plugins>
> + </build>
> +
> <dependencies>
> <!-- maven -->
> <dependency>
> @@ -124,7 +151,7 @@ under the License.
> <dependency>
> <groupId>org.codehaus.plexus</groupId>
> <artifactId>plexus-utils</artifactId>
> - <version>2.0.5</version>
> + <version>2.1</version>
> </dependency>
>
> <!-- pmd -->
>
> Added: maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/invoker.properties
> URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/invoker.properties?rev=1233066&view=auto
> ==============================================================================
> --- maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/invoker.properties (added)
> +++ maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/invoker.properties Wed Jan 18 20:59:15 2012
> @@ -0,0 +1 @@
> +invoker.goals = clean verify
> \ No newline at end of file
>
> Added: maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/pom.xml
> URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/pom.xml?rev=1233066&view=auto
> ==============================================================================
> --- maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/pom.xml (added)
> +++ maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/pom.xml Wed Jan 18 20:59:15 2012
> @@ -0,0 +1,39 @@
> +<?xml version="1.0" encoding="UTF-8"?>
> +
> +<!--
> +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.
> +-->
> +
> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
> + <modelVersion>4.0.0</modelVersion>
> +
> + <parent>
> + <groupId>org.apache.maven.plugin.pmd.its</groupId>
> + <artifactId>mpmd-138-parent</artifactId>
> + <version>1.0-SNAPSHOT</version>
> + </parent>
> +
> + <artifactId>mpmd-138-mod-1</artifactId>
> +
> + <name>Module 1</name>
> +
> + <properties>
> + <project.reporting.outputEncoding>ISO-8859-1</project.reporting.outputEncoding>
> + </properties>
> +
> +</project>
> \ No newline at end of file
>
> Added: maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/latin-1.xml
> URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/latin-1.xml?rev=1233066&view=auto
> ==============================================================================
> --- maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/latin-1.xml (added)
> +++ maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/latin-1.xml Wed Jan 18 20:59:15 2012
> @@ -0,0 +1,12 @@
> +<?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>
>
> Added: maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/utf-8.xml
> URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/utf-8.xml?rev=1233066&view=auto
> ==============================================================================
> --- maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/utf-8.xml (added)
> +++ maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/utf-8.xml Wed Jan 18 20:59:15 2012
> @@ -0,0 +1,11 @@
> +<?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>
>
> Added: maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/java/test/MyClass.java
> URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/java/test/MyClass.java?rev=1233066&view=auto
> ==============================================================================
> --- maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/java/test/MyClass.java (added)
> +++ maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/java/test/MyClass.java Wed Jan 18 20:59:15 2012
> @@ -0,0 +1,12 @@
> +package test;
> +
> +public class MyClass
> +{
> +
> + public static void main( String[] args )
> + {
> + ;
> + return;
> + }
> +
> +}
>
> Added: maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/pom.xml
> URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/pom.xml?rev=1233066&view=auto
> ==============================================================================
> --- maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/pom.xml (added)
> +++ maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/pom.xml Wed Jan 18 20:59:15 2012
> @@ -0,0 +1,35 @@
> +<?xml version="1.0" encoding="UTF-8"?>
> +
> +<!--
> +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.
> +-->
> +
> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
> + <modelVersion>4.0.0</modelVersion>
> +
> + <parent>
> + <groupId>org.apache.maven.plugin.pmd.its</groupId>
> + <artifactId>mpmd-138-parent</artifactId>
> + <version>1.0-SNAPSHOT</version>
> + </parent>
> +
> + <artifactId>mpmd-138-mod-2</artifactId>
> +
> + <name>Module 2</name>
> +
> +</project>
> \ No newline at end of file
>
> Added: maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/rulesets/basic.xml
> URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/rulesets/basic.xml?rev=1233066&view=auto
> ==============================================================================
> --- maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/rulesets/basic.xml (added)
> +++ maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/rulesets/basic.xml Wed Jan 18 20:59:15 2012
> @@ -0,0 +1,11 @@
> +<?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>
>
> Added: maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/src/main/java/test/MyClass.java
> URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/src/main/java/test/MyClass.java?rev=1233066&view=auto
> ==============================================================================
> --- maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/src/main/java/test/MyClass.java (added)
> +++ maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/src/main/java/test/MyClass.java Wed Jan 18 20:59:15 2012
> @@ -0,0 +1,12 @@
> +package test;
> +
> +public class MyClass
> +{
> +
> + public static void main( String[] args )
> + {
> + ;
> + return;
> + }
> +
> +}
>
> Added: maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/pom.xml
> URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/pom.xml?rev=1233066&view=auto
> ==============================================================================
> --- maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/pom.xml (added)
> +++ maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/pom.xml Wed Jan 18 20:59:15 2012
> @@ -0,0 +1,37 @@
> +<?xml version="1.0" encoding="UTF-8"?>
> +
> +<!--
> +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.
> +-->
> +
> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
> + <modelVersion>4.0.0</modelVersion>
> +
> + <parent>
> + <groupId>org.apache.maven.plugin.pmd.its</groupId>
> + <artifactId>mpmd-138-parent</artifactId>
> + <version>1.0-SNAPSHOT</version>
> + </parent>
> +
> + <artifactId>mpmd-138-mod-3</artifactId>
> +
> + <name>Module 3</name>
> +
> + <description>Test 3 classes with copy-paste block</description>
> +
> +</project>
> \ No newline at end of file
>
> Added: maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/MyClass.java
> URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/MyClass.java?rev=1233066&view=auto
> ==============================================================================
> --- maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/MyClass.java (added)
> +++ maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/MyClass.java Wed Jan 18 20:59:15 2012
> @@ -0,0 +1,39 @@
> +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 );
> + }
> + }
> +
> +}
>
> Added: maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/sub/MyClass.java
> URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/sub/MyClass.java?rev=1233066&view=auto
> ==============================================================================
> --- maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/sub/MyClass.java (added)
> +++ maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/sub/MyClass.java Wed Jan 18 20:59:15 2012
> @@ -0,0 +1,40 @@
> +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 );
> + }
> + }
> +}
> \ No newline at end of file
>
> Added: maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/pom.xml
> URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/pom.xml?rev=1233066&view=auto
> ==============================================================================
> --- maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/pom.xml (added)
> +++ maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/pom.xml Wed Jan 18 20:59:15 2012
> @@ -0,0 +1,37 @@
> +<?xml version="1.0" encoding="UTF-8"?>
> +
> +<!--
> +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.
> +-->
> +
> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
> + <modelVersion>4.0.0</modelVersion>
> +
> + <parent>
> + <groupId>org.apache.maven.plugin.pmd.its</groupId>
> + <artifactId>mpmd-138-parent</artifactId>
> + <version>1.0-SNAPSHOT</version>
> + </parent>
> +
> + <artifactId>mpmd-138-mod-4</artifactId>
> +
> + <name>Module 4</name>
> +
> + <description>Test 3 classes with copy-paste block</description>
> +
> +</project>
> \ No newline at end of file
>
> Added: maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/MyClass.java
> URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/MyClass.java?rev=1233066&view=auto
> ==============================================================================
> --- maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/MyClass.java (added)
> +++ maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/MyClass.java Wed Jan 18 20:59:15 2012
> @@ -0,0 +1,37 @@
> +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 );
> + }
> + }
> +}
> \ No newline at end of file
>
> Added: maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/OtherClass.java
> URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/OtherClass.java?rev=1233066&view=auto
> ==============================================================================
> --- maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/OtherClass.java (added)
> +++ maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/OtherClass.java Wed Jan 18 20:59:15 2012
> @@ -0,0 +1,40 @@
> +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 );
> + }
> + }
> +}
> \ No newline at end of file
>
> Added: maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/sub/MyClass.java
> URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/sub/MyClass.java?rev=1233066&view=auto
> ==============================================================================
> --- maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/sub/MyClass.java (added)
> +++ maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/sub/MyClass.java Wed Jan 18 20:59:15 2012
> @@ -0,0 +1,36 @@
> +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 );
> + }
> + }
> +}
> \ No newline at end of file
>
> Added: maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/pom.xml
> URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/pom.xml?rev=1233066&view=auto
> ==============================================================================
> --- maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/pom.xml (added)
> +++ maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/pom.xml Wed Jan 18 20:59:15 2012
> @@ -0,0 +1,67 @@
> +<?xml version="1.0" encoding="UTF-8"?>
> +
> +<!--
> +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.
> +-->
> +
> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
> + <modelVersion>4.0.0</modelVersion>
> +
> + <groupId>org.apache.maven.plugin.pmd.its</groupId>
> + <artifactId>mpmd-138-parent</artifactId>
> + <version>1.0-SNAPSHOT</version>
> + <packaging>pom</packaging>
> +
> + <name>Parent</name>
> + <description>
> + Test proper report generation in a multi-module build.
> + </description>
> +
> + <modules>
> + <module>mod-1</module>
> + <module>mod-2</module>
> + <module>mod-3</module>
> + <module>mod-4</module>
> + </modules>
> +
> + <properties>
> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
> + </properties>
> +
> + <build>
> + <plugins>
> + <plugin>
> + <artifactId>maven-pmd-plugin</artifactId>
> + <version>@project.version@</version>
> + <executions>
> + <execution>
> + <goals>
> + <goal>check</goal>
> + <goal>cpd-check</goal>
> + </goals>
> + </execution>
> + </executions>
> + <configuration>
> + <verbose>true</verbose>
> + <minimumTokens>25</minimumTokens>
> + <failOnViolation>false</failOnViolation> <!-- force execution of both goals, will be checked with verify-script -->
> + </configuration>
> + </plugin>
> + </plugins>
> + </build>
> +</project>
> \ No newline at end of file
>
> Added: maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/verify.groovy
> URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/verify.groovy?rev=1233066&view=auto
> ==============================================================================
> --- maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/verify.groovy (added)
> +++ maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/verify.groovy Wed Jan 18 20:59:15 2012
> @@ -0,0 +1,37 @@
> +
> +/*
> + * 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.
> + */
> +
> +File buildLog = new File( basedir, 'build.log' )
> +assert buildLog.exists()
> +
> +// Module 1
> +assert 1 == buildLog.getText().count('[INFO] PMD Failure: test.MyClass:8 Rule:EmptyStatementNotInLoop Priority:3 An empty statement (semicolon) not part of a loop.')
> +assert 1 == buildLog.getText().count('[INFO] PMD Failure: test.MyClass:9 Rule:UnnecessaryReturn Priority:3 Avoid unnecessary return statements.')
> +assert 1 == buildLog.getText().count('[INFO] You have 2 PMD violations. For more details see:')
> +
> +// Module 2
> +assert 1 == buildLog.getText().count('[INFO] PMD Failure: test.MyClass:8 Rule:EmptyStatementNotInLoop Priority:3 TEST: LOCAL-FILE-RULESET.')
> +assert 1 == buildLog.getText().count('[INFO] You have 1 PMD violation. For more details see:')
> +
> +// Module 3
> +assert 1 == buildLog.getText().count('[INFO] You have 1 CPD duplication. For more details see:')
> +
> +// Module 4
> +assert 1 == buildLog.getText().count('[INFO] You have 2 CPD duplications. For more details see:')
> \ No newline at end of file
>
> Modified: maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/AbstractPmdViolationCheckMojo.java
> URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/AbstractPmdViolationCheckMojo.java?rev=1233066&r1=1233065&r2=1233066&view=diff
> ==============================================================================
> --- maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/AbstractPmdViolationCheckMojo.java (original)
> +++ maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/AbstractPmdViolationCheckMojo.java Wed Jan 18 20:59:15 2012
> @@ -23,19 +23,13 @@ import java.io.File;
> import java.io.IOException;
> import java.io.Reader;
> import java.util.ArrayList;
> -import java.util.HashMap;
> import java.util.List;
> -import java.util.Map;
>
> import org.apache.maven.plugin.AbstractMojo;
> import org.apache.maven.plugin.MojoExecutionException;
> import org.apache.maven.plugin.MojoFailureException;
> import org.apache.maven.project.MavenProject;
> import org.codehaus.plexus.util.IOUtil;
> -import org.codehaus.plexus.util.ReaderFactory;
> -import org.codehaus.plexus.util.StringUtils;
> -import org.codehaus.plexus.util.xml.pull.MXParser;
> -import org.codehaus.plexus.util.xml.pull.XmlPullParser;
> import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
>
> /**
> @@ -44,13 +38,9 @@ import org.codehaus.plexus.util.xml.pull
> * @author <a href="mailto:brett@apache.org">Brett Porter</a>
> * @version $Id$
> */
> -public abstract class AbstractPmdViolationCheckMojo
> +public abstract class AbstractPmdViolationCheckMojo<D>
> extends AbstractMojo
> {
> - private static final Boolean FAILURES_KEY = Boolean.TRUE;
> -
> - private static final Boolean WARNINGS_KEY = Boolean.FALSE;
> -
> /**
> * The location of the XML report to check, as generated by the PMD report.
> *
> @@ -117,14 +107,10 @@ public abstract class AbstractPmdViolati
> Reader reader = null;
> try
> {
> - XmlPullParser xpp = new MXParser();
> - reader = ReaderFactory.newXmlReader( outputFile );
> - xpp.setInput( reader );
> -
> - Map<Boolean, List<Map<String, String>>> violations = getViolations( xpp, tagName, failurePriority );
> + ViolationDetails<D> violations = getViolations( outputFile, failurePriority );
>
> - List<Map<String, String>> failures = violations.get( FAILURES_KEY );
> - List<Map<String, String>> warnings = violations.get( WARNINGS_KEY );
> + List<D> failures = violations.getFailureDetails();
> + List<D> warnings = violations.getWarningDetails();
>
> if ( verbose )
> {
> @@ -178,86 +164,36 @@ public abstract class AbstractPmdViolati
> * @throws XmlPullParserException
> * @throws IOException
> */
> - private Map<Boolean, List<Map<String, String>>> getViolations( XmlPullParser xpp, String tagName, int failurePriority )
> + private ViolationDetails<D> getViolations( File analysisFile, int failurePriority )
> throws XmlPullParserException, IOException
> {
> - int eventType = xpp.getEventType();
> -
> - List<Map<String, String>> failures = new ArrayList<Map<String, String>>();
> - List<Map<String, String>> warnings = new ArrayList<Map<String, String>>();
> -
> - String fullpath = null;
> + List<D> failures = new ArrayList<D>();
> + List<D> warnings = new ArrayList<D>();
>
> - while ( eventType != XmlPullParser.END_DOCUMENT )
> + List<D> violations = getErrorDetails( analysisFile );
> +
> + for( D violation : violations )
> {
> - if ( eventType == XmlPullParser.START_TAG && "file".equals( xpp.getName() ) )
> + int priority = getPriority( violation );
> + if ( priority <= failurePriority )
> {
> - fullpath = xpp.getAttributeValue( "", "name" );
> + failures.add( violation );
> }
> - if ( eventType == XmlPullParser.START_TAG && tagName.equals( xpp.getName() ) )
> - {
> - Map<String, String> details = getErrorDetails( xpp );
> -
> - if ( fullpath != null )
> - {
> - details.put( "filename", getFilename( fullpath, details.get( "package" ) ) );
> - }
> -
> - try
> - {
> - int priority = Integer.parseInt( details.get( "priority" ) );
> - if ( priority <= failurePriority )
> - {
> - failures.add( details );
> - }
> - else
> - {
> - warnings.add( details );
> - }
> - }
> - catch ( NumberFormatException e )
> - {
> - // I don't know what priority this is. Treat it like a
> - // failure
> - failures.add( details );
> - }
> - catch ( NullPointerException e )
> - {
> - // I don't know what priority this is. Treat it like a
> - // failure
> - failures.add( details );
> - }
> -
> - }
> -
> - eventType = xpp.next();
> - }
> -
> - Map<Boolean, List<Map<String, String>>> map = new HashMap<Boolean, List<Map<String, String>>>( 2 );
> - map.put( FAILURES_KEY, failures );
> - map.put( WARNINGS_KEY, warnings );
> - return map;
> - }
> -
> - private String getFilename( String fullpath, String pkg )
> - {
> - int index = fullpath.lastIndexOf( File.separatorChar );
> -
> - while ( StringUtils.isNotEmpty( pkg ) )
> - {
> - index = fullpath.substring( 0, index ).lastIndexOf( File.separatorChar );
> -
> - int dot = pkg.indexOf( '.' );
> -
> - if ( dot < 0 )
> + else
> {
> - break;
> + warnings.add( violation );
> }
> - pkg = pkg.substring( dot + 1 );
> }
> -
> - return fullpath.substring( index + 1 );
> +
> + ViolationDetails<D> details = newViolationDetailsInstance();
> + details.setFailureDetails( failures );
> + details.setWarningDetails( warnings );
> + return details;
> }
> +
> + protected abstract int getPriority( D errorDetail );
> +
> + protected abstract ViolationDetails<D> newViolationDetailsInstance();
>
> /**
> * Prints the warnings and failures
> @@ -267,14 +203,14 @@ public abstract class AbstractPmdViolati
> * @param warnings
> * list of warnings
> */
> - protected void printErrors( List<Map<String, String>> failures, List<Map<String, String>> warnings )
> + protected void printErrors( List<D> failures, List<D> warnings )
> {
> - for ( Map<String, String> warning : warnings )
> + for ( D warning : warnings )
> {
> printError( warning, "Warning" );
> }
>
> - for ( Map<String, String> failure : failures )
> + for ( D failure : failures )
> {
> printError( failure, "Failure" );
> }
> @@ -322,7 +258,7 @@ public abstract class AbstractPmdViolati
> *
> * @param item
> */
> - protected abstract void printError( Map<String, String> item, String severity );
> + protected abstract void printError( D item, String severity );
>
> /**
> * Gets the attributes and text for the violation tag and puts them in a
> @@ -332,6 +268,6 @@ public abstract class AbstractPmdViolati
> * @throws XmlPullParserException
> * @throws IOException
> */
> - protected abstract Map<String, String> getErrorDetails( XmlPullParser xpp )
> + protected abstract List<D> getErrorDetails( File analisysFile )
> throws XmlPullParserException, IOException;
> }
> \ No newline at end of file
>
> Modified: maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/CpdViolationCheckMojo.java
> URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/CpdViolationCheckMojo.java?rev=1233066&r1=1233065&r2=1233066&view=diff
> ==============================================================================
> --- maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/CpdViolationCheckMojo.java (original)
> +++ maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/CpdViolationCheckMojo.java Wed Jan 18 20:59:15 2012
> @@ -19,13 +19,17 @@ package org.apache.maven.plugin.pmd;
> * under the License.
> */
>
> +import java.io.File;
> +import java.io.FileReader;
> import java.io.IOException;
> -import java.util.HashMap;
> -import java.util.Map;
> +import java.util.List;
>
> import org.apache.maven.plugin.MojoExecutionException;
> import org.apache.maven.plugin.MojoFailureException;
> -import org.codehaus.plexus.util.xml.pull.XmlPullParser;
> +import org.apache.maven.plugin.pmd.model.CpdErrorDetail;
> +import org.apache.maven.plugin.pmd.model.CpdFile;
> +import org.apache.maven.plugin.pmd.model.Duplication;
> +import org.apache.maven.plugin.pmd.model.io.xpp3.CpdXpp3Reader;
> import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
>
> /**
> @@ -39,7 +43,7 @@ import org.codehaus.plexus.util.xml.pull
> * @threadSafe
> */
> public class CpdViolationCheckMojo
> - extends AbstractPmdViolationCheckMojo
> + extends AbstractPmdViolationCheckMojo<Duplication>
> {
>
> /**
> @@ -61,9 +65,9 @@ public class CpdViolationCheckMojo
> }
>
> /** {@inheritDoc} */
> - protected void printError( Map item, String severity )
> + protected void printError( Duplication item, String severity )
> {
> - String lines = (String) item.get( "lines" );
> + int lines = item.getLines();
>
>
> StringBuffer buff = new StringBuffer( 100 );
> @@ -71,68 +75,38 @@ public class CpdViolationCheckMojo
> buff.append( lines ).append( " lines of duplicated code at locations:" );
> this.getLog().info( buff.toString() );
>
> - buff.setLength( 0 );
> - buff.append( " " );
> - Map file = (Map) item.get( "file" );
> - buff.append( file.get( "path" ) );
> - buff.append( " line " ).append( file.get( "line" ) );
> - this.getLog().info( buff.toString() );
> -
> - buff.setLength( 0 );
> - buff.append( " " );
> - file = (Map) item.get( "file1" );
> - buff.append( file.get( "path" ) );
> - buff.append( " line " ).append( file.get( "line" ) );
> - this.getLog().info( buff.toString() );
> +
> + for( CpdFile file : item.getFiles() )
> + {
> + buff.setLength( 0 );
> + buff.append( " " );
> + buff.append( file.getPath() );
> + buff.append( " line " ).append( file.getLine() );
> + this.getLog().info( buff.toString() );
> + }
>
> - Map codefrag = (Map) item.get( "codefragment" );
> - String codefragstr = (String) codefrag.get( "text" );
> this.getLog().debug( "CPD " + severity + ": Code Fragment " );
> - this.getLog().debug( codefragstr );
> + this.getLog().debug( item.getCodefragment() );
> }
>
> /** {@inheritDoc} */
> - protected Map getErrorDetails( XmlPullParser xpp )
> + protected List<Duplication> getErrorDetails( File cpdFile )
> throws XmlPullParserException, IOException
> {
> - int index = 0;
> - int attributeCount = 0;
> - HashMap msgs = new HashMap();
> -
> - attributeCount = xpp.getAttributeCount();
> - while ( index < attributeCount )
> - {
> - msgs.put( xpp.getAttributeName( index ), xpp.getAttributeValue( index ) );
> -
> - index++;
> - }
> -
> - int tp = xpp.next();
> - while ( tp != XmlPullParser.END_TAG )
> - {
> - // get the tag's text
> - switch ( tp )
> - {
> - case XmlPullParser.TEXT:
> - msgs.put( "text", xpp.getText().trim() );
> - break;
> - case XmlPullParser.START_TAG:
> - String nm = xpp.getName();
> - if ( msgs.containsKey( nm ) )
> - {
> - int cnt = 1;
> - while ( msgs.containsKey( nm + cnt ) )
> - {
> - ++cnt;
> - }
> - nm = nm + cnt;
> - }
> - msgs.put( nm, getErrorDetails( xpp ) );
> - break;
> - default:
> - }
> - tp = xpp.next();
> - }
> - return msgs;
> + CpdXpp3Reader reader = new CpdXpp3Reader();
> + CpdErrorDetail details = reader.read( new FileReader( cpdFile ), false );
> + return details.getDuplications();
> + }
> +
> + @Override
> + protected int getPriority( Duplication errorDetail )
> + {
> + return 0;
> + }
> +
> + @Override
> + protected ViolationDetails<Duplication> newViolationDetailsInstance()
> + {
> + return new ViolationDetails<Duplication>();
> }
> -}
> +}
> \ No newline at end of file
>
> Modified: maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdViolationCheckMojo.java
> URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdViolationCheckMojo.java?rev=1233066&r1=1233065&r2=1233066&view=diff
> ==============================================================================
> --- maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdViolationCheckMojo.java (original)
> +++ maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdViolationCheckMojo.java Wed Jan 18 20:59:15 2012
> @@ -19,12 +19,19 @@ package org.apache.maven.plugin.pmd;
> * under the License.
> */
>
> +import java.io.File;
> +import java.io.FileReader;
> import java.io.IOException;
> -import java.util.HashMap;
> -import java.util.Map;
> +import java.util.ArrayList;
> +import java.util.List;
>
> import org.apache.maven.plugin.MojoExecutionException;
> import org.apache.maven.plugin.MojoFailureException;
> +import org.apache.maven.plugin.pmd.model.PmdErrorDetail;
> +import org.apache.maven.plugin.pmd.model.PmdFile;
> +import org.apache.maven.plugin.pmd.model.Violation;
> +import org.apache.maven.plugin.pmd.model.io.xpp3.PmdXpp3Reader;
> +import org.codehaus.plexus.util.StringUtils;
> import org.codehaus.plexus.util.xml.pull.XmlPullParser;
> import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
>
> @@ -39,7 +46,7 @@ import org.codehaus.plexus.util.xml.pull
> * @threadSafe
> */
> public class PmdViolationCheckMojo
> - extends AbstractPmdViolationCheckMojo
> + extends AbstractPmdViolationCheckMojo<Violation>
> {
> /**
> * What priority level to fail the build on. Failures at or above this level
> @@ -71,55 +78,83 @@ public class PmdViolationCheckMojo
> }
>
> /** {@inheritDoc} */
> - protected void printError( Map<String, String> item, String severity )
> + protected void printError( Violation item, String severity )
> {
>
> StringBuffer buff = new StringBuffer( 100 );
> buff.append( "PMD " + severity + ": " );
> - if ( item.containsKey( "class" ) )
> + if ( item.getViolationClass() != null )
> {
> - if ( item.containsKey( "package" ) )
> + if ( item.getViolationPackage() != null )
> {
> - buff.append( item.get( "package" ) );
> + buff.append( item.getViolationPackage() );
> buff.append( "." );
> }
> - buff.append( item.get( "class" ) );
> + buff.append( item.getViolationClass() );
> }
> else
> {
> - buff.append( item.get( "filename" ) );
> + buff.append( item.getFileName() );
> }
> buff.append( ":" );
> - buff.append( item.get( "beginline" ) );
> - buff.append( " Rule:" ).append( item.get( "rule" ) );
> - buff.append( " Priority:" ).append( item.get( "priority" ) );
> - buff.append( " " ).append( item.get( "text" ) ).append( "." );
> + buff.append( item.getBeginline() );
> + buff.append( " Rule:" ).append( item.getRule() );
> + buff.append( " Priority:" ).append( item.getPriority() );
> + buff.append( " " ).append( item.getText() ).append( "." );
>
> this.getLog().info( buff.toString() );
> }
> -
> - /** {@inheritDoc} */
> - protected Map<String, String> getErrorDetails( XmlPullParser xpp )
> +
> + @Override
> + protected List<Violation> getErrorDetails( File pmdFile )
> throws XmlPullParserException, IOException
> {
> - int index = 0;
> - int attributeCount = 0;
> - Map<String, String> msgs = new HashMap<String, String>();
> + PmdXpp3Reader reader = new PmdXpp3Reader();
> + PmdErrorDetail details = reader.read( new FileReader( pmdFile ), false );
>
> - attributeCount = xpp.getAttributeCount();
> - while ( index < attributeCount )
> + List<Violation> violations = new ArrayList<Violation>();
> + for( PmdFile file : details.getFiles() )
> {
> -
> - msgs.put( xpp.getAttributeName( index ), xpp.getAttributeValue( index ) );
> -
> - index++;
> + String fullPath = file.getName();
> +
> + for ( Violation violation : file.getViolations() )
> + {
> + violation.setFileName( getFilename( fullPath, violation.getViolationPackage() ) );
> + violations.add( violation );
> + }
> }
> + return violations;
> + }
> +
> + @Override
> + protected int getPriority( Violation errorDetail )
> + {
> + return errorDetail.getPriority();
> + }
> +
> + @Override
> + protected ViolationDetails<Violation> newViolationDetailsInstance()
> + {
> + return new ViolationDetails<Violation>();
> + }
> +
> + private String getFilename( String fullpath, String pkg )
> + {
> + int index = fullpath.lastIndexOf( File.separatorChar );
>
> - // get the tag's text
> - if ( xpp.next() == XmlPullParser.TEXT )
> + while ( StringUtils.isNotEmpty( pkg ) )
> {
> - msgs.put( "text", xpp.getText().trim() );
> + index = fullpath.substring( 0, index ).lastIndexOf( File.separatorChar );
> +
> + int dot = pkg.indexOf( '.' );
> +
> + if ( dot < 0 )
> + {
> + break;
> + }
> + pkg = pkg.substring( dot + 1 );
> }
> - return msgs;
> +
> + return fullpath.substring( index + 1 );
> }
> }
> \ No newline at end of file
>
> Added: maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/ViolationDetails.java
> URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/ViolationDetails.java?rev=1233066&view=auto
> ==============================================================================
> --- maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/ViolationDetails.java (added)
> +++ maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/ViolationDetails.java Wed Jan 18 20:59:15 2012
> @@ -0,0 +1,69 @@
> +package org.apache.maven.plugin.pmd;
> +
> +/*
> + * 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.
> + */
> +
> +import java.util.ArrayList;
> +import java.util.List;
> +
> +/**
> + * Collector of warnings and failures.
> + *
> + * @author Robert Scholte
> + * @param <D>
> + * @since 2.7
> + */
> +public class ViolationDetails<D>
> +{
> + private List<D> warningDetails = new ArrayList<D>();
> +
> + private List<D> failureDetails = new ArrayList<D>();
> +
> + /**
> + * @return the warningDetails, never {@code null}
> + */
> + public List<D> getWarningDetails()
> + {
> + return warningDetails;
> + }
> +
> + /**
> + * @param warningDetails the warningDetails to set
> + */
> + public void setWarningDetails( List<D> warningDetails )
> + {
> + this.warningDetails = warningDetails;
> + }
> +
> + /**
> + * @return the failureDetails, never {@code null}
> + */
> + public List<D> getFailureDetails()
> + {
> + return failureDetails;
> + }
> +
> + /**
> + * @param failureDetails the failureDetails to set
> + */
> + public void setFailureDetails( List<D> failureDetails )
> + {
> + this.failureDetails = failureDetails;
> + }
> +}
> \ No newline at end of file
>
> Added: maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/cpd.mdo
> URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/cpd.mdo?rev=1233066&view=auto
> ==============================================================================
> --- maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/cpd.mdo (added)
> +++ maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/cpd.mdo Wed Jan 18 20:59:15 2012
> @@ -0,0 +1,70 @@
> +<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>
> + <name>codefragment</name>
> + <type>String</type>
> + </field>
> + </fields>
> + </class>
> + <class xml.tagName="file">
> + <name>CpdFile</name>
> + <fields>
> + <field xml.attribute="true">
> + <name>line</name>
> + <type>int</type>
> + </field>
> + <field xml.attribute="true">
> + <name>path</name>
> + <type>String</type>
> + </field>
> + </fields>
> + </class>
> + </classes>
> +</model>
> \ No newline at end of file
>
> Added: maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/pmd.mdo
> URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/pmd.mdo?rev=1233066&view=auto
> ==============================================================================
> --- maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/pmd.mdo (added)
> +++ maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/pmd.mdo Wed Jan 18 20:59:15 2012
> @@ -0,0 +1,109 @@
> +<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">
> + <type>Violation</type>
> + <multiplicity>*</multiplicity>
> + </association>
> + </field>
> + </fields>
> + </class>
> + <class>
> + <name>Violation</name>
> + <fields>
> + <field xml.attribute="true">
> + <name>beginline</name>
> + <type>int</type>
> + </field>
> + <field xml.tagName="class" xml.attribute="true">
> + <name>violationClass</name>
> + <type>String</type>
> + </field>
> + <field xml.tagName="package" xml.attribute="true">
> + <name>violationPackage</name>
> + <type>String</type>
> + </field>
> + <field xml.attribute="true">
> + <name>rule</name>
> + <type>String</type>
> + </field>
> + <field xml.attribute="true">
> + <name>priority</name>
> + <type>int</type>
> + </field>
> + <field xml.content="true">
> + <name>text</name>
> + <type>String</type>
> + </field>
> + </fields>
> + <codeSegments>
> + <codeSegment>
> + <code>
> + <![CDATA[
> + private String fileName;
> +
> + public void setFileName( String fileName )
> + {
> + this.fileName = fileName;
> + }
> +
> + public String getFileName()
> + {
> + return fileName;
> + }
> + ]]>
> + </code>
> + </codeSegment>
> + </codeSegments>
> + </class>
> + </classes>
> +
> +
> +
> +</model>
> \ No newline at end of file
>
>
>
--
Dennis Lundberg
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org
Re: svn commit: r1233066 - in /maven/plugins/trunk/maven-pmd-plugin:
./ src/it/mpmd-138/ src/it/mpmd-138/mod-1/ src/it/mpmd-138/mod-1/src/ src/it/mpmd-138/mod-1/src/main/
src/it/mpmd-138/mod-1/src/main/config/ src/it/mpmd-138/mod-1/src/main/config/pmd/
src...
Posted by Dennis Lundberg <de...@apache.org>.
Hi Robert,
Confirmed that it's working now with Maven 2.2.1 and 3.0.3 on both
Windows 7 and Ubuntu. Thank a lot!
On 2012-01-26 22:36, Robert Scholte wrote:
> Hi Dennis,
>
> Win7 with both M2.2.1 and M3.0.4 look fine now.
> Can you confirm the complete set?
>
> -Robert
>
> On Thu, 26 Jan 2012 22:22:55 +0100, Dennis Lundberg <de...@apache.org>
> wrote:
>
>> Thanks Robert
>>
>> Let me know what I can do to help.
>>
>> On 2012-01-26 21:47, Robert Scholte wrote:
>>> Always nice, unstable tests :S
>>> Win7 + M3.0.4 sometimes fails, sometimes succeed.
>>>
>>> This shows there are not enough tests for the m-pmd-p.
>>> Easiest solution is to remove a few verification-lines, but actually I
>>> want to know what's going on.
>>>
>>> I'll dive into this.
>>>
>>> -Robert
>>>
>>> On Wed, 25 Jan 2012 23:10:30 +0100, Dennis Lundberg <de...@apache.org>
>>> wrote:
>>>
>>>> Some more data on my setup:
>>>>
>>>> On Ubuntu the IT fails with Maven 2.2.1, but it works with Maven 3.0.3
>>>>
>>>> On Windows 7 the IT fails with both Maven 2.2.1 and Maven 3.0.3
>>>>
>>>>
>>>> On 2012-01-25 23:06, Dennis Lundberg wrote:
>>>>> Hi Robert,
>>>>>
>>>>> The new IT mpmd-138 is failing for me on both Windows 7 and Ubuntu:
>>>>>
>>>>> [INFO] Building: mpmd-138\pom.xml
>>>>> [INFO] ..FAILED (10.9 s)
>>>>> [INFO] The post-build script did not succeed. Expression: (1 ==
>>>>> buildLog.getText().count([INFO] PMD Failure: test.MyClass:8
>>>>> Rule:EmptyStatementNotInLoop Priority:3 An empty statement (semicolon)
>>>>> not part of a loop.))
>>>>>
>>>>> Can you have a look at it?
>>>>>
>>>>> On 2012-01-18 21:59, rfscholte@apache.org wrote:
>>>>>> Author: rfscholte
>>>>>> Date: Wed Jan 18 20:59:15 2012
>>>>>> New Revision: 1233066
>>>>>>
>>>>>> URL: http://svn.apache.org/viewvc?rev=1233066&view=rev
>>>>>> Log:
>>>>>> Fix MPMD-138: Use modello to generate models to read pmd and cpd
>>>>>> files
>>>>>>
>>>>>> Added:
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/
>>>>>>
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/invoker.properties
>>>>>>
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/
>>>>>>
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/pom.xml
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/
>>>>>>
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/
>>>>>>
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/
>>>>>>
>>>>>>
>>>>>>
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/
>>>>>>
>>>>>>
>>>>>>
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/latin-1.xml
>>>>>>
>>>>>>
>>>>>>
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/utf-8.xml
>>>>>>
>>>>>>
>>>>>>
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/java/
>>>>>>
>>>>>>
>>>>>>
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/java/test/
>>>>>>
>>>>>>
>>>>>>
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/java/test/MyClass.java
>>>>>>
>>>>>>
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/
>>>>>>
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/pom.xml
>>>>>>
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/rulesets/
>>>>>>
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/rulesets/basic.xml
>>>>>>
>>>>>>
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/src/
>>>>>>
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/src/main/
>>>>>>
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/src/main/java/
>>>>>>
>>>>>>
>>>>>>
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/src/main/java/test/
>>>>>>
>>>>>>
>>>>>>
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/src/main/java/test/MyClass.java
>>>>>>
>>>>>>
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/
>>>>>>
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/pom.xml
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/
>>>>>>
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/
>>>>>>
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/
>>>>>>
>>>>>>
>>>>>>
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/
>>>>>>
>>>>>>
>>>>>>
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/MyClass.java
>>>>>>
>>>>>>
>>>>>>
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/sub/
>>>>>>
>>>>>>
>>>>>>
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/sub/MyClass.java
>>>>>>
>>>>>>
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/
>>>>>>
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/pom.xml
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/
>>>>>>
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/
>>>>>>
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/
>>>>>>
>>>>>>
>>>>>>
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/
>>>>>>
>>>>>>
>>>>>>
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/MyClass.java
>>>>>>
>>>>>>
>>>>>>
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/OtherClass.java
>>>>>>
>>>>>>
>>>>>>
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/sub/
>>>>>>
>>>>>>
>>>>>>
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/sub/MyClass.java
>>>>>>
>>>>>>
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/pom.xml
>>>>>>
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/verify.groovy
>>>>>>
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/ViolationDetails.java
>>>>>>
>>>>>>
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/cpd.mdo
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/pmd.mdo
>>>>>> Modified:
>>>>>> maven/plugins/trunk/maven-pmd-plugin/pom.xml
>>>>>>
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/AbstractPmdViolationCheckMojo.java
>>>>>>
>>>>>>
>>>>>>
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/CpdViolationCheckMojo.java
>>>>>>
>>>>>>
>>>>>>
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdViolationCheckMojo.java
>>>>>>
>>>>>>
>>>>>>
>>>>>> Modified: maven/plugins/trunk/maven-pmd-plugin/pom.xml
>>>>>> URL:
>>>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/pom.xml?rev=1233066&r1=1233065&r2=1233066&view=diff
>>>>>>
>>>>>>
>>>>>> ==============================================================================
>>>>>>
>>>>>>
>>>>>> --- maven/plugins/trunk/maven-pmd-plugin/pom.xml (original)
>>>>>> +++ maven/plugins/trunk/maven-pmd-plugin/pom.xml Wed Jan 18 20:59:15
>>>>>> 2012
>>>>>> @@ -68,6 +68,33 @@ under the License.
>>>>>> <sitePluginVersion>3.0</sitePluginVersion>
>>>>>> </properties>
>>>>>>
>>>>>> + <build>
>>>>>> + <plugins>
>>>>>> + <plugin>
>>>>>> + <groupId>org.codehaus.modello</groupId>
>>>>>> + <artifactId>modello-maven-plugin</artifactId>
>>>>>> + <version>1.4.1</version>
>>>>>> + <configuration>
>>>>>> + <useJava5>true</useJava5>
>>>>>> + <models>
>>>>>> + <model>src/main/mdo/pmd.mdo</model>
>>>>>> + <model>src/main/mdo/cpd.mdo</model>
>>>>>> + </models>
>>>>>> + <version>1.0</version>
>>>>>> + </configuration>
>>>>>> + <executions>
>>>>>> + <execution>
>>>>>> + <phase>generate-sources</phase>
>>>>>> + <goals>
>>>>>> + <goal>java</goal>
>>>>>> + <goal>xpp3-reader</goal>
>>>>>> + </goals>
>>>>>> + </execution>
>>>>>> + </executions>
>>>>>> + </plugin>
>>>>>> + </plugins>
>>>>>> + </build>
>>>>>> +
>>>>>> <dependencies>
>>>>>> <!-- maven -->
>>>>>> <dependency>
>>>>>> @@ -124,7 +151,7 @@ under the License.
>>>>>> <dependency>
>>>>>> <groupId>org.codehaus.plexus</groupId>
>>>>>> <artifactId>plexus-utils</artifactId>
>>>>>> - <version>2.0.5</version>
>>>>>> + <version>2.1</version>
>>>>>> </dependency>
>>>>>>
>>>>>> <!-- pmd -->
>>>>>>
>>>>>> Added:
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/invoker.properties
>>>>>>
>>>>>> URL:
>>>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/invoker.properties?rev=1233066&view=auto
>>>>>>
>>>>>>
>>>>>> ==============================================================================
>>>>>>
>>>>>>
>>>>>> ---
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/invoker.properties
>>>>>>
>>>>>> (added)
>>>>>> +++
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/invoker.properties
>>>>>>
>>>>>> Wed Jan 18 20:59:15 2012
>>>>>> @@ -0,0 +1 @@
>>>>>> +invoker.goals = clean verify
>>>>>> \ No newline at end of file
>>>>>>
>>>>>> Added:
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/pom.xml
>>>>>> URL:
>>>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/pom.xml?rev=1233066&view=auto
>>>>>>
>>>>>>
>>>>>> ==============================================================================
>>>>>>
>>>>>>
>>>>>> ---
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/pom.xml
>>>>>> (added)
>>>>>> +++
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/pom.xml
>>>>>> Wed Jan 18 20:59:15 2012
>>>>>> @@ -0,0 +1,39 @@
>>>>>> +<?xml version="1.0" encoding="UTF-8"?>
>>>>>> +
>>>>>> +<!--
>>>>>> +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.
>>>>>> +-->
>>>>>> +
>>>>>> +<project xmlns="http://maven.apache.org/POM/4.0.0"
>>>>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>>>>> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
>>>>>> http://maven.apache.org/xsd/maven-4.0.0.xsd">
>>>>>> + <modelVersion>4.0.0</modelVersion>
>>>>>> +
>>>>>> + <parent>
>>>>>> + <groupId>org.apache.maven.plugin.pmd.its</groupId>
>>>>>> + <artifactId>mpmd-138-parent</artifactId>
>>>>>> + <version>1.0-SNAPSHOT</version>
>>>>>> + </parent>
>>>>>> +
>>>>>> + <artifactId>mpmd-138-mod-1</artifactId>
>>>>>> +
>>>>>> + <name>Module 1</name>
>>>>>> +
>>>>>> + <properties>
>>>>>> +
>>>>>> <project.reporting.outputEncoding>ISO-8859-1</project.reporting.outputEncoding>
>>>>>>
>>>>>>
>>>>>> + </properties>
>>>>>> +
>>>>>> +</project>
>>>>>> \ No newline at end of file
>>>>>>
>>>>>> Added:
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/latin-1.xml
>>>>>>
>>>>>>
>>>>>> URL:
>>>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/latin-1.xml?rev=1233066&view=auto
>>>>>>
>>>>>>
>>>>>> ==============================================================================
>>>>>>
>>>>>>
>>>>>> ---
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/latin-1.xml
>>>>>>
>>>>>> (added)
>>>>>> +++
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/latin-1.xml
>>>>>>
>>>>>> Wed Jan 18 20:59:15 2012
>>>>>> @@ -0,0 +1,12 @@
>>>>>> +<?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>
>>>>>>
>>>>>> Added:
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/utf-8.xml
>>>>>>
>>>>>>
>>>>>> URL:
>>>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/utf-8.xml?rev=1233066&view=auto
>>>>>>
>>>>>>
>>>>>> ==============================================================================
>>>>>>
>>>>>>
>>>>>> ---
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/utf-8.xml
>>>>>>
>>>>>> (added)
>>>>>> +++
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/utf-8.xml
>>>>>>
>>>>>> Wed Jan 18 20:59:15 2012
>>>>>> @@ -0,0 +1,11 @@
>>>>>> +<?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>
>>>>>>
>>>>>> Added:
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/java/test/MyClass.java
>>>>>>
>>>>>>
>>>>>> URL:
>>>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/java/test/MyClass.java?rev=1233066&view=auto
>>>>>>
>>>>>>
>>>>>> ==============================================================================
>>>>>>
>>>>>>
>>>>>> ---
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/java/test/MyClass.java
>>>>>>
>>>>>> (added)
>>>>>> +++
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/java/test/MyClass.java
>>>>>>
>>>>>> Wed Jan 18 20:59:15 2012
>>>>>> @@ -0,0 +1,12 @@
>>>>>> +package test;
>>>>>> +
>>>>>> +public class MyClass
>>>>>> +{
>>>>>> +
>>>>>> + public static void main( String[] args )
>>>>>> + {
>>>>>> + ;
>>>>>> + return;
>>>>>> + }
>>>>>> +
>>>>>> +}
>>>>>>
>>>>>> Added:
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/pom.xml
>>>>>> URL:
>>>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/pom.xml?rev=1233066&view=auto
>>>>>>
>>>>>>
>>>>>> ==============================================================================
>>>>>>
>>>>>>
>>>>>> ---
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/pom.xml
>>>>>> (added)
>>>>>> +++
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/pom.xml
>>>>>> Wed Jan 18 20:59:15 2012
>>>>>> @@ -0,0 +1,35 @@
>>>>>> +<?xml version="1.0" encoding="UTF-8"?>
>>>>>> +
>>>>>> +<!--
>>>>>> +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.
>>>>>> +-->
>>>>>> +
>>>>>> +<project xmlns="http://maven.apache.org/POM/4.0.0"
>>>>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>>>>> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
>>>>>> http://maven.apache.org/xsd/maven-4.0.0.xsd">
>>>>>> + <modelVersion>4.0.0</modelVersion>
>>>>>> +
>>>>>> + <parent>
>>>>>> + <groupId>org.apache.maven.plugin.pmd.its</groupId>
>>>>>> + <artifactId>mpmd-138-parent</artifactId>
>>>>>> + <version>1.0-SNAPSHOT</version>
>>>>>> + </parent>
>>>>>> +
>>>>>> + <artifactId>mpmd-138-mod-2</artifactId>
>>>>>> +
>>>>>> + <name>Module 2</name>
>>>>>> +
>>>>>> +</project>
>>>>>> \ No newline at end of file
>>>>>>
>>>>>> Added:
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/rulesets/basic.xml
>>>>>>
>>>>>>
>>>>>> URL:
>>>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/rulesets/basic.xml?rev=1233066&view=auto
>>>>>>
>>>>>>
>>>>>> ==============================================================================
>>>>>>
>>>>>>
>>>>>> ---
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/rulesets/basic.xml
>>>>>>
>>>>>> (added)
>>>>>> +++
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/rulesets/basic.xml
>>>>>>
>>>>>> Wed Jan 18 20:59:15 2012
>>>>>> @@ -0,0 +1,11 @@
>>>>>> +<?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>
>>>>>>
>>>>>> Added:
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/src/main/java/test/MyClass.java
>>>>>>
>>>>>>
>>>>>> URL:
>>>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/src/main/java/test/MyClass.java?rev=1233066&view=auto
>>>>>>
>>>>>>
>>>>>> ==============================================================================
>>>>>>
>>>>>>
>>>>>> ---
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/src/main/java/test/MyClass.java
>>>>>>
>>>>>> (added)
>>>>>> +++
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/src/main/java/test/MyClass.java
>>>>>>
>>>>>> Wed Jan 18 20:59:15 2012
>>>>>> @@ -0,0 +1,12 @@
>>>>>> +package test;
>>>>>> +
>>>>>> +public class MyClass
>>>>>> +{
>>>>>> +
>>>>>> + public static void main( String[] args )
>>>>>> + {
>>>>>> + ;
>>>>>> + return;
>>>>>> + }
>>>>>> +
>>>>>> +}
>>>>>>
>>>>>> Added:
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/pom.xml
>>>>>> URL:
>>>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/pom.xml?rev=1233066&view=auto
>>>>>>
>>>>>>
>>>>>> ==============================================================================
>>>>>>
>>>>>>
>>>>>> ---
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/pom.xml
>>>>>> (added)
>>>>>> +++
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/pom.xml
>>>>>> Wed Jan 18 20:59:15 2012
>>>>>> @@ -0,0 +1,37 @@
>>>>>> +<?xml version="1.0" encoding="UTF-8"?>
>>>>>> +
>>>>>> +<!--
>>>>>> +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.
>>>>>> +-->
>>>>>> +
>>>>>> +<project xmlns="http://maven.apache.org/POM/4.0.0"
>>>>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>>>>> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
>>>>>> http://maven.apache.org/xsd/maven-4.0.0.xsd">
>>>>>> + <modelVersion>4.0.0</modelVersion>
>>>>>> +
>>>>>> + <parent>
>>>>>> + <groupId>org.apache.maven.plugin.pmd.its</groupId>
>>>>>> + <artifactId>mpmd-138-parent</artifactId>
>>>>>> + <version>1.0-SNAPSHOT</version>
>>>>>> + </parent>
>>>>>> +
>>>>>> + <artifactId>mpmd-138-mod-3</artifactId>
>>>>>> +
>>>>>> + <name>Module 3</name>
>>>>>> +
>>>>>> + <description>Test 3 classes with copy-paste block</description>
>>>>>> +
>>>>>> +</project>
>>>>>> \ No newline at end of file
>>>>>>
>>>>>> Added:
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/MyClass.java
>>>>>>
>>>>>>
>>>>>> URL:
>>>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/MyClass.java?rev=1233066&view=auto
>>>>>>
>>>>>>
>>>>>> ==============================================================================
>>>>>>
>>>>>>
>>>>>> ---
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/MyClass.java
>>>>>>
>>>>>> (added)
>>>>>> +++
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/MyClass.java
>>>>>>
>>>>>> Wed Jan 18 20:59:15 2012
>>>>>> @@ -0,0 +1,39 @@
>>>>>> +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 );
>>>>>> + }
>>>>>> + }
>>>>>> +
>>>>>> +}
>>>>>>
>>>>>> Added:
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/sub/MyClass.java
>>>>>>
>>>>>>
>>>>>> URL:
>>>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/sub/MyClass.java?rev=1233066&view=auto
>>>>>>
>>>>>>
>>>>>> ==============================================================================
>>>>>>
>>>>>>
>>>>>> ---
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/sub/MyClass.java
>>>>>>
>>>>>> (added)
>>>>>> +++
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/sub/MyClass.java
>>>>>>
>>>>>> Wed Jan 18 20:59:15 2012
>>>>>> @@ -0,0 +1,40 @@
>>>>>> +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 );
>>>>>> + }
>>>>>> + }
>>>>>> +}
>>>>>> \ No newline at end of file
>>>>>>
>>>>>> Added:
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/pom.xml
>>>>>> URL:
>>>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/pom.xml?rev=1233066&view=auto
>>>>>>
>>>>>>
>>>>>> ==============================================================================
>>>>>>
>>>>>>
>>>>>> ---
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/pom.xml
>>>>>> (added)
>>>>>> +++
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/pom.xml
>>>>>> Wed Jan 18 20:59:15 2012
>>>>>> @@ -0,0 +1,37 @@
>>>>>> +<?xml version="1.0" encoding="UTF-8"?>
>>>>>> +
>>>>>> +<!--
>>>>>> +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.
>>>>>> +-->
>>>>>> +
>>>>>> +<project xmlns="http://maven.apache.org/POM/4.0.0"
>>>>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>>>>> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
>>>>>> http://maven.apache.org/xsd/maven-4.0.0.xsd">
>>>>>> + <modelVersion>4.0.0</modelVersion>
>>>>>> +
>>>>>> + <parent>
>>>>>> + <groupId>org.apache.maven.plugin.pmd.its</groupId>
>>>>>> + <artifactId>mpmd-138-parent</artifactId>
>>>>>> + <version>1.0-SNAPSHOT</version>
>>>>>> + </parent>
>>>>>> +
>>>>>> + <artifactId>mpmd-138-mod-4</artifactId>
>>>>>> +
>>>>>> + <name>Module 4</name>
>>>>>> +
>>>>>> + <description>Test 3 classes with copy-paste block</description>
>>>>>> +
>>>>>> +</project>
>>>>>> \ No newline at end of file
>>>>>>
>>>>>> Added:
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/MyClass.java
>>>>>>
>>>>>>
>>>>>> URL:
>>>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/MyClass.java?rev=1233066&view=auto
>>>>>>
>>>>>>
>>>>>> ==============================================================================
>>>>>>
>>>>>>
>>>>>> ---
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/MyClass.java
>>>>>>
>>>>>> (added)
>>>>>> +++
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/MyClass.java
>>>>>>
>>>>>> Wed Jan 18 20:59:15 2012
>>>>>> @@ -0,0 +1,37 @@
>>>>>> +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 );
>>>>>> + }
>>>>>> + }
>>>>>> +}
>>>>>> \ No newline at end of file
>>>>>>
>>>>>> Added:
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/OtherClass.java
>>>>>>
>>>>>>
>>>>>> URL:
>>>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/OtherClass.java?rev=1233066&view=auto
>>>>>>
>>>>>>
>>>>>> ==============================================================================
>>>>>>
>>>>>>
>>>>>> ---
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/OtherClass.java
>>>>>>
>>>>>> (added)
>>>>>> +++
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/OtherClass.java
>>>>>>
>>>>>> Wed Jan 18 20:59:15 2012
>>>>>> @@ -0,0 +1,40 @@
>>>>>> +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 );
>>>>>> + }
>>>>>> + }
>>>>>> +}
>>>>>> \ No newline at end of file
>>>>>>
>>>>>> Added:
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/sub/MyClass.java
>>>>>>
>>>>>>
>>>>>> URL:
>>>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/sub/MyClass.java?rev=1233066&view=auto
>>>>>>
>>>>>>
>>>>>> ==============================================================================
>>>>>>
>>>>>>
>>>>>> ---
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/sub/MyClass.java
>>>>>>
>>>>>> (added)
>>>>>> +++
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/sub/MyClass.java
>>>>>>
>>>>>> Wed Jan 18 20:59:15 2012
>>>>>> @@ -0,0 +1,36 @@
>>>>>> +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 );
>>>>>> + }
>>>>>> + }
>>>>>> +}
>>>>>> \ No newline at end of file
>>>>>>
>>>>>> Added: maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/pom.xml
>>>>>> URL:
>>>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/pom.xml?rev=1233066&view=auto
>>>>>>
>>>>>>
>>>>>> ==============================================================================
>>>>>>
>>>>>>
>>>>>> --- maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/pom.xml
>>>>>> (added)
>>>>>> +++ maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/pom.xml Wed
>>>>>> Jan 18 20:59:15 2012
>>>>>> @@ -0,0 +1,67 @@
>>>>>> +<?xml version="1.0" encoding="UTF-8"?>
>>>>>> +
>>>>>> +<!--
>>>>>> +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.
>>>>>> +-->
>>>>>> +
>>>>>> +<project xmlns="http://maven.apache.org/POM/4.0.0"
>>>>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>>>>> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
>>>>>> http://maven.apache.org/xsd/maven-4.0.0.xsd">
>>>>>> + <modelVersion>4.0.0</modelVersion>
>>>>>> +
>>>>>> + <groupId>org.apache.maven.plugin.pmd.its</groupId>
>>>>>> + <artifactId>mpmd-138-parent</artifactId>
>>>>>> + <version>1.0-SNAPSHOT</version>
>>>>>> + <packaging>pom</packaging>
>>>>>> +
>>>>>> + <name>Parent</name>
>>>>>> + <description>
>>>>>> + Test proper report generation in a multi-module build.
>>>>>> + </description>
>>>>>> +
>>>>>> + <modules>
>>>>>> + <module>mod-1</module>
>>>>>> + <module>mod-2</module>
>>>>>> + <module>mod-3</module>
>>>>>> + <module>mod-4</module>
>>>>>> + </modules>
>>>>>> +
>>>>>> + <properties>
>>>>>> +
>>>>>> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
>>>>>> + </properties>
>>>>>> +
>>>>>> + <build>
>>>>>> + <plugins>
>>>>>> + <plugin>
>>>>>> + <artifactId>maven-pmd-plugin</artifactId>
>>>>>> + <version>@project.version@</version>
>>>>>> + <executions>
>>>>>> + <execution>
>>>>>> + <goals>
>>>>>> + <goal>check</goal>
>>>>>> + <goal>cpd-check</goal>
>>>>>> + </goals>
>>>>>> + </execution>
>>>>>> + </executions>
>>>>>> + <configuration>
>>>>>> + <verbose>true</verbose>
>>>>>> + <minimumTokens>25</minimumTokens>
>>>>>> + <failOnViolation>false</failOnViolation> <!-- force
>>>>>> execution of both goals, will be checked with verify-script -->
>>>>>> + </configuration>
>>>>>> + </plugin>
>>>>>> + </plugins>
>>>>>> + </build>
>>>>>> +</project>
>>>>>> \ No newline at end of file
>>>>>>
>>>>>> Added:
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/verify.groovy
>>>>>> URL:
>>>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/verify.groovy?rev=1233066&view=auto
>>>>>>
>>>>>>
>>>>>> ==============================================================================
>>>>>>
>>>>>>
>>>>>> ---
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/verify.groovy
>>>>>> (added)
>>>>>> +++
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/verify.groovy
>>>>>> Wed Jan 18 20:59:15 2012
>>>>>> @@ -0,0 +1,37 @@
>>>>>> +
>>>>>> +/*
>>>>>> + * 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.
>>>>>> + */
>>>>>> +
>>>>>> +File buildLog = new File( basedir, 'build.log' )
>>>>>> +assert buildLog.exists()
>>>>>> +
>>>>>> +// Module 1
>>>>>> +assert 1 == buildLog.getText().count('[INFO] PMD Failure:
>>>>>> test.MyClass:8 Rule:EmptyStatementNotInLoop Priority:3 An empty
>>>>>> statement (semicolon) not part of a loop.')
>>>>>> +assert 1 == buildLog.getText().count('[INFO] PMD Failure:
>>>>>> test.MyClass:9 Rule:UnnecessaryReturn Priority:3 Avoid unnecessary
>>>>>> return statements.')
>>>>>> +assert 1 == buildLog.getText().count('[INFO] You have 2 PMD
>>>>>> violations. For more details see:')
>>>>>> +
>>>>>> +// Module 2
>>>>>> +assert 1 == buildLog.getText().count('[INFO] PMD Failure:
>>>>>> test.MyClass:8 Rule:EmptyStatementNotInLoop Priority:3 TEST:
>>>>>> LOCAL-FILE-RULESET.')
>>>>>> +assert 1 == buildLog.getText().count('[INFO] You have 1 PMD
>>>>>> violation. For more details see:')
>>>>>> +
>>>>>> +// Module 3
>>>>>> +assert 1 == buildLog.getText().count('[INFO] You have 1 CPD
>>>>>> duplication. For more details see:')
>>>>>> +
>>>>>> +// Module 4
>>>>>> +assert 1 == buildLog.getText().count('[INFO] You have 2 CPD
>>>>>> duplications. For more details see:')
>>>>>> \ No newline at end of file
>>>>>>
>>>>>> Modified:
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/AbstractPmdViolationCheckMojo.java
>>>>>>
>>>>>>
>>>>>> URL:
>>>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/AbstractPmdViolationCheckMojo.java?rev=1233066&r1=1233065&r2=1233066&view=diff
>>>>>>
>>>>>>
>>>>>> ==============================================================================
>>>>>>
>>>>>>
>>>>>> ---
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/AbstractPmdViolationCheckMojo.java
>>>>>>
>>>>>> (original)
>>>>>> +++
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/AbstractPmdViolationCheckMojo.java
>>>>>>
>>>>>> Wed Jan 18 20:59:15 2012
>>>>>> @@ -23,19 +23,13 @@ import java.io.File;
>>>>>> import java.io.IOException;
>>>>>> import java.io.Reader;
>>>>>> import java.util.ArrayList;
>>>>>> -import java.util.HashMap;
>>>>>> import java.util.List;
>>>>>> -import java.util.Map;
>>>>>>
>>>>>> import org.apache.maven.plugin.AbstractMojo;
>>>>>> import org.apache.maven.plugin.MojoExecutionException;
>>>>>> import org.apache.maven.plugin.MojoFailureException;
>>>>>> import org.apache.maven.project.MavenProject;
>>>>>> import org.codehaus.plexus.util.IOUtil;
>>>>>> -import org.codehaus.plexus.util.ReaderFactory;
>>>>>> -import org.codehaus.plexus.util.StringUtils;
>>>>>> -import org.codehaus.plexus.util.xml.pull.MXParser;
>>>>>> -import org.codehaus.plexus.util.xml.pull.XmlPullParser;
>>>>>> import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
>>>>>>
>>>>>> /**
>>>>>> @@ -44,13 +38,9 @@ import org.codehaus.plexus.util.xml.pull
>>>>>> * @author <a href="mailto:brett@apache.org">Brett Porter</a>
>>>>>> * @version $Id$
>>>>>> */
>>>>>> -public abstract class AbstractPmdViolationCheckMojo
>>>>>> +public abstract class AbstractPmdViolationCheckMojo<D>
>>>>>> extends AbstractMojo
>>>>>> {
>>>>>> - private static final Boolean FAILURES_KEY = Boolean.TRUE;
>>>>>> -
>>>>>> - private static final Boolean WARNINGS_KEY = Boolean.FALSE;
>>>>>> -
>>>>>> /**
>>>>>> * The location of the XML report to check, as generated by the
>>>>>> PMD report.
>>>>>> *
>>>>>> @@ -117,14 +107,10 @@ public abstract class AbstractPmdViolati
>>>>>> Reader reader = null;
>>>>>> try
>>>>>> {
>>>>>> - XmlPullParser xpp = new MXParser();
>>>>>> - reader = ReaderFactory.newXmlReader(
>>>>>> outputFile );
>>>>>> - xpp.setInput( reader );
>>>>>> -
>>>>>> - Map<Boolean, List<Map<String, String>>>
>>>>>> violations = getViolations( xpp, tagName, failurePriority );
>>>>>> + ViolationDetails<D> violations = getViolations(
>>>>>> outputFile, failurePriority );
>>>>>>
>>>>>> - List<Map<String, String>> failures =
>>>>>> violations.get( FAILURES_KEY );
>>>>>> - List<Map<String, String>> warnings =
>>>>>> violations.get( WARNINGS_KEY );
>>>>>> + List<D> failures =
>>>>>> violations.getFailureDetails();
>>>>>> + List<D> warnings =
>>>>>> violations.getWarningDetails();
>>>>>>
>>>>>> if ( verbose )
>>>>>> {
>>>>>> @@ -178,86 +164,36 @@ public abstract class AbstractPmdViolati
>>>>>> * @throws XmlPullParserException
>>>>>> * @throws IOException
>>>>>> */
>>>>>> - private Map<Boolean, List<Map<String, String>>> getViolations(
>>>>>> XmlPullParser xpp, String tagName, int failurePriority )
>>>>>> + private ViolationDetails<D> getViolations( File analysisFile,
>>>>>> int failurePriority )
>>>>>> throws XmlPullParserException, IOException
>>>>>> {
>>>>>> - int eventType = xpp.getEventType();
>>>>>> -
>>>>>> - List<Map<String, String>> failures = new
>>>>>> ArrayList<Map<String, String>>();
>>>>>> - List<Map<String, String>> warnings = new
>>>>>> ArrayList<Map<String, String>>();
>>>>>> -
>>>>>> - String fullpath = null;
>>>>>> + List<D> failures = new ArrayList<D>();
>>>>>> + List<D> warnings = new ArrayList<D>();
>>>>>>
>>>>>> - while ( eventType != XmlPullParser.END_DOCUMENT )
>>>>>> + List<D> violations = getErrorDetails( analysisFile );
>>>>>> +
>>>>>> + for( D violation : violations )
>>>>>> {
>>>>>> - if ( eventType == XmlPullParser.START_TAG &&
>>>>>> "file".equals( xpp.getName() ) )
>>>>>> + int priority = getPriority( violation );
>>>>>> + if ( priority <= failurePriority )
>>>>>> {
>>>>>> - fullpath = xpp.getAttributeValue( "", "name" );
>>>>>> + failures.add( violation );
>>>>>> }
>>>>>> - if ( eventType == XmlPullParser.START_TAG &&
>>>>>> tagName.equals( xpp.getName() ) )
>>>>>> - {
>>>>>> - Map<String, String> details = getErrorDetails(
>>>>>> xpp );
>>>>>> -
>>>>>> - if ( fullpath != null )
>>>>>> - {
>>>>>> - details.put( "filename", getFilename( fullpath,
>>>>>> details.get( "package" ) ) );
>>>>>> - }
>>>>>> -
>>>>>> - try
>>>>>> - {
>>>>>> - int priority = Integer.parseInt( details.get(
>>>>>> "priority" ) );
>>>>>> - if ( priority <= failurePriority )
>>>>>> - {
>>>>>> - failures.add( details );
>>>>>> - }
>>>>>> - else
>>>>>> - {
>>>>>> - warnings.add( details );
>>>>>> - }
>>>>>> - }
>>>>>> - catch ( NumberFormatException e )
>>>>>> - {
>>>>>> - // I don't know what priority this is. Treat it
>>>>>> like a
>>>>>> - // failure
>>>>>> - failures.add( details );
>>>>>> - }
>>>>>> - catch ( NullPointerException e )
>>>>>> - {
>>>>>> - // I don't know what priority this is. Treat it
>>>>>> like a
>>>>>> - // failure
>>>>>> - failures.add( details );
>>>>>> - }
>>>>>> -
>>>>>> - }
>>>>>> -
>>>>>> - eventType = xpp.next();
>>>>>> - }
>>>>>> -
>>>>>> - Map<Boolean, List<Map<String, String>>> map = new
>>>>>> HashMap<Boolean, List<Map<String, String>>>( 2 );
>>>>>> - map.put( FAILURES_KEY, failures );
>>>>>> - map.put( WARNINGS_KEY, warnings );
>>>>>> - return map;
>>>>>> - }
>>>>>> -
>>>>>> - private String getFilename( String fullpath, String pkg )
>>>>>> - {
>>>>>> - int index = fullpath.lastIndexOf( File.separatorChar );
>>>>>> -
>>>>>> - while ( StringUtils.isNotEmpty( pkg ) )
>>>>>> - {
>>>>>> - index = fullpath.substring( 0, index ).lastIndexOf(
>>>>>> File.separatorChar );
>>>>>> -
>>>>>> - int dot = pkg.indexOf( '.' );
>>>>>> -
>>>>>> - if ( dot < 0 )
>>>>>> + else
>>>>>> {
>>>>>> - break;
>>>>>> + warnings.add( violation );
>>>>>> }
>>>>>> - pkg = pkg.substring( dot + 1 );
>>>>>> }
>>>>>> -
>>>>>> - return fullpath.substring( index + 1 );
>>>>>> +
>>>>>> + ViolationDetails<D> details = newViolationDetailsInstance();
>>>>>> + details.setFailureDetails( failures );
>>>>>> + details.setWarningDetails( warnings );
>>>>>> + return details;
>>>>>> }
>>>>>> +
>>>>>> + protected abstract int getPriority( D errorDetail );
>>>>>> +
>>>>>> + protected abstract ViolationDetails<D>
>>>>>> newViolationDetailsInstance();
>>>>>>
>>>>>> /**
>>>>>> * Prints the warnings and failures
>>>>>> @@ -267,14 +203,14 @@ public abstract class AbstractPmdViolati
>>>>>> * @param warnings
>>>>>> * list of warnings
>>>>>> */
>>>>>> - protected void printErrors( List<Map<String, String>> failures,
>>>>>> List<Map<String, String>> warnings )
>>>>>> + protected void printErrors( List<D> failures, List<D> warnings )
>>>>>> {
>>>>>> - for ( Map<String, String> warning : warnings )
>>>>>> + for ( D warning : warnings )
>>>>>> {
>>>>>> printError( warning, "Warning" );
>>>>>> }
>>>>>>
>>>>>> - for ( Map<String, String> failure : failures )
>>>>>> + for ( D failure : failures )
>>>>>> {
>>>>>> printError( failure, "Failure" );
>>>>>> }
>>>>>> @@ -322,7 +258,7 @@ public abstract class AbstractPmdViolati
>>>>>> *
>>>>>> * @param item
>>>>>> */
>>>>>> - protected abstract void printError( Map<String, String> item,
>>>>>> String severity );
>>>>>> + protected abstract void printError( D item, String severity );
>>>>>>
>>>>>> /**
>>>>>> * Gets the attributes and text for the violation tag and puts
>>>>>> them in a
>>>>>> @@ -332,6 +268,6 @@ public abstract class AbstractPmdViolati
>>>>>> * @throws XmlPullParserException
>>>>>> * @throws IOException
>>>>>> */
>>>>>> - protected abstract Map<String, String> getErrorDetails(
>>>>>> XmlPullParser xpp )
>>>>>> + protected abstract List<D> getErrorDetails( File analisysFile )
>>>>>> throws XmlPullParserException, IOException;
>>>>>> }
>>>>>> \ No newline at end of file
>>>>>>
>>>>>> Modified:
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/CpdViolationCheckMojo.java
>>>>>>
>>>>>>
>>>>>> URL:
>>>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/CpdViolationCheckMojo.java?rev=1233066&r1=1233065&r2=1233066&view=diff
>>>>>>
>>>>>>
>>>>>> ==============================================================================
>>>>>>
>>>>>>
>>>>>> ---
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/CpdViolationCheckMojo.java
>>>>>>
>>>>>> (original)
>>>>>> +++
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/CpdViolationCheckMojo.java
>>>>>>
>>>>>> Wed Jan 18 20:59:15 2012
>>>>>> @@ -19,13 +19,17 @@ package org.apache.maven.plugin.pmd;
>>>>>> * under the License.
>>>>>> */
>>>>>>
>>>>>> +import java.io.File;
>>>>>> +import java.io.FileReader;
>>>>>> import java.io.IOException;
>>>>>> -import java.util.HashMap;
>>>>>> -import java.util.Map;
>>>>>> +import java.util.List;
>>>>>>
>>>>>> import org.apache.maven.plugin.MojoExecutionException;
>>>>>> import org.apache.maven.plugin.MojoFailureException;
>>>>>> -import org.codehaus.plexus.util.xml.pull.XmlPullParser;
>>>>>> +import org.apache.maven.plugin.pmd.model.CpdErrorDetail;
>>>>>> +import org.apache.maven.plugin.pmd.model.CpdFile;
>>>>>> +import org.apache.maven.plugin.pmd.model.Duplication;
>>>>>> +import org.apache.maven.plugin.pmd.model.io.xpp3.CpdXpp3Reader;
>>>>>> import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
>>>>>>
>>>>>> /**
>>>>>> @@ -39,7 +43,7 @@ import org.codehaus.plexus.util.xml.pull
>>>>>> * @threadSafe
>>>>>> */
>>>>>> public class CpdViolationCheckMojo
>>>>>> - extends AbstractPmdViolationCheckMojo
>>>>>> + extends AbstractPmdViolationCheckMojo<Duplication>
>>>>>> {
>>>>>>
>>>>>> /**
>>>>>> @@ -61,9 +65,9 @@ public class CpdViolationCheckMojo
>>>>>> }
>>>>>>
>>>>>> /** {@inheritDoc} */
>>>>>> - protected void printError( Map item, String severity )
>>>>>> + protected void printError( Duplication item, String severity )
>>>>>> {
>>>>>> - String lines = (String) item.get( "lines" );
>>>>>> + int lines = item.getLines();
>>>>>>
>>>>>>
>>>>>> StringBuffer buff = new StringBuffer( 100 );
>>>>>> @@ -71,68 +75,38 @@ public class CpdViolationCheckMojo
>>>>>> buff.append( lines ).append( " lines of duplicated code at
>>>>>> locations:" );
>>>>>> this.getLog().info( buff.toString() );
>>>>>>
>>>>>> - buff.setLength( 0 );
>>>>>> - buff.append( " " );
>>>>>> - Map file = (Map) item.get( "file" );
>>>>>> - buff.append( file.get( "path" ) );
>>>>>> - buff.append( " line " ).append( file.get( "line" ) );
>>>>>> - this.getLog().info( buff.toString() );
>>>>>> -
>>>>>> - buff.setLength( 0 );
>>>>>> - buff.append( " " );
>>>>>> - file = (Map) item.get( "file1" );
>>>>>> - buff.append( file.get( "path" ) );
>>>>>> - buff.append( " line " ).append( file.get( "line" ) );
>>>>>> - this.getLog().info( buff.toString() );
>>>>>> +
>>>>>> + for( CpdFile file : item.getFiles() )
>>>>>> + {
>>>>>> + buff.setLength( 0 );
>>>>>> + buff.append( " " );
>>>>>> + buff.append( file.getPath() );
>>>>>> + buff.append( " line " ).append( file.getLine() );
>>>>>> + this.getLog().info( buff.toString() );
>>>>>> + }
>>>>>>
>>>>>> - Map codefrag = (Map) item.get( "codefragment" );
>>>>>> - String codefragstr = (String) codefrag.get( "text" );
>>>>>> this.getLog().debug( "CPD " + severity + ": Code Fragment
>>>>>> " );
>>>>>> - this.getLog().debug( codefragstr );
>>>>>> + this.getLog().debug( item.getCodefragment() );
>>>>>> }
>>>>>>
>>>>>> /** {@inheritDoc} */
>>>>>> - protected Map getErrorDetails( XmlPullParser xpp )
>>>>>> + protected List<Duplication> getErrorDetails( File cpdFile )
>>>>>> throws XmlPullParserException, IOException
>>>>>> {
>>>>>> - int index = 0;
>>>>>> - int attributeCount = 0;
>>>>>> - HashMap msgs = new HashMap();
>>>>>> -
>>>>>> - attributeCount = xpp.getAttributeCount();
>>>>>> - while ( index < attributeCount )
>>>>>> - {
>>>>>> - msgs.put( xpp.getAttributeName( index ),
>>>>>> xpp.getAttributeValue( index ) );
>>>>>> -
>>>>>> - index++;
>>>>>> - }
>>>>>> -
>>>>>> - int tp = xpp.next();
>>>>>> - while ( tp != XmlPullParser.END_TAG )
>>>>>> - {
>>>>>> - // get the tag's text
>>>>>> - switch ( tp )
>>>>>> - {
>>>>>> - case XmlPullParser.TEXT:
>>>>>> - msgs.put( "text", xpp.getText().trim() );
>>>>>> - break;
>>>>>> - case XmlPullParser.START_TAG:
>>>>>> - String nm = xpp.getName();
>>>>>> - if ( msgs.containsKey( nm ) )
>>>>>> - {
>>>>>> - int cnt = 1;
>>>>>> - while ( msgs.containsKey( nm + cnt ) )
>>>>>> - {
>>>>>> - ++cnt;
>>>>>> - }
>>>>>> - nm = nm + cnt;
>>>>>> - }
>>>>>> - msgs.put( nm, getErrorDetails( xpp ) );
>>>>>> - break;
>>>>>> - default:
>>>>>> - }
>>>>>> - tp = xpp.next();
>>>>>> - }
>>>>>> - return msgs;
>>>>>> + CpdXpp3Reader reader = new CpdXpp3Reader();
>>>>>> + CpdErrorDetail details = reader.read( new FileReader(
>>>>>> cpdFile ), false );
>>>>>> + return details.getDuplications();
>>>>>> + }
>>>>>> +
>>>>>> + @Override
>>>>>> + protected int getPriority( Duplication errorDetail )
>>>>>> + {
>>>>>> + return 0;
>>>>>> + }
>>>>>> +
>>>>>> + @Override
>>>>>> + protected ViolationDetails<Duplication>
>>>>>> newViolationDetailsInstance()
>>>>>> + {
>>>>>> + return new ViolationDetails<Duplication>();
>>>>>> }
>>>>>> -}
>>>>>> +}
>>>>>> \ No newline at end of file
>>>>>>
>>>>>> Modified:
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdViolationCheckMojo.java
>>>>>>
>>>>>>
>>>>>> URL:
>>>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdViolationCheckMojo.java?rev=1233066&r1=1233065&r2=1233066&view=diff
>>>>>>
>>>>>>
>>>>>> ==============================================================================
>>>>>>
>>>>>>
>>>>>> ---
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdViolationCheckMojo.java
>>>>>>
>>>>>> (original)
>>>>>> +++
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdViolationCheckMojo.java
>>>>>>
>>>>>> Wed Jan 18 20:59:15 2012
>>>>>> @@ -19,12 +19,19 @@ package org.apache.maven.plugin.pmd;
>>>>>> * under the License.
>>>>>> */
>>>>>>
>>>>>> +import java.io.File;
>>>>>> +import java.io.FileReader;
>>>>>> import java.io.IOException;
>>>>>> -import java.util.HashMap;
>>>>>> -import java.util.Map;
>>>>>> +import java.util.ArrayList;
>>>>>> +import java.util.List;
>>>>>>
>>>>>> import org.apache.maven.plugin.MojoExecutionException;
>>>>>> import org.apache.maven.plugin.MojoFailureException;
>>>>>> +import org.apache.maven.plugin.pmd.model.PmdErrorDetail;
>>>>>> +import org.apache.maven.plugin.pmd.model.PmdFile;
>>>>>> +import org.apache.maven.plugin.pmd.model.Violation;
>>>>>> +import org.apache.maven.plugin.pmd.model.io.xpp3.PmdXpp3Reader;
>>>>>> +import org.codehaus.plexus.util.StringUtils;
>>>>>> import org.codehaus.plexus.util.xml.pull.XmlPullParser;
>>>>>> import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
>>>>>>
>>>>>> @@ -39,7 +46,7 @@ import org.codehaus.plexus.util.xml.pull
>>>>>> * @threadSafe
>>>>>> */
>>>>>> public class PmdViolationCheckMojo
>>>>>> - extends AbstractPmdViolationCheckMojo
>>>>>> + extends AbstractPmdViolationCheckMojo<Violation>
>>>>>> {
>>>>>> /**
>>>>>> * What priority level to fail the build on. Failures at or
>>>>>> above this level
>>>>>> @@ -71,55 +78,83 @@ public class PmdViolationCheckMojo
>>>>>> }
>>>>>>
>>>>>> /** {@inheritDoc} */
>>>>>> - protected void printError( Map<String, String> item, String
>>>>>> severity )
>>>>>> + protected void printError( Violation item, String severity )
>>>>>> {
>>>>>>
>>>>>> StringBuffer buff = new StringBuffer( 100 );
>>>>>> buff.append( "PMD " + severity + ": " );
>>>>>> - if ( item.containsKey( "class" ) )
>>>>>> + if ( item.getViolationClass() != null )
>>>>>> {
>>>>>> - if ( item.containsKey( "package" ) )
>>>>>> + if ( item.getViolationPackage() != null )
>>>>>> {
>>>>>> - buff.append( item.get( "package" ) );
>>>>>> + buff.append( item.getViolationPackage() );
>>>>>> buff.append( "." );
>>>>>> }
>>>>>> - buff.append( item.get( "class" ) );
>>>>>> + buff.append( item.getViolationClass() );
>>>>>> }
>>>>>> else
>>>>>> {
>>>>>> - buff.append( item.get( "filename" ) );
>>>>>> + buff.append( item.getFileName() );
>>>>>> }
>>>>>> buff.append( ":" );
>>>>>> - buff.append( item.get( "beginline" ) );
>>>>>> - buff.append( " Rule:" ).append( item.get( "rule" ) );
>>>>>> - buff.append( " Priority:" ).append( item.get( "priority"
>>>>>> ) );
>>>>>> - buff.append( " " ).append( item.get( "text" ) ).append(
>>>>>> "." );
>>>>>> + buff.append( item.getBeginline() );
>>>>>> + buff.append( " Rule:" ).append( item.getRule() );
>>>>>> + buff.append( " Priority:" ).append( item.getPriority() );
>>>>>> + buff.append( " " ).append( item.getText() ).append( "." );
>>>>>>
>>>>>> this.getLog().info( buff.toString() );
>>>>>> }
>>>>>> -
>>>>>> - /** {@inheritDoc} */
>>>>>> - protected Map<String, String> getErrorDetails( XmlPullParser
>>>>>> xpp )
>>>>>> +
>>>>>> + @Override
>>>>>> + protected List<Violation> getErrorDetails( File pmdFile )
>>>>>> throws XmlPullParserException, IOException
>>>>>> {
>>>>>> - int index = 0;
>>>>>> - int attributeCount = 0;
>>>>>> - Map<String, String> msgs = new HashMap<String, String>();
>>>>>> + PmdXpp3Reader reader = new PmdXpp3Reader();
>>>>>> + PmdErrorDetail details = reader.read( new FileReader(
>>>>>> pmdFile ), false );
>>>>>>
>>>>>> - attributeCount = xpp.getAttributeCount();
>>>>>> - while ( index < attributeCount )
>>>>>> + List<Violation> violations = new ArrayList<Violation>();
>>>>>> + for( PmdFile file : details.getFiles() )
>>>>>> {
>>>>>> -
>>>>>> - msgs.put( xpp.getAttributeName( index ),
>>>>>> xpp.getAttributeValue( index ) );
>>>>>> -
>>>>>> - index++;
>>>>>> + String fullPath = file.getName();
>>>>>> +
>>>>>> + for ( Violation violation : file.getViolations() )
>>>>>> + {
>>>>>> + violation.setFileName( getFilename( fullPath,
>>>>>> violation.getViolationPackage() ) );
>>>>>> + violations.add( violation );
>>>>>> + }
>>>>>> }
>>>>>> + return violations;
>>>>>> + }
>>>>>> +
>>>>>> + @Override
>>>>>> + protected int getPriority( Violation errorDetail )
>>>>>> + {
>>>>>> + return errorDetail.getPriority();
>>>>>> + }
>>>>>> +
>>>>>> + @Override
>>>>>> + protected ViolationDetails<Violation>
>>>>>> newViolationDetailsInstance()
>>>>>> + {
>>>>>> + return new ViolationDetails<Violation>();
>>>>>> + }
>>>>>> +
>>>>>> + private String getFilename( String fullpath, String pkg )
>>>>>> + {
>>>>>> + int index = fullpath.lastIndexOf( File.separatorChar );
>>>>>>
>>>>>> - // get the tag's text
>>>>>> - if ( xpp.next() == XmlPullParser.TEXT )
>>>>>> + while ( StringUtils.isNotEmpty( pkg ) )
>>>>>> {
>>>>>> - msgs.put( "text", xpp.getText().trim() );
>>>>>> + index = fullpath.substring( 0, index ).lastIndexOf(
>>>>>> File.separatorChar );
>>>>>> +
>>>>>> + int dot = pkg.indexOf( '.' );
>>>>>> +
>>>>>> + if ( dot < 0 )
>>>>>> + {
>>>>>> + break;
>>>>>> + }
>>>>>> + pkg = pkg.substring( dot + 1 );
>>>>>> }
>>>>>> - return msgs;
>>>>>> +
>>>>>> + return fullpath.substring( index + 1 );
>>>>>> }
>>>>>> }
>>>>>> \ No newline at end of file
>>>>>>
>>>>>> Added:
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/ViolationDetails.java
>>>>>>
>>>>>>
>>>>>> URL:
>>>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/ViolationDetails.java?rev=1233066&view=auto
>>>>>>
>>>>>>
>>>>>> ==============================================================================
>>>>>>
>>>>>>
>>>>>> ---
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/ViolationDetails.java
>>>>>>
>>>>>> (added)
>>>>>> +++
>>>>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/ViolationDetails.java
>>>>>>
>>>>>> Wed Jan 18 20:59:15 2012
>>>>>> @@ -0,0 +1,69 @@
>>>>>> +package org.apache.maven.plugin.pmd;
>>>>>> +
>>>>>> +/*
>>>>>> + * 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.
>>>>>> + */
>>>>>> +
>>>>>> +import java.util.ArrayList;
>>>>>> +import java.util.List;
>>>>>> +
>>>>>> +/**
>>>>>> + * Collector of warnings and failures.
>>>>>> + *
>>>>>> + * @author Robert Scholte
>>>>>> + * @param <D>
>>>>>> + * @since 2.7
>>>>>> + */
>>>>>> +public class ViolationDetails<D>
>>>>>> +{
>>>>>> + private List<D> warningDetails = new ArrayList<D>();
>>>>>> +
>>>>>> + private List<D> failureDetails = new ArrayList<D>();
>>>>>> +
>>>>>> + /**
>>>>>> + * @return the warningDetails, never {@code null}
>>>>>> + */
>>>>>> + public List<D> getWarningDetails()
>>>>>> + {
>>>>>> + return warningDetails;
>>>>>> + }
>>>>>> +
>>>>>> + /**
>>>>>> + * @param warningDetails the warningDetails to set
>>>>>> + */
>>>>>> + public void setWarningDetails( List<D> warningDetails )
>>>>>> + {
>>>>>> + this.warningDetails = warningDetails;
>>>>>> + }
>>>>>> +
>>>>>> + /**
>>>>>> + * @return the failureDetails, never {@code null}
>>>>>> + */
>>>>>> + public List<D> getFailureDetails()
>>>>>> + {
>>>>>> + return failureDetails;
>>>>>> + }
>>>>>> +
>>>>>> + /**
>>>>>> + * @param failureDetails the failureDetails to set
>>>>>> + */
>>>>>> + public void setFailureDetails( List<D> failureDetails )
>>>>>> + {
>>>>>> + this.failureDetails = failureDetails;
>>>>>> + }
>>>>>> +}
>>>>>> \ No newline at end of file
>>>>>>
>>>>>> Added: maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/cpd.mdo
>>>>>> URL:
>>>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/cpd.mdo?rev=1233066&view=auto
>>>>>>
>>>>>>
>>>>>> ==============================================================================
>>>>>>
>>>>>>
>>>>>> --- maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/cpd.mdo (added)
>>>>>> +++ maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/cpd.mdo Wed
>>>>>> Jan 18 20:59:15 2012
>>>>>> @@ -0,0 +1,70 @@
>>>>>> +<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>
>>>>>> + <name>codefragment</name>
>>>>>> + <type>String</type>
>>>>>> + </field>
>>>>>> + </fields>
>>>>>> + </class>
>>>>>> + <class xml.tagName="file">
>>>>>> + <name>CpdFile</name>
>>>>>> + <fields>
>>>>>> + <field xml.attribute="true">
>>>>>> + <name>line</name>
>>>>>> + <type>int</type>
>>>>>> + </field>
>>>>>> + <field xml.attribute="true">
>>>>>> + <name>path</name>
>>>>>> + <type>String</type>
>>>>>> + </field>
>>>>>> + </fields>
>>>>>> + </class>
>>>>>> + </classes>
>>>>>> +</model>
>>>>>> \ No newline at end of file
>>>>>>
>>>>>> Added: maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/pmd.mdo
>>>>>> URL:
>>>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/pmd.mdo?rev=1233066&view=auto
>>>>>>
>>>>>>
>>>>>> ==============================================================================
>>>>>>
>>>>>>
>>>>>> --- maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/pmd.mdo (added)
>>>>>> +++ maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/pmd.mdo Wed
>>>>>> Jan 18 20:59:15 2012
>>>>>> @@ -0,0 +1,109 @@
>>>>>> +<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">
>>>>>> + <type>Violation</type>
>>>>>> + <multiplicity>*</multiplicity>
>>>>>> + </association>
>>>>>> + </field>
>>>>>> + </fields>
>>>>>> + </class>
>>>>>> + <class>
>>>>>> + <name>Violation</name>
>>>>>> + <fields>
>>>>>> + <field xml.attribute="true">
>>>>>> + <name>beginline</name>
>>>>>> + <type>int</type>
>>>>>> + </field>
>>>>>> + <field xml.tagName="class" xml.attribute="true">
>>>>>> + <name>violationClass</name>
>>>>>> + <type>String</type>
>>>>>> + </field>
>>>>>> + <field xml.tagName="package" xml.attribute="true">
>>>>>> + <name>violationPackage</name>
>>>>>> + <type>String</type>
>>>>>> + </field>
>>>>>> + <field xml.attribute="true">
>>>>>> + <name>rule</name>
>>>>>> + <type>String</type>
>>>>>> + </field>
>>>>>> + <field xml.attribute="true">
>>>>>> + <name>priority</name>
>>>>>> + <type>int</type>
>>>>>> + </field>
>>>>>> + <field xml.content="true">
>>>>>> + <name>text</name>
>>>>>> + <type>String</type>
>>>>>> + </field>
>>>>>> + </fields>
>>>>>> + <codeSegments>
>>>>>> + <codeSegment>
>>>>>> + <code>
>>>>>> + <![CDATA[
>>>>>> + private String fileName;
>>>>>> +
>>>>>> + public void setFileName( String fileName )
>>>>>> + {
>>>>>> + this.fileName = fileName;
>>>>>> + }
>>>>>> +
>>>>>> + public String getFileName()
>>>>>> + {
>>>>>> + return fileName;
>>>>>> + }
>>>>>> + ]]>
>>>>>> + </code>
>>>>>> + </codeSegment>
>>>>>> + </codeSegments>
>>>>>> + </class>
>>>>>> + </classes>
>>>>>> +
>>>>>> +
>>>>>> +
>>>>>> +</model>
>>>>>> \ No newline at end of file
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
>>> For additional commands, e-mail: dev-help@maven.apache.org
>>>
>>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
> For additional commands, e-mail: dev-help@maven.apache.org
>
>
--
Dennis Lundberg
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org
Re: svn commit: r1233066 - in /maven/plugins/trunk/maven-pmd-plugin:
./ src/it/mpmd-138/ src/it/mpmd-138/mod-1/ src/it/mpmd-138/mod-1/src/
src/it/mpmd-138/mod-1/src/main/ src/it/mpmd-138/mod-1/src/main/config/
src/it/mpmd-138/mod-1/src/main/config/pmd/ src...
Posted by Robert Scholte <ap...@sourcegrounds.com>.
Hi Dennis,
Win7 with both M2.2.1 and M3.0.4 look fine now.
Can you confirm the complete set?
-Robert
On Thu, 26 Jan 2012 22:22:55 +0100, Dennis Lundberg <de...@apache.org>
wrote:
> Thanks Robert
>
> Let me know what I can do to help.
>
> On 2012-01-26 21:47, Robert Scholte wrote:
>> Always nice, unstable tests :S
>> Win7 + M3.0.4 sometimes fails, sometimes succeed.
>>
>> This shows there are not enough tests for the m-pmd-p.
>> Easiest solution is to remove a few verification-lines, but actually I
>> want to know what's going on.
>>
>> I'll dive into this.
>>
>> -Robert
>>
>> On Wed, 25 Jan 2012 23:10:30 +0100, Dennis Lundberg <de...@apache.org>
>> wrote:
>>
>>> Some more data on my setup:
>>>
>>> On Ubuntu the IT fails with Maven 2.2.1, but it works with Maven 3.0.3
>>>
>>> On Windows 7 the IT fails with both Maven 2.2.1 and Maven 3.0.3
>>>
>>>
>>> On 2012-01-25 23:06, Dennis Lundberg wrote:
>>>> Hi Robert,
>>>>
>>>> The new IT mpmd-138 is failing for me on both Windows 7 and Ubuntu:
>>>>
>>>> [INFO] Building: mpmd-138\pom.xml
>>>> [INFO] ..FAILED (10.9 s)
>>>> [INFO] The post-build script did not succeed. Expression: (1 ==
>>>> buildLog.getText().count([INFO] PMD Failure: test.MyClass:8
>>>> Rule:EmptyStatementNotInLoop Priority:3 An empty statement (semicolon)
>>>> not part of a loop.))
>>>>
>>>> Can you have a look at it?
>>>>
>>>> On 2012-01-18 21:59, rfscholte@apache.org wrote:
>>>>> Author: rfscholte
>>>>> Date: Wed Jan 18 20:59:15 2012
>>>>> New Revision: 1233066
>>>>>
>>>>> URL: http://svn.apache.org/viewvc?rev=1233066&view=rev
>>>>> Log:
>>>>> Fix MPMD-138: Use modello to generate models to read pmd and cpd
>>>>> files
>>>>>
>>>>> Added:
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/
>>>>>
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/invoker.properties
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/pom.xml
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/
>>>>>
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/
>>>>>
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/
>>>>>
>>>>>
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/
>>>>>
>>>>>
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/latin-1.xml
>>>>>
>>>>>
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/utf-8.xml
>>>>>
>>>>>
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/java/
>>>>>
>>>>>
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/java/test/
>>>>>
>>>>>
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/java/test/MyClass.java
>>>>>
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/pom.xml
>>>>>
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/rulesets/
>>>>>
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/rulesets/basic.xml
>>>>>
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/src/
>>>>>
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/src/main/
>>>>>
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/src/main/java/
>>>>>
>>>>>
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/src/main/java/test/
>>>>>
>>>>>
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/src/main/java/test/MyClass.java
>>>>>
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/pom.xml
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/
>>>>>
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/
>>>>>
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/
>>>>>
>>>>>
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/
>>>>>
>>>>>
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/MyClass.java
>>>>>
>>>>>
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/sub/
>>>>>
>>>>>
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/sub/MyClass.java
>>>>>
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/pom.xml
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/
>>>>>
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/
>>>>>
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/
>>>>>
>>>>>
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/
>>>>>
>>>>>
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/MyClass.java
>>>>>
>>>>>
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/OtherClass.java
>>>>>
>>>>>
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/sub/
>>>>>
>>>>>
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/sub/MyClass.java
>>>>>
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/pom.xml
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/verify.groovy
>>>>>
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/ViolationDetails.java
>>>>>
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/cpd.mdo
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/pmd.mdo
>>>>> Modified:
>>>>> maven/plugins/trunk/maven-pmd-plugin/pom.xml
>>>>>
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/AbstractPmdViolationCheckMojo.java
>>>>>
>>>>>
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/CpdViolationCheckMojo.java
>>>>>
>>>>>
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdViolationCheckMojo.java
>>>>>
>>>>>
>>>>> Modified: maven/plugins/trunk/maven-pmd-plugin/pom.xml
>>>>> URL:
>>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/pom.xml?rev=1233066&r1=1233065&r2=1233066&view=diff
>>>>>
>>>>> ==============================================================================
>>>>>
>>>>> --- maven/plugins/trunk/maven-pmd-plugin/pom.xml (original)
>>>>> +++ maven/plugins/trunk/maven-pmd-plugin/pom.xml Wed Jan 18 20:59:15
>>>>> 2012
>>>>> @@ -68,6 +68,33 @@ under the License.
>>>>> <sitePluginVersion>3.0</sitePluginVersion>
>>>>> </properties>
>>>>>
>>>>> + <build>
>>>>> + <plugins>
>>>>> + <plugin>
>>>>> + <groupId>org.codehaus.modello</groupId>
>>>>> + <artifactId>modello-maven-plugin</artifactId>
>>>>> + <version>1.4.1</version>
>>>>> + <configuration>
>>>>> + <useJava5>true</useJava5>
>>>>> + <models>
>>>>> + <model>src/main/mdo/pmd.mdo</model>
>>>>> + <model>src/main/mdo/cpd.mdo</model>
>>>>> + </models>
>>>>> + <version>1.0</version>
>>>>> + </configuration>
>>>>> + <executions>
>>>>> + <execution>
>>>>> + <phase>generate-sources</phase>
>>>>> + <goals>
>>>>> + <goal>java</goal>
>>>>> + <goal>xpp3-reader</goal>
>>>>> + </goals>
>>>>> + </execution>
>>>>> + </executions>
>>>>> + </plugin>
>>>>> + </plugins>
>>>>> + </build>
>>>>> +
>>>>> <dependencies>
>>>>> <!-- maven -->
>>>>> <dependency>
>>>>> @@ -124,7 +151,7 @@ under the License.
>>>>> <dependency>
>>>>> <groupId>org.codehaus.plexus</groupId>
>>>>> <artifactId>plexus-utils</artifactId>
>>>>> - <version>2.0.5</version>
>>>>> + <version>2.1</version>
>>>>> </dependency>
>>>>>
>>>>> <!-- pmd -->
>>>>>
>>>>> Added:
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/invoker.properties
>>>>> URL:
>>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/invoker.properties?rev=1233066&view=auto
>>>>>
>>>>> ==============================================================================
>>>>>
>>>>> ---
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/invoker.properties
>>>>> (added)
>>>>> +++
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/invoker.properties
>>>>> Wed Jan 18 20:59:15 2012
>>>>> @@ -0,0 +1 @@
>>>>> +invoker.goals = clean verify
>>>>> \ No newline at end of file
>>>>>
>>>>> Added:
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/pom.xml
>>>>> URL:
>>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/pom.xml?rev=1233066&view=auto
>>>>>
>>>>> ==============================================================================
>>>>>
>>>>> ---
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/pom.xml
>>>>> (added)
>>>>> +++
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/pom.xml
>>>>> Wed Jan 18 20:59:15 2012
>>>>> @@ -0,0 +1,39 @@
>>>>> +<?xml version="1.0" encoding="UTF-8"?>
>>>>> +
>>>>> +<!--
>>>>> +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.
>>>>> +-->
>>>>> +
>>>>> +<project xmlns="http://maven.apache.org/POM/4.0.0"
>>>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>>>> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
>>>>> http://maven.apache.org/xsd/maven-4.0.0.xsd">
>>>>> + <modelVersion>4.0.0</modelVersion>
>>>>> +
>>>>> + <parent>
>>>>> + <groupId>org.apache.maven.plugin.pmd.its</groupId>
>>>>> + <artifactId>mpmd-138-parent</artifactId>
>>>>> + <version>1.0-SNAPSHOT</version>
>>>>> + </parent>
>>>>> +
>>>>> + <artifactId>mpmd-138-mod-1</artifactId>
>>>>> +
>>>>> + <name>Module 1</name>
>>>>> +
>>>>> + <properties>
>>>>> +
>>>>> <project.reporting.outputEncoding>ISO-8859-1</project.reporting.outputEncoding>
>>>>>
>>>>> + </properties>
>>>>> +
>>>>> +</project>
>>>>> \ No newline at end of file
>>>>>
>>>>> Added:
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/latin-1.xml
>>>>>
>>>>> URL:
>>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/latin-1.xml?rev=1233066&view=auto
>>>>>
>>>>> ==============================================================================
>>>>>
>>>>> ---
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/latin-1.xml
>>>>> (added)
>>>>> +++
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/latin-1.xml
>>>>> Wed Jan 18 20:59:15 2012
>>>>> @@ -0,0 +1,12 @@
>>>>> +<?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>
>>>>>
>>>>> Added:
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/utf-8.xml
>>>>>
>>>>> URL:
>>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/utf-8.xml?rev=1233066&view=auto
>>>>>
>>>>> ==============================================================================
>>>>>
>>>>> ---
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/utf-8.xml
>>>>> (added)
>>>>> +++
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/utf-8.xml
>>>>> Wed Jan 18 20:59:15 2012
>>>>> @@ -0,0 +1,11 @@
>>>>> +<?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>
>>>>>
>>>>> Added:
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/java/test/MyClass.java
>>>>>
>>>>> URL:
>>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/java/test/MyClass.java?rev=1233066&view=auto
>>>>>
>>>>> ==============================================================================
>>>>>
>>>>> ---
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/java/test/MyClass.java
>>>>> (added)
>>>>> +++
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/java/test/MyClass.java
>>>>> Wed Jan 18 20:59:15 2012
>>>>> @@ -0,0 +1,12 @@
>>>>> +package test;
>>>>> +
>>>>> +public class MyClass
>>>>> +{
>>>>> +
>>>>> + public static void main( String[] args )
>>>>> + {
>>>>> + ;
>>>>> + return;
>>>>> + }
>>>>> +
>>>>> +}
>>>>>
>>>>> Added:
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/pom.xml
>>>>> URL:
>>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/pom.xml?rev=1233066&view=auto
>>>>>
>>>>> ==============================================================================
>>>>>
>>>>> ---
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/pom.xml
>>>>> (added)
>>>>> +++
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/pom.xml
>>>>> Wed Jan 18 20:59:15 2012
>>>>> @@ -0,0 +1,35 @@
>>>>> +<?xml version="1.0" encoding="UTF-8"?>
>>>>> +
>>>>> +<!--
>>>>> +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.
>>>>> +-->
>>>>> +
>>>>> +<project xmlns="http://maven.apache.org/POM/4.0.0"
>>>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>>>> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
>>>>> http://maven.apache.org/xsd/maven-4.0.0.xsd">
>>>>> + <modelVersion>4.0.0</modelVersion>
>>>>> +
>>>>> + <parent>
>>>>> + <groupId>org.apache.maven.plugin.pmd.its</groupId>
>>>>> + <artifactId>mpmd-138-parent</artifactId>
>>>>> + <version>1.0-SNAPSHOT</version>
>>>>> + </parent>
>>>>> +
>>>>> + <artifactId>mpmd-138-mod-2</artifactId>
>>>>> +
>>>>> + <name>Module 2</name>
>>>>> +
>>>>> +</project>
>>>>> \ No newline at end of file
>>>>>
>>>>> Added:
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/rulesets/basic.xml
>>>>>
>>>>> URL:
>>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/rulesets/basic.xml?rev=1233066&view=auto
>>>>>
>>>>> ==============================================================================
>>>>>
>>>>> ---
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/rulesets/basic.xml
>>>>> (added)
>>>>> +++
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/rulesets/basic.xml
>>>>> Wed Jan 18 20:59:15 2012
>>>>> @@ -0,0 +1,11 @@
>>>>> +<?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>
>>>>>
>>>>> Added:
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/src/main/java/test/MyClass.java
>>>>>
>>>>> URL:
>>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/src/main/java/test/MyClass.java?rev=1233066&view=auto
>>>>>
>>>>> ==============================================================================
>>>>>
>>>>> ---
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/src/main/java/test/MyClass.java
>>>>> (added)
>>>>> +++
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/src/main/java/test/MyClass.java
>>>>> Wed Jan 18 20:59:15 2012
>>>>> @@ -0,0 +1,12 @@
>>>>> +package test;
>>>>> +
>>>>> +public class MyClass
>>>>> +{
>>>>> +
>>>>> + public static void main( String[] args )
>>>>> + {
>>>>> + ;
>>>>> + return;
>>>>> + }
>>>>> +
>>>>> +}
>>>>>
>>>>> Added:
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/pom.xml
>>>>> URL:
>>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/pom.xml?rev=1233066&view=auto
>>>>>
>>>>> ==============================================================================
>>>>>
>>>>> ---
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/pom.xml
>>>>> (added)
>>>>> +++
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/pom.xml
>>>>> Wed Jan 18 20:59:15 2012
>>>>> @@ -0,0 +1,37 @@
>>>>> +<?xml version="1.0" encoding="UTF-8"?>
>>>>> +
>>>>> +<!--
>>>>> +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.
>>>>> +-->
>>>>> +
>>>>> +<project xmlns="http://maven.apache.org/POM/4.0.0"
>>>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>>>> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
>>>>> http://maven.apache.org/xsd/maven-4.0.0.xsd">
>>>>> + <modelVersion>4.0.0</modelVersion>
>>>>> +
>>>>> + <parent>
>>>>> + <groupId>org.apache.maven.plugin.pmd.its</groupId>
>>>>> + <artifactId>mpmd-138-parent</artifactId>
>>>>> + <version>1.0-SNAPSHOT</version>
>>>>> + </parent>
>>>>> +
>>>>> + <artifactId>mpmd-138-mod-3</artifactId>
>>>>> +
>>>>> + <name>Module 3</name>
>>>>> +
>>>>> + <description>Test 3 classes with copy-paste block</description>
>>>>> +
>>>>> +</project>
>>>>> \ No newline at end of file
>>>>>
>>>>> Added:
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/MyClass.java
>>>>>
>>>>> URL:
>>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/MyClass.java?rev=1233066&view=auto
>>>>>
>>>>> ==============================================================================
>>>>>
>>>>> ---
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/MyClass.java
>>>>> (added)
>>>>> +++
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/MyClass.java
>>>>> Wed Jan 18 20:59:15 2012
>>>>> @@ -0,0 +1,39 @@
>>>>> +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 );
>>>>> + }
>>>>> + }
>>>>> +
>>>>> +}
>>>>>
>>>>> Added:
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/sub/MyClass.java
>>>>>
>>>>> URL:
>>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/sub/MyClass.java?rev=1233066&view=auto
>>>>>
>>>>> ==============================================================================
>>>>>
>>>>> ---
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/sub/MyClass.java
>>>>> (added)
>>>>> +++
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/sub/MyClass.java
>>>>> Wed Jan 18 20:59:15 2012
>>>>> @@ -0,0 +1,40 @@
>>>>> +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 );
>>>>> + }
>>>>> + }
>>>>> +}
>>>>> \ No newline at end of file
>>>>>
>>>>> Added:
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/pom.xml
>>>>> URL:
>>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/pom.xml?rev=1233066&view=auto
>>>>>
>>>>> ==============================================================================
>>>>>
>>>>> ---
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/pom.xml
>>>>> (added)
>>>>> +++
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/pom.xml
>>>>> Wed Jan 18 20:59:15 2012
>>>>> @@ -0,0 +1,37 @@
>>>>> +<?xml version="1.0" encoding="UTF-8"?>
>>>>> +
>>>>> +<!--
>>>>> +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.
>>>>> +-->
>>>>> +
>>>>> +<project xmlns="http://maven.apache.org/POM/4.0.0"
>>>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>>>> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
>>>>> http://maven.apache.org/xsd/maven-4.0.0.xsd">
>>>>> + <modelVersion>4.0.0</modelVersion>
>>>>> +
>>>>> + <parent>
>>>>> + <groupId>org.apache.maven.plugin.pmd.its</groupId>
>>>>> + <artifactId>mpmd-138-parent</artifactId>
>>>>> + <version>1.0-SNAPSHOT</version>
>>>>> + </parent>
>>>>> +
>>>>> + <artifactId>mpmd-138-mod-4</artifactId>
>>>>> +
>>>>> + <name>Module 4</name>
>>>>> +
>>>>> + <description>Test 3 classes with copy-paste block</description>
>>>>> +
>>>>> +</project>
>>>>> \ No newline at end of file
>>>>>
>>>>> Added:
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/MyClass.java
>>>>>
>>>>> URL:
>>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/MyClass.java?rev=1233066&view=auto
>>>>>
>>>>> ==============================================================================
>>>>>
>>>>> ---
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/MyClass.java
>>>>> (added)
>>>>> +++
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/MyClass.java
>>>>> Wed Jan 18 20:59:15 2012
>>>>> @@ -0,0 +1,37 @@
>>>>> +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 );
>>>>> + }
>>>>> + }
>>>>> +}
>>>>> \ No newline at end of file
>>>>>
>>>>> Added:
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/OtherClass.java
>>>>>
>>>>> URL:
>>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/OtherClass.java?rev=1233066&view=auto
>>>>>
>>>>> ==============================================================================
>>>>>
>>>>> ---
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/OtherClass.java
>>>>> (added)
>>>>> +++
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/OtherClass.java
>>>>> Wed Jan 18 20:59:15 2012
>>>>> @@ -0,0 +1,40 @@
>>>>> +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 );
>>>>> + }
>>>>> + }
>>>>> +}
>>>>> \ No newline at end of file
>>>>>
>>>>> Added:
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/sub/MyClass.java
>>>>>
>>>>> URL:
>>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/sub/MyClass.java?rev=1233066&view=auto
>>>>>
>>>>> ==============================================================================
>>>>>
>>>>> ---
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/sub/MyClass.java
>>>>> (added)
>>>>> +++
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/sub/MyClass.java
>>>>> Wed Jan 18 20:59:15 2012
>>>>> @@ -0,0 +1,36 @@
>>>>> +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 );
>>>>> + }
>>>>> + }
>>>>> +}
>>>>> \ No newline at end of file
>>>>>
>>>>> Added: maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/pom.xml
>>>>> URL:
>>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/pom.xml?rev=1233066&view=auto
>>>>>
>>>>> ==============================================================================
>>>>>
>>>>> --- maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/pom.xml
>>>>> (added)
>>>>> +++ maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/pom.xml Wed
>>>>> Jan 18 20:59:15 2012
>>>>> @@ -0,0 +1,67 @@
>>>>> +<?xml version="1.0" encoding="UTF-8"?>
>>>>> +
>>>>> +<!--
>>>>> +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.
>>>>> +-->
>>>>> +
>>>>> +<project xmlns="http://maven.apache.org/POM/4.0.0"
>>>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>>>> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
>>>>> http://maven.apache.org/xsd/maven-4.0.0.xsd">
>>>>> + <modelVersion>4.0.0</modelVersion>
>>>>> +
>>>>> + <groupId>org.apache.maven.plugin.pmd.its</groupId>
>>>>> + <artifactId>mpmd-138-parent</artifactId>
>>>>> + <version>1.0-SNAPSHOT</version>
>>>>> + <packaging>pom</packaging>
>>>>> +
>>>>> + <name>Parent</name>
>>>>> + <description>
>>>>> + Test proper report generation in a multi-module build.
>>>>> + </description>
>>>>> +
>>>>> + <modules>
>>>>> + <module>mod-1</module>
>>>>> + <module>mod-2</module>
>>>>> + <module>mod-3</module>
>>>>> + <module>mod-4</module>
>>>>> + </modules>
>>>>> +
>>>>> + <properties>
>>>>> +
>>>>> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
>>>>> + </properties>
>>>>> +
>>>>> + <build>
>>>>> + <plugins>
>>>>> + <plugin>
>>>>> + <artifactId>maven-pmd-plugin</artifactId>
>>>>> + <version>@project.version@</version>
>>>>> + <executions>
>>>>> + <execution>
>>>>> + <goals>
>>>>> + <goal>check</goal>
>>>>> + <goal>cpd-check</goal>
>>>>> + </goals>
>>>>> + </execution>
>>>>> + </executions>
>>>>> + <configuration>
>>>>> + <verbose>true</verbose>
>>>>> + <minimumTokens>25</minimumTokens>
>>>>> + <failOnViolation>false</failOnViolation> <!-- force
>>>>> execution of both goals, will be checked with verify-script -->
>>>>> + </configuration>
>>>>> + </plugin>
>>>>> + </plugins>
>>>>> + </build>
>>>>> +</project>
>>>>> \ No newline at end of file
>>>>>
>>>>> Added:
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/verify.groovy
>>>>> URL:
>>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/verify.groovy?rev=1233066&view=auto
>>>>>
>>>>> ==============================================================================
>>>>>
>>>>> ---
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/verify.groovy
>>>>> (added)
>>>>> +++
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/verify.groovy
>>>>> Wed Jan 18 20:59:15 2012
>>>>> @@ -0,0 +1,37 @@
>>>>> +
>>>>> +/*
>>>>> + * 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.
>>>>> + */
>>>>> +
>>>>> +File buildLog = new File( basedir, 'build.log' )
>>>>> +assert buildLog.exists()
>>>>> +
>>>>> +// Module 1
>>>>> +assert 1 == buildLog.getText().count('[INFO] PMD Failure:
>>>>> test.MyClass:8 Rule:EmptyStatementNotInLoop Priority:3 An empty
>>>>> statement (semicolon) not part of a loop.')
>>>>> +assert 1 == buildLog.getText().count('[INFO] PMD Failure:
>>>>> test.MyClass:9 Rule:UnnecessaryReturn Priority:3 Avoid unnecessary
>>>>> return statements.')
>>>>> +assert 1 == buildLog.getText().count('[INFO] You have 2 PMD
>>>>> violations. For more details see:')
>>>>> +
>>>>> +// Module 2
>>>>> +assert 1 == buildLog.getText().count('[INFO] PMD Failure:
>>>>> test.MyClass:8 Rule:EmptyStatementNotInLoop Priority:3 TEST:
>>>>> LOCAL-FILE-RULESET.')
>>>>> +assert 1 == buildLog.getText().count('[INFO] You have 1 PMD
>>>>> violation. For more details see:')
>>>>> +
>>>>> +// Module 3
>>>>> +assert 1 == buildLog.getText().count('[INFO] You have 1 CPD
>>>>> duplication. For more details see:')
>>>>> +
>>>>> +// Module 4
>>>>> +assert 1 == buildLog.getText().count('[INFO] You have 2 CPD
>>>>> duplications. For more details see:')
>>>>> \ No newline at end of file
>>>>>
>>>>> Modified:
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/AbstractPmdViolationCheckMojo.java
>>>>>
>>>>> URL:
>>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/AbstractPmdViolationCheckMojo.java?rev=1233066&r1=1233065&r2=1233066&view=diff
>>>>>
>>>>> ==============================================================================
>>>>>
>>>>> ---
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/AbstractPmdViolationCheckMojo.java
>>>>> (original)
>>>>> +++
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/AbstractPmdViolationCheckMojo.java
>>>>> Wed Jan 18 20:59:15 2012
>>>>> @@ -23,19 +23,13 @@ import java.io.File;
>>>>> import java.io.IOException;
>>>>> import java.io.Reader;
>>>>> import java.util.ArrayList;
>>>>> -import java.util.HashMap;
>>>>> import java.util.List;
>>>>> -import java.util.Map;
>>>>>
>>>>> import org.apache.maven.plugin.AbstractMojo;
>>>>> import org.apache.maven.plugin.MojoExecutionException;
>>>>> import org.apache.maven.plugin.MojoFailureException;
>>>>> import org.apache.maven.project.MavenProject;
>>>>> import org.codehaus.plexus.util.IOUtil;
>>>>> -import org.codehaus.plexus.util.ReaderFactory;
>>>>> -import org.codehaus.plexus.util.StringUtils;
>>>>> -import org.codehaus.plexus.util.xml.pull.MXParser;
>>>>> -import org.codehaus.plexus.util.xml.pull.XmlPullParser;
>>>>> import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
>>>>>
>>>>> /**
>>>>> @@ -44,13 +38,9 @@ import org.codehaus.plexus.util.xml.pull
>>>>> * @author <a href="mailto:brett@apache.org">Brett Porter</a>
>>>>> * @version $Id$
>>>>> */
>>>>> -public abstract class AbstractPmdViolationCheckMojo
>>>>> +public abstract class AbstractPmdViolationCheckMojo<D>
>>>>> extends AbstractMojo
>>>>> {
>>>>> - private static final Boolean FAILURES_KEY = Boolean.TRUE;
>>>>> -
>>>>> - private static final Boolean WARNINGS_KEY = Boolean.FALSE;
>>>>> -
>>>>> /**
>>>>> * The location of the XML report to check, as generated by the
>>>>> PMD report.
>>>>> *
>>>>> @@ -117,14 +107,10 @@ public abstract class AbstractPmdViolati
>>>>> Reader reader = null;
>>>>> try
>>>>> {
>>>>> - XmlPullParser xpp = new MXParser();
>>>>> - reader = ReaderFactory.newXmlReader( outputFile
>>>>> );
>>>>> - xpp.setInput( reader );
>>>>> -
>>>>> - Map<Boolean, List<Map<String, String>>>
>>>>> violations = getViolations( xpp, tagName, failurePriority );
>>>>> + ViolationDetails<D> violations = getViolations(
>>>>> outputFile, failurePriority );
>>>>>
>>>>> - List<Map<String, String>> failures =
>>>>> violations.get( FAILURES_KEY );
>>>>> - List<Map<String, String>> warnings =
>>>>> violations.get( WARNINGS_KEY );
>>>>> + List<D> failures =
>>>>> violations.getFailureDetails();
>>>>> + List<D> warnings =
>>>>> violations.getWarningDetails();
>>>>>
>>>>> if ( verbose )
>>>>> {
>>>>> @@ -178,86 +164,36 @@ public abstract class AbstractPmdViolati
>>>>> * @throws XmlPullParserException
>>>>> * @throws IOException
>>>>> */
>>>>> - private Map<Boolean, List<Map<String, String>>> getViolations(
>>>>> XmlPullParser xpp, String tagName, int failurePriority )
>>>>> + private ViolationDetails<D> getViolations( File analysisFile,
>>>>> int failurePriority )
>>>>> throws XmlPullParserException, IOException
>>>>> {
>>>>> - int eventType = xpp.getEventType();
>>>>> -
>>>>> - List<Map<String, String>> failures = new
>>>>> ArrayList<Map<String, String>>();
>>>>> - List<Map<String, String>> warnings = new
>>>>> ArrayList<Map<String, String>>();
>>>>> -
>>>>> - String fullpath = null;
>>>>> + List<D> failures = new ArrayList<D>();
>>>>> + List<D> warnings = new ArrayList<D>();
>>>>>
>>>>> - while ( eventType != XmlPullParser.END_DOCUMENT )
>>>>> + List<D> violations = getErrorDetails( analysisFile );
>>>>> +
>>>>> + for( D violation : violations )
>>>>> {
>>>>> - if ( eventType == XmlPullParser.START_TAG &&
>>>>> "file".equals( xpp.getName() ) )
>>>>> + int priority = getPriority( violation );
>>>>> + if ( priority <= failurePriority )
>>>>> {
>>>>> - fullpath = xpp.getAttributeValue( "", "name" );
>>>>> + failures.add( violation );
>>>>> }
>>>>> - if ( eventType == XmlPullParser.START_TAG &&
>>>>> tagName.equals( xpp.getName() ) )
>>>>> - {
>>>>> - Map<String, String> details = getErrorDetails( xpp
>>>>> );
>>>>> -
>>>>> - if ( fullpath != null )
>>>>> - {
>>>>> - details.put( "filename", getFilename( fullpath,
>>>>> details.get( "package" ) ) );
>>>>> - }
>>>>> -
>>>>> - try
>>>>> - {
>>>>> - int priority = Integer.parseInt( details.get(
>>>>> "priority" ) );
>>>>> - if ( priority <= failurePriority )
>>>>> - {
>>>>> - failures.add( details );
>>>>> - }
>>>>> - else
>>>>> - {
>>>>> - warnings.add( details );
>>>>> - }
>>>>> - }
>>>>> - catch ( NumberFormatException e )
>>>>> - {
>>>>> - // I don't know what priority this is. Treat it
>>>>> like a
>>>>> - // failure
>>>>> - failures.add( details );
>>>>> - }
>>>>> - catch ( NullPointerException e )
>>>>> - {
>>>>> - // I don't know what priority this is. Treat it
>>>>> like a
>>>>> - // failure
>>>>> - failures.add( details );
>>>>> - }
>>>>> -
>>>>> - }
>>>>> -
>>>>> - eventType = xpp.next();
>>>>> - }
>>>>> -
>>>>> - Map<Boolean, List<Map<String, String>>> map = new
>>>>> HashMap<Boolean, List<Map<String, String>>>( 2 );
>>>>> - map.put( FAILURES_KEY, failures );
>>>>> - map.put( WARNINGS_KEY, warnings );
>>>>> - return map;
>>>>> - }
>>>>> -
>>>>> - private String getFilename( String fullpath, String pkg )
>>>>> - {
>>>>> - int index = fullpath.lastIndexOf( File.separatorChar );
>>>>> -
>>>>> - while ( StringUtils.isNotEmpty( pkg ) )
>>>>> - {
>>>>> - index = fullpath.substring( 0, index ).lastIndexOf(
>>>>> File.separatorChar );
>>>>> -
>>>>> - int dot = pkg.indexOf( '.' );
>>>>> -
>>>>> - if ( dot < 0 )
>>>>> + else
>>>>> {
>>>>> - break;
>>>>> + warnings.add( violation );
>>>>> }
>>>>> - pkg = pkg.substring( dot + 1 );
>>>>> }
>>>>> -
>>>>> - return fullpath.substring( index + 1 );
>>>>> +
>>>>> + ViolationDetails<D> details = newViolationDetailsInstance();
>>>>> + details.setFailureDetails( failures );
>>>>> + details.setWarningDetails( warnings );
>>>>> + return details;
>>>>> }
>>>>> +
>>>>> + protected abstract int getPriority( D errorDetail );
>>>>> +
>>>>> + protected abstract ViolationDetails<D>
>>>>> newViolationDetailsInstance();
>>>>>
>>>>> /**
>>>>> * Prints the warnings and failures
>>>>> @@ -267,14 +203,14 @@ public abstract class AbstractPmdViolati
>>>>> * @param warnings
>>>>> * list of warnings
>>>>> */
>>>>> - protected void printErrors( List<Map<String, String>> failures,
>>>>> List<Map<String, String>> warnings )
>>>>> + protected void printErrors( List<D> failures, List<D> warnings )
>>>>> {
>>>>> - for ( Map<String, String> warning : warnings )
>>>>> + for ( D warning : warnings )
>>>>> {
>>>>> printError( warning, "Warning" );
>>>>> }
>>>>>
>>>>> - for ( Map<String, String> failure : failures )
>>>>> + for ( D failure : failures )
>>>>> {
>>>>> printError( failure, "Failure" );
>>>>> }
>>>>> @@ -322,7 +258,7 @@ public abstract class AbstractPmdViolati
>>>>> *
>>>>> * @param item
>>>>> */
>>>>> - protected abstract void printError( Map<String, String> item,
>>>>> String severity );
>>>>> + protected abstract void printError( D item, String severity );
>>>>>
>>>>> /**
>>>>> * Gets the attributes and text for the violation tag and puts
>>>>> them in a
>>>>> @@ -332,6 +268,6 @@ public abstract class AbstractPmdViolati
>>>>> * @throws XmlPullParserException
>>>>> * @throws IOException
>>>>> */
>>>>> - protected abstract Map<String, String> getErrorDetails(
>>>>> XmlPullParser xpp )
>>>>> + protected abstract List<D> getErrorDetails( File analisysFile )
>>>>> throws XmlPullParserException, IOException;
>>>>> }
>>>>> \ No newline at end of file
>>>>>
>>>>> Modified:
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/CpdViolationCheckMojo.java
>>>>>
>>>>> URL:
>>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/CpdViolationCheckMojo.java?rev=1233066&r1=1233065&r2=1233066&view=diff
>>>>>
>>>>> ==============================================================================
>>>>>
>>>>> ---
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/CpdViolationCheckMojo.java
>>>>> (original)
>>>>> +++
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/CpdViolationCheckMojo.java
>>>>> Wed Jan 18 20:59:15 2012
>>>>> @@ -19,13 +19,17 @@ package org.apache.maven.plugin.pmd;
>>>>> * under the License.
>>>>> */
>>>>>
>>>>> +import java.io.File;
>>>>> +import java.io.FileReader;
>>>>> import java.io.IOException;
>>>>> -import java.util.HashMap;
>>>>> -import java.util.Map;
>>>>> +import java.util.List;
>>>>>
>>>>> import org.apache.maven.plugin.MojoExecutionException;
>>>>> import org.apache.maven.plugin.MojoFailureException;
>>>>> -import org.codehaus.plexus.util.xml.pull.XmlPullParser;
>>>>> +import org.apache.maven.plugin.pmd.model.CpdErrorDetail;
>>>>> +import org.apache.maven.plugin.pmd.model.CpdFile;
>>>>> +import org.apache.maven.plugin.pmd.model.Duplication;
>>>>> +import org.apache.maven.plugin.pmd.model.io.xpp3.CpdXpp3Reader;
>>>>> import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
>>>>>
>>>>> /**
>>>>> @@ -39,7 +43,7 @@ import org.codehaus.plexus.util.xml.pull
>>>>> * @threadSafe
>>>>> */
>>>>> public class CpdViolationCheckMojo
>>>>> - extends AbstractPmdViolationCheckMojo
>>>>> + extends AbstractPmdViolationCheckMojo<Duplication>
>>>>> {
>>>>>
>>>>> /**
>>>>> @@ -61,9 +65,9 @@ public class CpdViolationCheckMojo
>>>>> }
>>>>>
>>>>> /** {@inheritDoc} */
>>>>> - protected void printError( Map item, String severity )
>>>>> + protected void printError( Duplication item, String severity )
>>>>> {
>>>>> - String lines = (String) item.get( "lines" );
>>>>> + int lines = item.getLines();
>>>>>
>>>>>
>>>>> StringBuffer buff = new StringBuffer( 100 );
>>>>> @@ -71,68 +75,38 @@ public class CpdViolationCheckMojo
>>>>> buff.append( lines ).append( " lines of duplicated code at
>>>>> locations:" );
>>>>> this.getLog().info( buff.toString() );
>>>>>
>>>>> - buff.setLength( 0 );
>>>>> - buff.append( " " );
>>>>> - Map file = (Map) item.get( "file" );
>>>>> - buff.append( file.get( "path" ) );
>>>>> - buff.append( " line " ).append( file.get( "line" ) );
>>>>> - this.getLog().info( buff.toString() );
>>>>> -
>>>>> - buff.setLength( 0 );
>>>>> - buff.append( " " );
>>>>> - file = (Map) item.get( "file1" );
>>>>> - buff.append( file.get( "path" ) );
>>>>> - buff.append( " line " ).append( file.get( "line" ) );
>>>>> - this.getLog().info( buff.toString() );
>>>>> +
>>>>> + for( CpdFile file : item.getFiles() )
>>>>> + {
>>>>> + buff.setLength( 0 );
>>>>> + buff.append( " " );
>>>>> + buff.append( file.getPath() );
>>>>> + buff.append( " line " ).append( file.getLine() );
>>>>> + this.getLog().info( buff.toString() );
>>>>> + }
>>>>>
>>>>> - Map codefrag = (Map) item.get( "codefragment" );
>>>>> - String codefragstr = (String) codefrag.get( "text" );
>>>>> this.getLog().debug( "CPD " + severity + ": Code Fragment "
>>>>> );
>>>>> - this.getLog().debug( codefragstr );
>>>>> + this.getLog().debug( item.getCodefragment() );
>>>>> }
>>>>>
>>>>> /** {@inheritDoc} */
>>>>> - protected Map getErrorDetails( XmlPullParser xpp )
>>>>> + protected List<Duplication> getErrorDetails( File cpdFile )
>>>>> throws XmlPullParserException, IOException
>>>>> {
>>>>> - int index = 0;
>>>>> - int attributeCount = 0;
>>>>> - HashMap msgs = new HashMap();
>>>>> -
>>>>> - attributeCount = xpp.getAttributeCount();
>>>>> - while ( index < attributeCount )
>>>>> - {
>>>>> - msgs.put( xpp.getAttributeName( index ),
>>>>> xpp.getAttributeValue( index ) );
>>>>> -
>>>>> - index++;
>>>>> - }
>>>>> -
>>>>> - int tp = xpp.next();
>>>>> - while ( tp != XmlPullParser.END_TAG )
>>>>> - {
>>>>> - // get the tag's text
>>>>> - switch ( tp )
>>>>> - {
>>>>> - case XmlPullParser.TEXT:
>>>>> - msgs.put( "text", xpp.getText().trim() );
>>>>> - break;
>>>>> - case XmlPullParser.START_TAG:
>>>>> - String nm = xpp.getName();
>>>>> - if ( msgs.containsKey( nm ) )
>>>>> - {
>>>>> - int cnt = 1;
>>>>> - while ( msgs.containsKey( nm + cnt ) )
>>>>> - {
>>>>> - ++cnt;
>>>>> - }
>>>>> - nm = nm + cnt;
>>>>> - }
>>>>> - msgs.put( nm, getErrorDetails( xpp ) );
>>>>> - break;
>>>>> - default:
>>>>> - }
>>>>> - tp = xpp.next();
>>>>> - }
>>>>> - return msgs;
>>>>> + CpdXpp3Reader reader = new CpdXpp3Reader();
>>>>> + CpdErrorDetail details = reader.read( new FileReader(
>>>>> cpdFile ), false );
>>>>> + return details.getDuplications();
>>>>> + }
>>>>> +
>>>>> + @Override
>>>>> + protected int getPriority( Duplication errorDetail )
>>>>> + {
>>>>> + return 0;
>>>>> + }
>>>>> +
>>>>> + @Override
>>>>> + protected ViolationDetails<Duplication>
>>>>> newViolationDetailsInstance()
>>>>> + {
>>>>> + return new ViolationDetails<Duplication>();
>>>>> }
>>>>> -}
>>>>> +}
>>>>> \ No newline at end of file
>>>>>
>>>>> Modified:
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdViolationCheckMojo.java
>>>>>
>>>>> URL:
>>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdViolationCheckMojo.java?rev=1233066&r1=1233065&r2=1233066&view=diff
>>>>>
>>>>> ==============================================================================
>>>>>
>>>>> ---
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdViolationCheckMojo.java
>>>>> (original)
>>>>> +++
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdViolationCheckMojo.java
>>>>> Wed Jan 18 20:59:15 2012
>>>>> @@ -19,12 +19,19 @@ package org.apache.maven.plugin.pmd;
>>>>> * under the License.
>>>>> */
>>>>>
>>>>> +import java.io.File;
>>>>> +import java.io.FileReader;
>>>>> import java.io.IOException;
>>>>> -import java.util.HashMap;
>>>>> -import java.util.Map;
>>>>> +import java.util.ArrayList;
>>>>> +import java.util.List;
>>>>>
>>>>> import org.apache.maven.plugin.MojoExecutionException;
>>>>> import org.apache.maven.plugin.MojoFailureException;
>>>>> +import org.apache.maven.plugin.pmd.model.PmdErrorDetail;
>>>>> +import org.apache.maven.plugin.pmd.model.PmdFile;
>>>>> +import org.apache.maven.plugin.pmd.model.Violation;
>>>>> +import org.apache.maven.plugin.pmd.model.io.xpp3.PmdXpp3Reader;
>>>>> +import org.codehaus.plexus.util.StringUtils;
>>>>> import org.codehaus.plexus.util.xml.pull.XmlPullParser;
>>>>> import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
>>>>>
>>>>> @@ -39,7 +46,7 @@ import org.codehaus.plexus.util.xml.pull
>>>>> * @threadSafe
>>>>> */
>>>>> public class PmdViolationCheckMojo
>>>>> - extends AbstractPmdViolationCheckMojo
>>>>> + extends AbstractPmdViolationCheckMojo<Violation>
>>>>> {
>>>>> /**
>>>>> * What priority level to fail the build on. Failures at or
>>>>> above this level
>>>>> @@ -71,55 +78,83 @@ public class PmdViolationCheckMojo
>>>>> }
>>>>>
>>>>> /** {@inheritDoc} */
>>>>> - protected void printError( Map<String, String> item, String
>>>>> severity )
>>>>> + protected void printError( Violation item, String severity )
>>>>> {
>>>>>
>>>>> StringBuffer buff = new StringBuffer( 100 );
>>>>> buff.append( "PMD " + severity + ": " );
>>>>> - if ( item.containsKey( "class" ) )
>>>>> + if ( item.getViolationClass() != null )
>>>>> {
>>>>> - if ( item.containsKey( "package" ) )
>>>>> + if ( item.getViolationPackage() != null )
>>>>> {
>>>>> - buff.append( item.get( "package" ) );
>>>>> + buff.append( item.getViolationPackage() );
>>>>> buff.append( "." );
>>>>> }
>>>>> - buff.append( item.get( "class" ) );
>>>>> + buff.append( item.getViolationClass() );
>>>>> }
>>>>> else
>>>>> {
>>>>> - buff.append( item.get( "filename" ) );
>>>>> + buff.append( item.getFileName() );
>>>>> }
>>>>> buff.append( ":" );
>>>>> - buff.append( item.get( "beginline" ) );
>>>>> - buff.append( " Rule:" ).append( item.get( "rule" ) );
>>>>> - buff.append( " Priority:" ).append( item.get( "priority" )
>>>>> );
>>>>> - buff.append( " " ).append( item.get( "text" ) ).append( "."
>>>>> );
>>>>> + buff.append( item.getBeginline() );
>>>>> + buff.append( " Rule:" ).append( item.getRule() );
>>>>> + buff.append( " Priority:" ).append( item.getPriority() );
>>>>> + buff.append( " " ).append( item.getText() ).append( "." );
>>>>>
>>>>> this.getLog().info( buff.toString() );
>>>>> }
>>>>> -
>>>>> - /** {@inheritDoc} */
>>>>> - protected Map<String, String> getErrorDetails( XmlPullParser
>>>>> xpp )
>>>>> +
>>>>> + @Override
>>>>> + protected List<Violation> getErrorDetails( File pmdFile )
>>>>> throws XmlPullParserException, IOException
>>>>> {
>>>>> - int index = 0;
>>>>> - int attributeCount = 0;
>>>>> - Map<String, String> msgs = new HashMap<String, String>();
>>>>> + PmdXpp3Reader reader = new PmdXpp3Reader();
>>>>> + PmdErrorDetail details = reader.read( new FileReader(
>>>>> pmdFile ), false );
>>>>>
>>>>> - attributeCount = xpp.getAttributeCount();
>>>>> - while ( index < attributeCount )
>>>>> + List<Violation> violations = new ArrayList<Violation>();
>>>>> + for( PmdFile file : details.getFiles() )
>>>>> {
>>>>> -
>>>>> - msgs.put( xpp.getAttributeName( index ),
>>>>> xpp.getAttributeValue( index ) );
>>>>> -
>>>>> - index++;
>>>>> + String fullPath = file.getName();
>>>>> +
>>>>> + for ( Violation violation : file.getViolations() )
>>>>> + {
>>>>> + violation.setFileName( getFilename( fullPath,
>>>>> violation.getViolationPackage() ) );
>>>>> + violations.add( violation );
>>>>> + }
>>>>> }
>>>>> + return violations;
>>>>> + }
>>>>> +
>>>>> + @Override
>>>>> + protected int getPriority( Violation errorDetail )
>>>>> + {
>>>>> + return errorDetail.getPriority();
>>>>> + }
>>>>> +
>>>>> + @Override
>>>>> + protected ViolationDetails<Violation>
>>>>> newViolationDetailsInstance()
>>>>> + {
>>>>> + return new ViolationDetails<Violation>();
>>>>> + }
>>>>> +
>>>>> + private String getFilename( String fullpath, String pkg )
>>>>> + {
>>>>> + int index = fullpath.lastIndexOf( File.separatorChar );
>>>>>
>>>>> - // get the tag's text
>>>>> - if ( xpp.next() == XmlPullParser.TEXT )
>>>>> + while ( StringUtils.isNotEmpty( pkg ) )
>>>>> {
>>>>> - msgs.put( "text", xpp.getText().trim() );
>>>>> + index = fullpath.substring( 0, index ).lastIndexOf(
>>>>> File.separatorChar );
>>>>> +
>>>>> + int dot = pkg.indexOf( '.' );
>>>>> +
>>>>> + if ( dot < 0 )
>>>>> + {
>>>>> + break;
>>>>> + }
>>>>> + pkg = pkg.substring( dot + 1 );
>>>>> }
>>>>> - return msgs;
>>>>> +
>>>>> + return fullpath.substring( index + 1 );
>>>>> }
>>>>> }
>>>>> \ No newline at end of file
>>>>>
>>>>> Added:
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/ViolationDetails.java
>>>>>
>>>>> URL:
>>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/ViolationDetails.java?rev=1233066&view=auto
>>>>>
>>>>> ==============================================================================
>>>>>
>>>>> ---
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/ViolationDetails.java
>>>>> (added)
>>>>> +++
>>>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/ViolationDetails.java
>>>>> Wed Jan 18 20:59:15 2012
>>>>> @@ -0,0 +1,69 @@
>>>>> +package org.apache.maven.plugin.pmd;
>>>>> +
>>>>> +/*
>>>>> + * 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.
>>>>> + */
>>>>> +
>>>>> +import java.util.ArrayList;
>>>>> +import java.util.List;
>>>>> +
>>>>> +/**
>>>>> + * Collector of warnings and failures.
>>>>> + *
>>>>> + * @author Robert Scholte
>>>>> + * @param <D>
>>>>> + * @since 2.7
>>>>> + */
>>>>> +public class ViolationDetails<D>
>>>>> +{
>>>>> + private List<D> warningDetails = new ArrayList<D>();
>>>>> +
>>>>> + private List<D> failureDetails = new ArrayList<D>();
>>>>> +
>>>>> + /**
>>>>> + * @return the warningDetails, never {@code null}
>>>>> + */
>>>>> + public List<D> getWarningDetails()
>>>>> + {
>>>>> + return warningDetails;
>>>>> + }
>>>>> +
>>>>> + /**
>>>>> + * @param warningDetails the warningDetails to set
>>>>> + */
>>>>> + public void setWarningDetails( List<D> warningDetails )
>>>>> + {
>>>>> + this.warningDetails = warningDetails;
>>>>> + }
>>>>> +
>>>>> + /**
>>>>> + * @return the failureDetails, never {@code null}
>>>>> + */
>>>>> + public List<D> getFailureDetails()
>>>>> + {
>>>>> + return failureDetails;
>>>>> + }
>>>>> +
>>>>> + /**
>>>>> + * @param failureDetails the failureDetails to set
>>>>> + */
>>>>> + public void setFailureDetails( List<D> failureDetails )
>>>>> + {
>>>>> + this.failureDetails = failureDetails;
>>>>> + }
>>>>> +}
>>>>> \ No newline at end of file
>>>>>
>>>>> Added: maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/cpd.mdo
>>>>> URL:
>>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/cpd.mdo?rev=1233066&view=auto
>>>>>
>>>>> ==============================================================================
>>>>>
>>>>> --- maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/cpd.mdo (added)
>>>>> +++ maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/cpd.mdo Wed
>>>>> Jan 18 20:59:15 2012
>>>>> @@ -0,0 +1,70 @@
>>>>> +<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>
>>>>> + <name>codefragment</name>
>>>>> + <type>String</type>
>>>>> + </field>
>>>>> + </fields>
>>>>> + </class>
>>>>> + <class xml.tagName="file">
>>>>> + <name>CpdFile</name>
>>>>> + <fields>
>>>>> + <field xml.attribute="true">
>>>>> + <name>line</name>
>>>>> + <type>int</type>
>>>>> + </field>
>>>>> + <field xml.attribute="true">
>>>>> + <name>path</name>
>>>>> + <type>String</type>
>>>>> + </field>
>>>>> + </fields>
>>>>> + </class>
>>>>> + </classes>
>>>>> +</model>
>>>>> \ No newline at end of file
>>>>>
>>>>> Added: maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/pmd.mdo
>>>>> URL:
>>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/pmd.mdo?rev=1233066&view=auto
>>>>>
>>>>> ==============================================================================
>>>>>
>>>>> --- maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/pmd.mdo (added)
>>>>> +++ maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/pmd.mdo Wed
>>>>> Jan 18 20:59:15 2012
>>>>> @@ -0,0 +1,109 @@
>>>>> +<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">
>>>>> + <type>Violation</type>
>>>>> + <multiplicity>*</multiplicity>
>>>>> + </association>
>>>>> + </field>
>>>>> + </fields>
>>>>> + </class>
>>>>> + <class>
>>>>> + <name>Violation</name>
>>>>> + <fields>
>>>>> + <field xml.attribute="true">
>>>>> + <name>beginline</name>
>>>>> + <type>int</type>
>>>>> + </field>
>>>>> + <field xml.tagName="class" xml.attribute="true">
>>>>> + <name>violationClass</name>
>>>>> + <type>String</type>
>>>>> + </field>
>>>>> + <field xml.tagName="package" xml.attribute="true">
>>>>> + <name>violationPackage</name>
>>>>> + <type>String</type>
>>>>> + </field>
>>>>> + <field xml.attribute="true">
>>>>> + <name>rule</name>
>>>>> + <type>String</type>
>>>>> + </field>
>>>>> + <field xml.attribute="true">
>>>>> + <name>priority</name>
>>>>> + <type>int</type>
>>>>> + </field>
>>>>> + <field xml.content="true">
>>>>> + <name>text</name>
>>>>> + <type>String</type>
>>>>> + </field>
>>>>> + </fields>
>>>>> + <codeSegments>
>>>>> + <codeSegment>
>>>>> + <code>
>>>>> + <![CDATA[
>>>>> + private String fileName;
>>>>> +
>>>>> + public void setFileName( String fileName )
>>>>> + {
>>>>> + this.fileName = fileName;
>>>>> + }
>>>>> +
>>>>> + public String getFileName()
>>>>> + {
>>>>> + return fileName;
>>>>> + }
>>>>> + ]]>
>>>>> + </code>
>>>>> + </codeSegment>
>>>>> + </codeSegments>
>>>>> + </class>
>>>>> + </classes>
>>>>> +
>>>>> +
>>>>> +
>>>>> +</model>
>>>>> \ No newline at end of file
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
>> For additional commands, e-mail: dev-help@maven.apache.org
>>
>>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org
Re: svn commit: r1233066 - in /maven/plugins/trunk/maven-pmd-plugin:
./ src/it/mpmd-138/ src/it/mpmd-138/mod-1/ src/it/mpmd-138/mod-1/src/ src/it/mpmd-138/mod-1/src/main/
src/it/mpmd-138/mod-1/src/main/config/ src/it/mpmd-138/mod-1/src/main/config/pmd/
src...
Posted by Dennis Lundberg <de...@apache.org>.
Thanks Robert
Let me know what I can do to help.
On 2012-01-26 21:47, Robert Scholte wrote:
> Always nice, unstable tests :S
> Win7 + M3.0.4 sometimes fails, sometimes succeed.
>
> This shows there are not enough tests for the m-pmd-p.
> Easiest solution is to remove a few verification-lines, but actually I
> want to know what's going on.
>
> I'll dive into this.
>
> -Robert
>
> On Wed, 25 Jan 2012 23:10:30 +0100, Dennis Lundberg <de...@apache.org>
> wrote:
>
>> Some more data on my setup:
>>
>> On Ubuntu the IT fails with Maven 2.2.1, but it works with Maven 3.0.3
>>
>> On Windows 7 the IT fails with both Maven 2.2.1 and Maven 3.0.3
>>
>>
>> On 2012-01-25 23:06, Dennis Lundberg wrote:
>>> Hi Robert,
>>>
>>> The new IT mpmd-138 is failing for me on both Windows 7 and Ubuntu:
>>>
>>> [INFO] Building: mpmd-138\pom.xml
>>> [INFO] ..FAILED (10.9 s)
>>> [INFO] The post-build script did not succeed. Expression: (1 ==
>>> buildLog.getText().count([INFO] PMD Failure: test.MyClass:8
>>> Rule:EmptyStatementNotInLoop Priority:3 An empty statement (semicolon)
>>> not part of a loop.))
>>>
>>> Can you have a look at it?
>>>
>>> On 2012-01-18 21:59, rfscholte@apache.org wrote:
>>>> Author: rfscholte
>>>> Date: Wed Jan 18 20:59:15 2012
>>>> New Revision: 1233066
>>>>
>>>> URL: http://svn.apache.org/viewvc?rev=1233066&view=rev
>>>> Log:
>>>> Fix MPMD-138: Use modello to generate models to read pmd and cpd files
>>>>
>>>> Added:
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/
>>>>
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/invoker.properties
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/pom.xml
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/
>>>>
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/
>>>>
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/
>>>>
>>>>
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/
>>>>
>>>>
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/latin-1.xml
>>>>
>>>>
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/utf-8.xml
>>>>
>>>>
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/java/
>>>>
>>>>
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/java/test/
>>>>
>>>>
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/java/test/MyClass.java
>>>>
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/pom.xml
>>>>
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/rulesets/
>>>>
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/rulesets/basic.xml
>>>>
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/src/
>>>>
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/src/main/
>>>>
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/src/main/java/
>>>>
>>>>
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/src/main/java/test/
>>>>
>>>>
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/src/main/java/test/MyClass.java
>>>>
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/pom.xml
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/
>>>>
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/
>>>>
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/
>>>>
>>>>
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/
>>>>
>>>>
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/MyClass.java
>>>>
>>>>
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/sub/
>>>>
>>>>
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/sub/MyClass.java
>>>>
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/pom.xml
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/
>>>>
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/
>>>>
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/
>>>>
>>>>
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/
>>>>
>>>>
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/MyClass.java
>>>>
>>>>
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/OtherClass.java
>>>>
>>>>
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/sub/
>>>>
>>>>
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/sub/MyClass.java
>>>>
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/pom.xml
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/verify.groovy
>>>>
>>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/ViolationDetails.java
>>>>
>>>> maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/
>>>> maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/cpd.mdo
>>>> maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/pmd.mdo
>>>> Modified:
>>>> maven/plugins/trunk/maven-pmd-plugin/pom.xml
>>>>
>>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/AbstractPmdViolationCheckMojo.java
>>>>
>>>>
>>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/CpdViolationCheckMojo.java
>>>>
>>>>
>>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdViolationCheckMojo.java
>>>>
>>>>
>>>> Modified: maven/plugins/trunk/maven-pmd-plugin/pom.xml
>>>> URL:
>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/pom.xml?rev=1233066&r1=1233065&r2=1233066&view=diff
>>>>
>>>> ==============================================================================
>>>>
>>>> --- maven/plugins/trunk/maven-pmd-plugin/pom.xml (original)
>>>> +++ maven/plugins/trunk/maven-pmd-plugin/pom.xml Wed Jan 18 20:59:15
>>>> 2012
>>>> @@ -68,6 +68,33 @@ under the License.
>>>> <sitePluginVersion>3.0</sitePluginVersion>
>>>> </properties>
>>>>
>>>> + <build>
>>>> + <plugins>
>>>> + <plugin>
>>>> + <groupId>org.codehaus.modello</groupId>
>>>> + <artifactId>modello-maven-plugin</artifactId>
>>>> + <version>1.4.1</version>
>>>> + <configuration>
>>>> + <useJava5>true</useJava5>
>>>> + <models>
>>>> + <model>src/main/mdo/pmd.mdo</model>
>>>> + <model>src/main/mdo/cpd.mdo</model>
>>>> + </models>
>>>> + <version>1.0</version>
>>>> + </configuration>
>>>> + <executions>
>>>> + <execution>
>>>> + <phase>generate-sources</phase>
>>>> + <goals>
>>>> + <goal>java</goal>
>>>> + <goal>xpp3-reader</goal>
>>>> + </goals>
>>>> + </execution>
>>>> + </executions>
>>>> + </plugin>
>>>> + </plugins>
>>>> + </build>
>>>> +
>>>> <dependencies>
>>>> <!-- maven -->
>>>> <dependency>
>>>> @@ -124,7 +151,7 @@ under the License.
>>>> <dependency>
>>>> <groupId>org.codehaus.plexus</groupId>
>>>> <artifactId>plexus-utils</artifactId>
>>>> - <version>2.0.5</version>
>>>> + <version>2.1</version>
>>>> </dependency>
>>>>
>>>> <!-- pmd -->
>>>>
>>>> Added:
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/invoker.properties
>>>> URL:
>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/invoker.properties?rev=1233066&view=auto
>>>>
>>>> ==============================================================================
>>>>
>>>> ---
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/invoker.properties
>>>> (added)
>>>> +++
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/invoker.properties
>>>> Wed Jan 18 20:59:15 2012
>>>> @@ -0,0 +1 @@
>>>> +invoker.goals = clean verify
>>>> \ No newline at end of file
>>>>
>>>> Added:
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/pom.xml
>>>> URL:
>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/pom.xml?rev=1233066&view=auto
>>>>
>>>> ==============================================================================
>>>>
>>>> ---
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/pom.xml
>>>> (added)
>>>> +++
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/pom.xml
>>>> Wed Jan 18 20:59:15 2012
>>>> @@ -0,0 +1,39 @@
>>>> +<?xml version="1.0" encoding="UTF-8"?>
>>>> +
>>>> +<!--
>>>> +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.
>>>> +-->
>>>> +
>>>> +<project xmlns="http://maven.apache.org/POM/4.0.0"
>>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>>> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
>>>> http://maven.apache.org/xsd/maven-4.0.0.xsd">
>>>> + <modelVersion>4.0.0</modelVersion>
>>>> +
>>>> + <parent>
>>>> + <groupId>org.apache.maven.plugin.pmd.its</groupId>
>>>> + <artifactId>mpmd-138-parent</artifactId>
>>>> + <version>1.0-SNAPSHOT</version>
>>>> + </parent>
>>>> +
>>>> + <artifactId>mpmd-138-mod-1</artifactId>
>>>> +
>>>> + <name>Module 1</name>
>>>> +
>>>> + <properties>
>>>> +
>>>> <project.reporting.outputEncoding>ISO-8859-1</project.reporting.outputEncoding>
>>>>
>>>> + </properties>
>>>> +
>>>> +</project>
>>>> \ No newline at end of file
>>>>
>>>> Added:
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/latin-1.xml
>>>>
>>>> URL:
>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/latin-1.xml?rev=1233066&view=auto
>>>>
>>>> ==============================================================================
>>>>
>>>> ---
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/latin-1.xml
>>>> (added)
>>>> +++
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/latin-1.xml
>>>> Wed Jan 18 20:59:15 2012
>>>> @@ -0,0 +1,12 @@
>>>> +<?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>
>>>>
>>>> Added:
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/utf-8.xml
>>>>
>>>> URL:
>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/utf-8.xml?rev=1233066&view=auto
>>>>
>>>> ==============================================================================
>>>>
>>>> ---
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/utf-8.xml
>>>> (added)
>>>> +++
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/utf-8.xml
>>>> Wed Jan 18 20:59:15 2012
>>>> @@ -0,0 +1,11 @@
>>>> +<?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>
>>>>
>>>> Added:
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/java/test/MyClass.java
>>>>
>>>> URL:
>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/java/test/MyClass.java?rev=1233066&view=auto
>>>>
>>>> ==============================================================================
>>>>
>>>> ---
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/java/test/MyClass.java
>>>> (added)
>>>> +++
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/java/test/MyClass.java
>>>> Wed Jan 18 20:59:15 2012
>>>> @@ -0,0 +1,12 @@
>>>> +package test;
>>>> +
>>>> +public class MyClass
>>>> +{
>>>> +
>>>> + public static void main( String[] args )
>>>> + {
>>>> + ;
>>>> + return;
>>>> + }
>>>> +
>>>> +}
>>>>
>>>> Added:
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/pom.xml
>>>> URL:
>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/pom.xml?rev=1233066&view=auto
>>>>
>>>> ==============================================================================
>>>>
>>>> ---
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/pom.xml
>>>> (added)
>>>> +++
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/pom.xml
>>>> Wed Jan 18 20:59:15 2012
>>>> @@ -0,0 +1,35 @@
>>>> +<?xml version="1.0" encoding="UTF-8"?>
>>>> +
>>>> +<!--
>>>> +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.
>>>> +-->
>>>> +
>>>> +<project xmlns="http://maven.apache.org/POM/4.0.0"
>>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>>> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
>>>> http://maven.apache.org/xsd/maven-4.0.0.xsd">
>>>> + <modelVersion>4.0.0</modelVersion>
>>>> +
>>>> + <parent>
>>>> + <groupId>org.apache.maven.plugin.pmd.its</groupId>
>>>> + <artifactId>mpmd-138-parent</artifactId>
>>>> + <version>1.0-SNAPSHOT</version>
>>>> + </parent>
>>>> +
>>>> + <artifactId>mpmd-138-mod-2</artifactId>
>>>> +
>>>> + <name>Module 2</name>
>>>> +
>>>> +</project>
>>>> \ No newline at end of file
>>>>
>>>> Added:
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/rulesets/basic.xml
>>>>
>>>> URL:
>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/rulesets/basic.xml?rev=1233066&view=auto
>>>>
>>>> ==============================================================================
>>>>
>>>> ---
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/rulesets/basic.xml
>>>> (added)
>>>> +++
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/rulesets/basic.xml
>>>> Wed Jan 18 20:59:15 2012
>>>> @@ -0,0 +1,11 @@
>>>> +<?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>
>>>>
>>>> Added:
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/src/main/java/test/MyClass.java
>>>>
>>>> URL:
>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/src/main/java/test/MyClass.java?rev=1233066&view=auto
>>>>
>>>> ==============================================================================
>>>>
>>>> ---
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/src/main/java/test/MyClass.java
>>>> (added)
>>>> +++
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/src/main/java/test/MyClass.java
>>>> Wed Jan 18 20:59:15 2012
>>>> @@ -0,0 +1,12 @@
>>>> +package test;
>>>> +
>>>> +public class MyClass
>>>> +{
>>>> +
>>>> + public static void main( String[] args )
>>>> + {
>>>> + ;
>>>> + return;
>>>> + }
>>>> +
>>>> +}
>>>>
>>>> Added:
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/pom.xml
>>>> URL:
>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/pom.xml?rev=1233066&view=auto
>>>>
>>>> ==============================================================================
>>>>
>>>> ---
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/pom.xml
>>>> (added)
>>>> +++
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/pom.xml
>>>> Wed Jan 18 20:59:15 2012
>>>> @@ -0,0 +1,37 @@
>>>> +<?xml version="1.0" encoding="UTF-8"?>
>>>> +
>>>> +<!--
>>>> +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.
>>>> +-->
>>>> +
>>>> +<project xmlns="http://maven.apache.org/POM/4.0.0"
>>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>>> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
>>>> http://maven.apache.org/xsd/maven-4.0.0.xsd">
>>>> + <modelVersion>4.0.0</modelVersion>
>>>> +
>>>> + <parent>
>>>> + <groupId>org.apache.maven.plugin.pmd.its</groupId>
>>>> + <artifactId>mpmd-138-parent</artifactId>
>>>> + <version>1.0-SNAPSHOT</version>
>>>> + </parent>
>>>> +
>>>> + <artifactId>mpmd-138-mod-3</artifactId>
>>>> +
>>>> + <name>Module 3</name>
>>>> +
>>>> + <description>Test 3 classes with copy-paste block</description>
>>>> +
>>>> +</project>
>>>> \ No newline at end of file
>>>>
>>>> Added:
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/MyClass.java
>>>>
>>>> URL:
>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/MyClass.java?rev=1233066&view=auto
>>>>
>>>> ==============================================================================
>>>>
>>>> ---
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/MyClass.java
>>>> (added)
>>>> +++
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/MyClass.java
>>>> Wed Jan 18 20:59:15 2012
>>>> @@ -0,0 +1,39 @@
>>>> +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 );
>>>> + }
>>>> + }
>>>> +
>>>> +}
>>>>
>>>> Added:
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/sub/MyClass.java
>>>>
>>>> URL:
>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/sub/MyClass.java?rev=1233066&view=auto
>>>>
>>>> ==============================================================================
>>>>
>>>> ---
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/sub/MyClass.java
>>>> (added)
>>>> +++
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/sub/MyClass.java
>>>> Wed Jan 18 20:59:15 2012
>>>> @@ -0,0 +1,40 @@
>>>> +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 );
>>>> + }
>>>> + }
>>>> +}
>>>> \ No newline at end of file
>>>>
>>>> Added:
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/pom.xml
>>>> URL:
>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/pom.xml?rev=1233066&view=auto
>>>>
>>>> ==============================================================================
>>>>
>>>> ---
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/pom.xml
>>>> (added)
>>>> +++
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/pom.xml
>>>> Wed Jan 18 20:59:15 2012
>>>> @@ -0,0 +1,37 @@
>>>> +<?xml version="1.0" encoding="UTF-8"?>
>>>> +
>>>> +<!--
>>>> +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.
>>>> +-->
>>>> +
>>>> +<project xmlns="http://maven.apache.org/POM/4.0.0"
>>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>>> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
>>>> http://maven.apache.org/xsd/maven-4.0.0.xsd">
>>>> + <modelVersion>4.0.0</modelVersion>
>>>> +
>>>> + <parent>
>>>> + <groupId>org.apache.maven.plugin.pmd.its</groupId>
>>>> + <artifactId>mpmd-138-parent</artifactId>
>>>> + <version>1.0-SNAPSHOT</version>
>>>> + </parent>
>>>> +
>>>> + <artifactId>mpmd-138-mod-4</artifactId>
>>>> +
>>>> + <name>Module 4</name>
>>>> +
>>>> + <description>Test 3 classes with copy-paste block</description>
>>>> +
>>>> +</project>
>>>> \ No newline at end of file
>>>>
>>>> Added:
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/MyClass.java
>>>>
>>>> URL:
>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/MyClass.java?rev=1233066&view=auto
>>>>
>>>> ==============================================================================
>>>>
>>>> ---
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/MyClass.java
>>>> (added)
>>>> +++
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/MyClass.java
>>>> Wed Jan 18 20:59:15 2012
>>>> @@ -0,0 +1,37 @@
>>>> +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 );
>>>> + }
>>>> + }
>>>> +}
>>>> \ No newline at end of file
>>>>
>>>> Added:
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/OtherClass.java
>>>>
>>>> URL:
>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/OtherClass.java?rev=1233066&view=auto
>>>>
>>>> ==============================================================================
>>>>
>>>> ---
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/OtherClass.java
>>>> (added)
>>>> +++
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/OtherClass.java
>>>> Wed Jan 18 20:59:15 2012
>>>> @@ -0,0 +1,40 @@
>>>> +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 );
>>>> + }
>>>> + }
>>>> +}
>>>> \ No newline at end of file
>>>>
>>>> Added:
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/sub/MyClass.java
>>>>
>>>> URL:
>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/sub/MyClass.java?rev=1233066&view=auto
>>>>
>>>> ==============================================================================
>>>>
>>>> ---
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/sub/MyClass.java
>>>> (added)
>>>> +++
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/sub/MyClass.java
>>>> Wed Jan 18 20:59:15 2012
>>>> @@ -0,0 +1,36 @@
>>>> +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 );
>>>> + }
>>>> + }
>>>> +}
>>>> \ No newline at end of file
>>>>
>>>> Added: maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/pom.xml
>>>> URL:
>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/pom.xml?rev=1233066&view=auto
>>>>
>>>> ==============================================================================
>>>>
>>>> --- maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/pom.xml
>>>> (added)
>>>> +++ maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/pom.xml Wed
>>>> Jan 18 20:59:15 2012
>>>> @@ -0,0 +1,67 @@
>>>> +<?xml version="1.0" encoding="UTF-8"?>
>>>> +
>>>> +<!--
>>>> +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.
>>>> +-->
>>>> +
>>>> +<project xmlns="http://maven.apache.org/POM/4.0.0"
>>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>>> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
>>>> http://maven.apache.org/xsd/maven-4.0.0.xsd">
>>>> + <modelVersion>4.0.0</modelVersion>
>>>> +
>>>> + <groupId>org.apache.maven.plugin.pmd.its</groupId>
>>>> + <artifactId>mpmd-138-parent</artifactId>
>>>> + <version>1.0-SNAPSHOT</version>
>>>> + <packaging>pom</packaging>
>>>> +
>>>> + <name>Parent</name>
>>>> + <description>
>>>> + Test proper report generation in a multi-module build.
>>>> + </description>
>>>> +
>>>> + <modules>
>>>> + <module>mod-1</module>
>>>> + <module>mod-2</module>
>>>> + <module>mod-3</module>
>>>> + <module>mod-4</module>
>>>> + </modules>
>>>> +
>>>> + <properties>
>>>> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
>>>> + </properties>
>>>> +
>>>> + <build>
>>>> + <plugins>
>>>> + <plugin>
>>>> + <artifactId>maven-pmd-plugin</artifactId>
>>>> + <version>@project.version@</version>
>>>> + <executions>
>>>> + <execution>
>>>> + <goals>
>>>> + <goal>check</goal>
>>>> + <goal>cpd-check</goal>
>>>> + </goals>
>>>> + </execution>
>>>> + </executions>
>>>> + <configuration>
>>>> + <verbose>true</verbose>
>>>> + <minimumTokens>25</minimumTokens>
>>>> + <failOnViolation>false</failOnViolation> <!-- force
>>>> execution of both goals, will be checked with verify-script -->
>>>> + </configuration>
>>>> + </plugin>
>>>> + </plugins>
>>>> + </build>
>>>> +</project>
>>>> \ No newline at end of file
>>>>
>>>> Added:
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/verify.groovy
>>>> URL:
>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/verify.groovy?rev=1233066&view=auto
>>>>
>>>> ==============================================================================
>>>>
>>>> ---
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/verify.groovy
>>>> (added)
>>>> +++
>>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/verify.groovy
>>>> Wed Jan 18 20:59:15 2012
>>>> @@ -0,0 +1,37 @@
>>>> +
>>>> +/*
>>>> + * 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.
>>>> + */
>>>> +
>>>> +File buildLog = new File( basedir, 'build.log' )
>>>> +assert buildLog.exists()
>>>> +
>>>> +// Module 1
>>>> +assert 1 == buildLog.getText().count('[INFO] PMD Failure:
>>>> test.MyClass:8 Rule:EmptyStatementNotInLoop Priority:3 An empty
>>>> statement (semicolon) not part of a loop.')
>>>> +assert 1 == buildLog.getText().count('[INFO] PMD Failure:
>>>> test.MyClass:9 Rule:UnnecessaryReturn Priority:3 Avoid unnecessary
>>>> return statements.')
>>>> +assert 1 == buildLog.getText().count('[INFO] You have 2 PMD
>>>> violations. For more details see:')
>>>> +
>>>> +// Module 2
>>>> +assert 1 == buildLog.getText().count('[INFO] PMD Failure:
>>>> test.MyClass:8 Rule:EmptyStatementNotInLoop Priority:3 TEST:
>>>> LOCAL-FILE-RULESET.')
>>>> +assert 1 == buildLog.getText().count('[INFO] You have 1 PMD
>>>> violation. For more details see:')
>>>> +
>>>> +// Module 3
>>>> +assert 1 == buildLog.getText().count('[INFO] You have 1 CPD
>>>> duplication. For more details see:')
>>>> +
>>>> +// Module 4
>>>> +assert 1 == buildLog.getText().count('[INFO] You have 2 CPD
>>>> duplications. For more details see:')
>>>> \ No newline at end of file
>>>>
>>>> Modified:
>>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/AbstractPmdViolationCheckMojo.java
>>>>
>>>> URL:
>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/AbstractPmdViolationCheckMojo.java?rev=1233066&r1=1233065&r2=1233066&view=diff
>>>>
>>>> ==============================================================================
>>>>
>>>> ---
>>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/AbstractPmdViolationCheckMojo.java
>>>> (original)
>>>> +++
>>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/AbstractPmdViolationCheckMojo.java
>>>> Wed Jan 18 20:59:15 2012
>>>> @@ -23,19 +23,13 @@ import java.io.File;
>>>> import java.io.IOException;
>>>> import java.io.Reader;
>>>> import java.util.ArrayList;
>>>> -import java.util.HashMap;
>>>> import java.util.List;
>>>> -import java.util.Map;
>>>>
>>>> import org.apache.maven.plugin.AbstractMojo;
>>>> import org.apache.maven.plugin.MojoExecutionException;
>>>> import org.apache.maven.plugin.MojoFailureException;
>>>> import org.apache.maven.project.MavenProject;
>>>> import org.codehaus.plexus.util.IOUtil;
>>>> -import org.codehaus.plexus.util.ReaderFactory;
>>>> -import org.codehaus.plexus.util.StringUtils;
>>>> -import org.codehaus.plexus.util.xml.pull.MXParser;
>>>> -import org.codehaus.plexus.util.xml.pull.XmlPullParser;
>>>> import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
>>>>
>>>> /**
>>>> @@ -44,13 +38,9 @@ import org.codehaus.plexus.util.xml.pull
>>>> * @author <a href="mailto:brett@apache.org">Brett Porter</a>
>>>> * @version $Id$
>>>> */
>>>> -public abstract class AbstractPmdViolationCheckMojo
>>>> +public abstract class AbstractPmdViolationCheckMojo<D>
>>>> extends AbstractMojo
>>>> {
>>>> - private static final Boolean FAILURES_KEY = Boolean.TRUE;
>>>> -
>>>> - private static final Boolean WARNINGS_KEY = Boolean.FALSE;
>>>> -
>>>> /**
>>>> * The location of the XML report to check, as generated by the
>>>> PMD report.
>>>> *
>>>> @@ -117,14 +107,10 @@ public abstract class AbstractPmdViolati
>>>> Reader reader = null;
>>>> try
>>>> {
>>>> - XmlPullParser xpp = new MXParser();
>>>> - reader = ReaderFactory.newXmlReader( outputFile );
>>>> - xpp.setInput( reader );
>>>> -
>>>> - Map<Boolean, List<Map<String, String>>>
>>>> violations = getViolations( xpp, tagName, failurePriority );
>>>> + ViolationDetails<D> violations = getViolations(
>>>> outputFile, failurePriority );
>>>>
>>>> - List<Map<String, String>> failures =
>>>> violations.get( FAILURES_KEY );
>>>> - List<Map<String, String>> warnings =
>>>> violations.get( WARNINGS_KEY );
>>>> + List<D> failures = violations.getFailureDetails();
>>>> + List<D> warnings = violations.getWarningDetails();
>>>>
>>>> if ( verbose )
>>>> {
>>>> @@ -178,86 +164,36 @@ public abstract class AbstractPmdViolati
>>>> * @throws XmlPullParserException
>>>> * @throws IOException
>>>> */
>>>> - private Map<Boolean, List<Map<String, String>>> getViolations(
>>>> XmlPullParser xpp, String tagName, int failurePriority )
>>>> + private ViolationDetails<D> getViolations( File analysisFile,
>>>> int failurePriority )
>>>> throws XmlPullParserException, IOException
>>>> {
>>>> - int eventType = xpp.getEventType();
>>>> -
>>>> - List<Map<String, String>> failures = new
>>>> ArrayList<Map<String, String>>();
>>>> - List<Map<String, String>> warnings = new
>>>> ArrayList<Map<String, String>>();
>>>> -
>>>> - String fullpath = null;
>>>> + List<D> failures = new ArrayList<D>();
>>>> + List<D> warnings = new ArrayList<D>();
>>>>
>>>> - while ( eventType != XmlPullParser.END_DOCUMENT )
>>>> + List<D> violations = getErrorDetails( analysisFile );
>>>> +
>>>> + for( D violation : violations )
>>>> {
>>>> - if ( eventType == XmlPullParser.START_TAG &&
>>>> "file".equals( xpp.getName() ) )
>>>> + int priority = getPriority( violation );
>>>> + if ( priority <= failurePriority )
>>>> {
>>>> - fullpath = xpp.getAttributeValue( "", "name" );
>>>> + failures.add( violation );
>>>> }
>>>> - if ( eventType == XmlPullParser.START_TAG &&
>>>> tagName.equals( xpp.getName() ) )
>>>> - {
>>>> - Map<String, String> details = getErrorDetails( xpp );
>>>> -
>>>> - if ( fullpath != null )
>>>> - {
>>>> - details.put( "filename", getFilename( fullpath,
>>>> details.get( "package" ) ) );
>>>> - }
>>>> -
>>>> - try
>>>> - {
>>>> - int priority = Integer.parseInt( details.get(
>>>> "priority" ) );
>>>> - if ( priority <= failurePriority )
>>>> - {
>>>> - failures.add( details );
>>>> - }
>>>> - else
>>>> - {
>>>> - warnings.add( details );
>>>> - }
>>>> - }
>>>> - catch ( NumberFormatException e )
>>>> - {
>>>> - // I don't know what priority this is. Treat it
>>>> like a
>>>> - // failure
>>>> - failures.add( details );
>>>> - }
>>>> - catch ( NullPointerException e )
>>>> - {
>>>> - // I don't know what priority this is. Treat it
>>>> like a
>>>> - // failure
>>>> - failures.add( details );
>>>> - }
>>>> -
>>>> - }
>>>> -
>>>> - eventType = xpp.next();
>>>> - }
>>>> -
>>>> - Map<Boolean, List<Map<String, String>>> map = new
>>>> HashMap<Boolean, List<Map<String, String>>>( 2 );
>>>> - map.put( FAILURES_KEY, failures );
>>>> - map.put( WARNINGS_KEY, warnings );
>>>> - return map;
>>>> - }
>>>> -
>>>> - private String getFilename( String fullpath, String pkg )
>>>> - {
>>>> - int index = fullpath.lastIndexOf( File.separatorChar );
>>>> -
>>>> - while ( StringUtils.isNotEmpty( pkg ) )
>>>> - {
>>>> - index = fullpath.substring( 0, index ).lastIndexOf(
>>>> File.separatorChar );
>>>> -
>>>> - int dot = pkg.indexOf( '.' );
>>>> -
>>>> - if ( dot < 0 )
>>>> + else
>>>> {
>>>> - break;
>>>> + warnings.add( violation );
>>>> }
>>>> - pkg = pkg.substring( dot + 1 );
>>>> }
>>>> -
>>>> - return fullpath.substring( index + 1 );
>>>> +
>>>> + ViolationDetails<D> details = newViolationDetailsInstance();
>>>> + details.setFailureDetails( failures );
>>>> + details.setWarningDetails( warnings );
>>>> + return details;
>>>> }
>>>> +
>>>> + protected abstract int getPriority( D errorDetail );
>>>> +
>>>> + protected abstract ViolationDetails<D>
>>>> newViolationDetailsInstance();
>>>>
>>>> /**
>>>> * Prints the warnings and failures
>>>> @@ -267,14 +203,14 @@ public abstract class AbstractPmdViolati
>>>> * @param warnings
>>>> * list of warnings
>>>> */
>>>> - protected void printErrors( List<Map<String, String>> failures,
>>>> List<Map<String, String>> warnings )
>>>> + protected void printErrors( List<D> failures, List<D> warnings )
>>>> {
>>>> - for ( Map<String, String> warning : warnings )
>>>> + for ( D warning : warnings )
>>>> {
>>>> printError( warning, "Warning" );
>>>> }
>>>>
>>>> - for ( Map<String, String> failure : failures )
>>>> + for ( D failure : failures )
>>>> {
>>>> printError( failure, "Failure" );
>>>> }
>>>> @@ -322,7 +258,7 @@ public abstract class AbstractPmdViolati
>>>> *
>>>> * @param item
>>>> */
>>>> - protected abstract void printError( Map<String, String> item,
>>>> String severity );
>>>> + protected abstract void printError( D item, String severity );
>>>>
>>>> /**
>>>> * Gets the attributes and text for the violation tag and puts
>>>> them in a
>>>> @@ -332,6 +268,6 @@ public abstract class AbstractPmdViolati
>>>> * @throws XmlPullParserException
>>>> * @throws IOException
>>>> */
>>>> - protected abstract Map<String, String> getErrorDetails(
>>>> XmlPullParser xpp )
>>>> + protected abstract List<D> getErrorDetails( File analisysFile )
>>>> throws XmlPullParserException, IOException;
>>>> }
>>>> \ No newline at end of file
>>>>
>>>> Modified:
>>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/CpdViolationCheckMojo.java
>>>>
>>>> URL:
>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/CpdViolationCheckMojo.java?rev=1233066&r1=1233065&r2=1233066&view=diff
>>>>
>>>> ==============================================================================
>>>>
>>>> ---
>>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/CpdViolationCheckMojo.java
>>>> (original)
>>>> +++
>>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/CpdViolationCheckMojo.java
>>>> Wed Jan 18 20:59:15 2012
>>>> @@ -19,13 +19,17 @@ package org.apache.maven.plugin.pmd;
>>>> * under the License.
>>>> */
>>>>
>>>> +import java.io.File;
>>>> +import java.io.FileReader;
>>>> import java.io.IOException;
>>>> -import java.util.HashMap;
>>>> -import java.util.Map;
>>>> +import java.util.List;
>>>>
>>>> import org.apache.maven.plugin.MojoExecutionException;
>>>> import org.apache.maven.plugin.MojoFailureException;
>>>> -import org.codehaus.plexus.util.xml.pull.XmlPullParser;
>>>> +import org.apache.maven.plugin.pmd.model.CpdErrorDetail;
>>>> +import org.apache.maven.plugin.pmd.model.CpdFile;
>>>> +import org.apache.maven.plugin.pmd.model.Duplication;
>>>> +import org.apache.maven.plugin.pmd.model.io.xpp3.CpdXpp3Reader;
>>>> import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
>>>>
>>>> /**
>>>> @@ -39,7 +43,7 @@ import org.codehaus.plexus.util.xml.pull
>>>> * @threadSafe
>>>> */
>>>> public class CpdViolationCheckMojo
>>>> - extends AbstractPmdViolationCheckMojo
>>>> + extends AbstractPmdViolationCheckMojo<Duplication>
>>>> {
>>>>
>>>> /**
>>>> @@ -61,9 +65,9 @@ public class CpdViolationCheckMojo
>>>> }
>>>>
>>>> /** {@inheritDoc} */
>>>> - protected void printError( Map item, String severity )
>>>> + protected void printError( Duplication item, String severity )
>>>> {
>>>> - String lines = (String) item.get( "lines" );
>>>> + int lines = item.getLines();
>>>>
>>>>
>>>> StringBuffer buff = new StringBuffer( 100 );
>>>> @@ -71,68 +75,38 @@ public class CpdViolationCheckMojo
>>>> buff.append( lines ).append( " lines of duplicated code at
>>>> locations:" );
>>>> this.getLog().info( buff.toString() );
>>>>
>>>> - buff.setLength( 0 );
>>>> - buff.append( " " );
>>>> - Map file = (Map) item.get( "file" );
>>>> - buff.append( file.get( "path" ) );
>>>> - buff.append( " line " ).append( file.get( "line" ) );
>>>> - this.getLog().info( buff.toString() );
>>>> -
>>>> - buff.setLength( 0 );
>>>> - buff.append( " " );
>>>> - file = (Map) item.get( "file1" );
>>>> - buff.append( file.get( "path" ) );
>>>> - buff.append( " line " ).append( file.get( "line" ) );
>>>> - this.getLog().info( buff.toString() );
>>>> +
>>>> + for( CpdFile file : item.getFiles() )
>>>> + {
>>>> + buff.setLength( 0 );
>>>> + buff.append( " " );
>>>> + buff.append( file.getPath() );
>>>> + buff.append( " line " ).append( file.getLine() );
>>>> + this.getLog().info( buff.toString() );
>>>> + }
>>>>
>>>> - Map codefrag = (Map) item.get( "codefragment" );
>>>> - String codefragstr = (String) codefrag.get( "text" );
>>>> this.getLog().debug( "CPD " + severity + ": Code Fragment " );
>>>> - this.getLog().debug( codefragstr );
>>>> + this.getLog().debug( item.getCodefragment() );
>>>> }
>>>>
>>>> /** {@inheritDoc} */
>>>> - protected Map getErrorDetails( XmlPullParser xpp )
>>>> + protected List<Duplication> getErrorDetails( File cpdFile )
>>>> throws XmlPullParserException, IOException
>>>> {
>>>> - int index = 0;
>>>> - int attributeCount = 0;
>>>> - HashMap msgs = new HashMap();
>>>> -
>>>> - attributeCount = xpp.getAttributeCount();
>>>> - while ( index < attributeCount )
>>>> - {
>>>> - msgs.put( xpp.getAttributeName( index ),
>>>> xpp.getAttributeValue( index ) );
>>>> -
>>>> - index++;
>>>> - }
>>>> -
>>>> - int tp = xpp.next();
>>>> - while ( tp != XmlPullParser.END_TAG )
>>>> - {
>>>> - // get the tag's text
>>>> - switch ( tp )
>>>> - {
>>>> - case XmlPullParser.TEXT:
>>>> - msgs.put( "text", xpp.getText().trim() );
>>>> - break;
>>>> - case XmlPullParser.START_TAG:
>>>> - String nm = xpp.getName();
>>>> - if ( msgs.containsKey( nm ) )
>>>> - {
>>>> - int cnt = 1;
>>>> - while ( msgs.containsKey( nm + cnt ) )
>>>> - {
>>>> - ++cnt;
>>>> - }
>>>> - nm = nm + cnt;
>>>> - }
>>>> - msgs.put( nm, getErrorDetails( xpp ) );
>>>> - break;
>>>> - default:
>>>> - }
>>>> - tp = xpp.next();
>>>> - }
>>>> - return msgs;
>>>> + CpdXpp3Reader reader = new CpdXpp3Reader();
>>>> + CpdErrorDetail details = reader.read( new FileReader(
>>>> cpdFile ), false );
>>>> + return details.getDuplications();
>>>> + }
>>>> +
>>>> + @Override
>>>> + protected int getPriority( Duplication errorDetail )
>>>> + {
>>>> + return 0;
>>>> + }
>>>> +
>>>> + @Override
>>>> + protected ViolationDetails<Duplication>
>>>> newViolationDetailsInstance()
>>>> + {
>>>> + return new ViolationDetails<Duplication>();
>>>> }
>>>> -}
>>>> +}
>>>> \ No newline at end of file
>>>>
>>>> Modified:
>>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdViolationCheckMojo.java
>>>>
>>>> URL:
>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdViolationCheckMojo.java?rev=1233066&r1=1233065&r2=1233066&view=diff
>>>>
>>>> ==============================================================================
>>>>
>>>> ---
>>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdViolationCheckMojo.java
>>>> (original)
>>>> +++
>>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdViolationCheckMojo.java
>>>> Wed Jan 18 20:59:15 2012
>>>> @@ -19,12 +19,19 @@ package org.apache.maven.plugin.pmd;
>>>> * under the License.
>>>> */
>>>>
>>>> +import java.io.File;
>>>> +import java.io.FileReader;
>>>> import java.io.IOException;
>>>> -import java.util.HashMap;
>>>> -import java.util.Map;
>>>> +import java.util.ArrayList;
>>>> +import java.util.List;
>>>>
>>>> import org.apache.maven.plugin.MojoExecutionException;
>>>> import org.apache.maven.plugin.MojoFailureException;
>>>> +import org.apache.maven.plugin.pmd.model.PmdErrorDetail;
>>>> +import org.apache.maven.plugin.pmd.model.PmdFile;
>>>> +import org.apache.maven.plugin.pmd.model.Violation;
>>>> +import org.apache.maven.plugin.pmd.model.io.xpp3.PmdXpp3Reader;
>>>> +import org.codehaus.plexus.util.StringUtils;
>>>> import org.codehaus.plexus.util.xml.pull.XmlPullParser;
>>>> import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
>>>>
>>>> @@ -39,7 +46,7 @@ import org.codehaus.plexus.util.xml.pull
>>>> * @threadSafe
>>>> */
>>>> public class PmdViolationCheckMojo
>>>> - extends AbstractPmdViolationCheckMojo
>>>> + extends AbstractPmdViolationCheckMojo<Violation>
>>>> {
>>>> /**
>>>> * What priority level to fail the build on. Failures at or
>>>> above this level
>>>> @@ -71,55 +78,83 @@ public class PmdViolationCheckMojo
>>>> }
>>>>
>>>> /** {@inheritDoc} */
>>>> - protected void printError( Map<String, String> item, String
>>>> severity )
>>>> + protected void printError( Violation item, String severity )
>>>> {
>>>>
>>>> StringBuffer buff = new StringBuffer( 100 );
>>>> buff.append( "PMD " + severity + ": " );
>>>> - if ( item.containsKey( "class" ) )
>>>> + if ( item.getViolationClass() != null )
>>>> {
>>>> - if ( item.containsKey( "package" ) )
>>>> + if ( item.getViolationPackage() != null )
>>>> {
>>>> - buff.append( item.get( "package" ) );
>>>> + buff.append( item.getViolationPackage() );
>>>> buff.append( "." );
>>>> }
>>>> - buff.append( item.get( "class" ) );
>>>> + buff.append( item.getViolationClass() );
>>>> }
>>>> else
>>>> {
>>>> - buff.append( item.get( "filename" ) );
>>>> + buff.append( item.getFileName() );
>>>> }
>>>> buff.append( ":" );
>>>> - buff.append( item.get( "beginline" ) );
>>>> - buff.append( " Rule:" ).append( item.get( "rule" ) );
>>>> - buff.append( " Priority:" ).append( item.get( "priority" ) );
>>>> - buff.append( " " ).append( item.get( "text" ) ).append( "." );
>>>> + buff.append( item.getBeginline() );
>>>> + buff.append( " Rule:" ).append( item.getRule() );
>>>> + buff.append( " Priority:" ).append( item.getPriority() );
>>>> + buff.append( " " ).append( item.getText() ).append( "." );
>>>>
>>>> this.getLog().info( buff.toString() );
>>>> }
>>>> -
>>>> - /** {@inheritDoc} */
>>>> - protected Map<String, String> getErrorDetails( XmlPullParser xpp )
>>>> +
>>>> + @Override
>>>> + protected List<Violation> getErrorDetails( File pmdFile )
>>>> throws XmlPullParserException, IOException
>>>> {
>>>> - int index = 0;
>>>> - int attributeCount = 0;
>>>> - Map<String, String> msgs = new HashMap<String, String>();
>>>> + PmdXpp3Reader reader = new PmdXpp3Reader();
>>>> + PmdErrorDetail details = reader.read( new FileReader(
>>>> pmdFile ), false );
>>>>
>>>> - attributeCount = xpp.getAttributeCount();
>>>> - while ( index < attributeCount )
>>>> + List<Violation> violations = new ArrayList<Violation>();
>>>> + for( PmdFile file : details.getFiles() )
>>>> {
>>>> -
>>>> - msgs.put( xpp.getAttributeName( index ),
>>>> xpp.getAttributeValue( index ) );
>>>> -
>>>> - index++;
>>>> + String fullPath = file.getName();
>>>> +
>>>> + for ( Violation violation : file.getViolations() )
>>>> + {
>>>> + violation.setFileName( getFilename( fullPath,
>>>> violation.getViolationPackage() ) );
>>>> + violations.add( violation );
>>>> + }
>>>> }
>>>> + return violations;
>>>> + }
>>>> +
>>>> + @Override
>>>> + protected int getPriority( Violation errorDetail )
>>>> + {
>>>> + return errorDetail.getPriority();
>>>> + }
>>>> +
>>>> + @Override
>>>> + protected ViolationDetails<Violation>
>>>> newViolationDetailsInstance()
>>>> + {
>>>> + return new ViolationDetails<Violation>();
>>>> + }
>>>> +
>>>> + private String getFilename( String fullpath, String pkg )
>>>> + {
>>>> + int index = fullpath.lastIndexOf( File.separatorChar );
>>>>
>>>> - // get the tag's text
>>>> - if ( xpp.next() == XmlPullParser.TEXT )
>>>> + while ( StringUtils.isNotEmpty( pkg ) )
>>>> {
>>>> - msgs.put( "text", xpp.getText().trim() );
>>>> + index = fullpath.substring( 0, index ).lastIndexOf(
>>>> File.separatorChar );
>>>> +
>>>> + int dot = pkg.indexOf( '.' );
>>>> +
>>>> + if ( dot < 0 )
>>>> + {
>>>> + break;
>>>> + }
>>>> + pkg = pkg.substring( dot + 1 );
>>>> }
>>>> - return msgs;
>>>> +
>>>> + return fullpath.substring( index + 1 );
>>>> }
>>>> }
>>>> \ No newline at end of file
>>>>
>>>> Added:
>>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/ViolationDetails.java
>>>>
>>>> URL:
>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/ViolationDetails.java?rev=1233066&view=auto
>>>>
>>>> ==============================================================================
>>>>
>>>> ---
>>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/ViolationDetails.java
>>>> (added)
>>>> +++
>>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/ViolationDetails.java
>>>> Wed Jan 18 20:59:15 2012
>>>> @@ -0,0 +1,69 @@
>>>> +package org.apache.maven.plugin.pmd;
>>>> +
>>>> +/*
>>>> + * 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.
>>>> + */
>>>> +
>>>> +import java.util.ArrayList;
>>>> +import java.util.List;
>>>> +
>>>> +/**
>>>> + * Collector of warnings and failures.
>>>> + *
>>>> + * @author Robert Scholte
>>>> + * @param <D>
>>>> + * @since 2.7
>>>> + */
>>>> +public class ViolationDetails<D>
>>>> +{
>>>> + private List<D> warningDetails = new ArrayList<D>();
>>>> +
>>>> + private List<D> failureDetails = new ArrayList<D>();
>>>> +
>>>> + /**
>>>> + * @return the warningDetails, never {@code null}
>>>> + */
>>>> + public List<D> getWarningDetails()
>>>> + {
>>>> + return warningDetails;
>>>> + }
>>>> +
>>>> + /**
>>>> + * @param warningDetails the warningDetails to set
>>>> + */
>>>> + public void setWarningDetails( List<D> warningDetails )
>>>> + {
>>>> + this.warningDetails = warningDetails;
>>>> + }
>>>> +
>>>> + /**
>>>> + * @return the failureDetails, never {@code null}
>>>> + */
>>>> + public List<D> getFailureDetails()
>>>> + {
>>>> + return failureDetails;
>>>> + }
>>>> +
>>>> + /**
>>>> + * @param failureDetails the failureDetails to set
>>>> + */
>>>> + public void setFailureDetails( List<D> failureDetails )
>>>> + {
>>>> + this.failureDetails = failureDetails;
>>>> + }
>>>> +}
>>>> \ No newline at end of file
>>>>
>>>> Added: maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/cpd.mdo
>>>> URL:
>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/cpd.mdo?rev=1233066&view=auto
>>>>
>>>> ==============================================================================
>>>>
>>>> --- maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/cpd.mdo (added)
>>>> +++ maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/cpd.mdo Wed
>>>> Jan 18 20:59:15 2012
>>>> @@ -0,0 +1,70 @@
>>>> +<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>
>>>> + <name>codefragment</name>
>>>> + <type>String</type>
>>>> + </field>
>>>> + </fields>
>>>> + </class>
>>>> + <class xml.tagName="file">
>>>> + <name>CpdFile</name>
>>>> + <fields>
>>>> + <field xml.attribute="true">
>>>> + <name>line</name>
>>>> + <type>int</type>
>>>> + </field>
>>>> + <field xml.attribute="true">
>>>> + <name>path</name>
>>>> + <type>String</type>
>>>> + </field>
>>>> + </fields>
>>>> + </class>
>>>> + </classes>
>>>> +</model>
>>>> \ No newline at end of file
>>>>
>>>> Added: maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/pmd.mdo
>>>> URL:
>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/pmd.mdo?rev=1233066&view=auto
>>>>
>>>> ==============================================================================
>>>>
>>>> --- maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/pmd.mdo (added)
>>>> +++ maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/pmd.mdo Wed
>>>> Jan 18 20:59:15 2012
>>>> @@ -0,0 +1,109 @@
>>>> +<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">
>>>> + <type>Violation</type>
>>>> + <multiplicity>*</multiplicity>
>>>> + </association>
>>>> + </field>
>>>> + </fields>
>>>> + </class>
>>>> + <class>
>>>> + <name>Violation</name>
>>>> + <fields>
>>>> + <field xml.attribute="true">
>>>> + <name>beginline</name>
>>>> + <type>int</type>
>>>> + </field>
>>>> + <field xml.tagName="class" xml.attribute="true">
>>>> + <name>violationClass</name>
>>>> + <type>String</type>
>>>> + </field>
>>>> + <field xml.tagName="package" xml.attribute="true">
>>>> + <name>violationPackage</name>
>>>> + <type>String</type>
>>>> + </field>
>>>> + <field xml.attribute="true">
>>>> + <name>rule</name>
>>>> + <type>String</type>
>>>> + </field>
>>>> + <field xml.attribute="true">
>>>> + <name>priority</name>
>>>> + <type>int</type>
>>>> + </field>
>>>> + <field xml.content="true">
>>>> + <name>text</name>
>>>> + <type>String</type>
>>>> + </field>
>>>> + </fields>
>>>> + <codeSegments>
>>>> + <codeSegment>
>>>> + <code>
>>>> + <![CDATA[
>>>> + private String fileName;
>>>> +
>>>> + public void setFileName( String fileName )
>>>> + {
>>>> + this.fileName = fileName;
>>>> + }
>>>> +
>>>> + public String getFileName()
>>>> + {
>>>> + return fileName;
>>>> + }
>>>> + ]]>
>>>> + </code>
>>>> + </codeSegment>
>>>> + </codeSegments>
>>>> + </class>
>>>> + </classes>
>>>> +
>>>> +
>>>> +
>>>> +</model>
>>>> \ No newline at end of file
>>>>
>>>>
>>>>
>>>
>>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
> For additional commands, e-mail: dev-help@maven.apache.org
>
>
--
Dennis Lundberg
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org
Re: svn commit: r1233066 - in /maven/plugins/trunk/maven-pmd-plugin:
./ src/it/mpmd-138/ src/it/mpmd-138/mod-1/ src/it/mpmd-138/mod-1/src/
src/it/mpmd-138/mod-1/src/main/ src/it/mpmd-138/mod-1/src/main/config/
src/it/mpmd-138/mod-1/src/main/config/pmd/ src...
Posted by Robert Scholte <ap...@sourcegrounds.com>.
Always nice, unstable tests :S
Win7 + M3.0.4 sometimes fails, sometimes succeed.
This shows there are not enough tests for the m-pmd-p.
Easiest solution is to remove a few verification-lines, but actually I
want to know what's going on.
I'll dive into this.
-Robert
On Wed, 25 Jan 2012 23:10:30 +0100, Dennis Lundberg <de...@apache.org>
wrote:
> Some more data on my setup:
>
> On Ubuntu the IT fails with Maven 2.2.1, but it works with Maven 3.0.3
>
> On Windows 7 the IT fails with both Maven 2.2.1 and Maven 3.0.3
>
>
> On 2012-01-25 23:06, Dennis Lundberg wrote:
>> Hi Robert,
>>
>> The new IT mpmd-138 is failing for me on both Windows 7 and Ubuntu:
>>
>> [INFO] Building: mpmd-138\pom.xml
>> [INFO] ..FAILED (10.9 s)
>> [INFO] The post-build script did not succeed. Expression: (1 ==
>> buildLog.getText().count([INFO] PMD Failure: test.MyClass:8
>> Rule:EmptyStatementNotInLoop Priority:3 An empty statement (semicolon)
>> not part of a loop.))
>>
>> Can you have a look at it?
>>
>> On 2012-01-18 21:59, rfscholte@apache.org wrote:
>>> Author: rfscholte
>>> Date: Wed Jan 18 20:59:15 2012
>>> New Revision: 1233066
>>>
>>> URL: http://svn.apache.org/viewvc?rev=1233066&view=rev
>>> Log:
>>> Fix MPMD-138: Use modello to generate models to read pmd and cpd files
>>>
>>> Added:
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/invoker.properties
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/pom.xml
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/latin-1.xml
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/utf-8.xml
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/java/
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/java/test/
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/java/test/MyClass.java
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/pom.xml
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/rulesets/
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/rulesets/basic.xml
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/src/
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/src/main/
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/src/main/java/
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/src/main/java/test/
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/src/main/java/test/MyClass.java
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/pom.xml
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/MyClass.java
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/sub/
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/sub/MyClass.java
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/pom.xml
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/MyClass.java
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/OtherClass.java
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/sub/
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/sub/MyClass.java
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/pom.xml
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/verify.groovy
>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/ViolationDetails.java
>>> maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/
>>> maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/cpd.mdo
>>> maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/pmd.mdo
>>> Modified:
>>> maven/plugins/trunk/maven-pmd-plugin/pom.xml
>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/AbstractPmdViolationCheckMojo.java
>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/CpdViolationCheckMojo.java
>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdViolationCheckMojo.java
>>>
>>> Modified: maven/plugins/trunk/maven-pmd-plugin/pom.xml
>>> URL:
>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/pom.xml?rev=1233066&r1=1233065&r2=1233066&view=diff
>>> ==============================================================================
>>> --- maven/plugins/trunk/maven-pmd-plugin/pom.xml (original)
>>> +++ maven/plugins/trunk/maven-pmd-plugin/pom.xml Wed Jan 18 20:59:15
>>> 2012
>>> @@ -68,6 +68,33 @@ under the License.
>>> <sitePluginVersion>3.0</sitePluginVersion>
>>> </properties>
>>>
>>> + <build>
>>> + <plugins>
>>> + <plugin>
>>> + <groupId>org.codehaus.modello</groupId>
>>> + <artifactId>modello-maven-plugin</artifactId>
>>> + <version>1.4.1</version>
>>> + <configuration>
>>> + <useJava5>true</useJava5>
>>> + <models>
>>> + <model>src/main/mdo/pmd.mdo</model>
>>> + <model>src/main/mdo/cpd.mdo</model>
>>> + </models>
>>> + <version>1.0</version>
>>> + </configuration>
>>> + <executions>
>>> + <execution>
>>> + <phase>generate-sources</phase>
>>> + <goals>
>>> + <goal>java</goal>
>>> + <goal>xpp3-reader</goal>
>>> + </goals>
>>> + </execution>
>>> + </executions>
>>> + </plugin>
>>> + </plugins>
>>> + </build>
>>> +
>>> <dependencies>
>>> <!-- maven -->
>>> <dependency>
>>> @@ -124,7 +151,7 @@ under the License.
>>> <dependency>
>>> <groupId>org.codehaus.plexus</groupId>
>>> <artifactId>plexus-utils</artifactId>
>>> - <version>2.0.5</version>
>>> + <version>2.1</version>
>>> </dependency>
>>>
>>> <!-- pmd -->
>>>
>>> Added:
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/invoker.properties
>>> URL:
>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/invoker.properties?rev=1233066&view=auto
>>> ==============================================================================
>>> ---
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/invoker.properties
>>> (added)
>>> +++
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/invoker.properties
>>> Wed Jan 18 20:59:15 2012
>>> @@ -0,0 +1 @@
>>> +invoker.goals = clean verify
>>> \ No newline at end of file
>>>
>>> Added:
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/pom.xml
>>> URL:
>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/pom.xml?rev=1233066&view=auto
>>> ==============================================================================
>>> --- maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/pom.xml
>>> (added)
>>> +++ maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/pom.xml
>>> Wed Jan 18 20:59:15 2012
>>> @@ -0,0 +1,39 @@
>>> +<?xml version="1.0" encoding="UTF-8"?>
>>> +
>>> +<!--
>>> +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.
>>> +-->
>>> +
>>> +<project xmlns="http://maven.apache.org/POM/4.0.0"
>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
>>> http://maven.apache.org/xsd/maven-4.0.0.xsd">
>>> + <modelVersion>4.0.0</modelVersion>
>>> +
>>> + <parent>
>>> + <groupId>org.apache.maven.plugin.pmd.its</groupId>
>>> + <artifactId>mpmd-138-parent</artifactId>
>>> + <version>1.0-SNAPSHOT</version>
>>> + </parent>
>>> +
>>> + <artifactId>mpmd-138-mod-1</artifactId>
>>> +
>>> + <name>Module 1</name>
>>> +
>>> + <properties>
>>> +
>>> <project.reporting.outputEncoding>ISO-8859-1</project.reporting.outputEncoding>
>>> + </properties>
>>> +
>>> +</project>
>>> \ No newline at end of file
>>>
>>> Added:
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/latin-1.xml
>>> URL:
>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/latin-1.xml?rev=1233066&view=auto
>>> ==============================================================================
>>> ---
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/latin-1.xml
>>> (added)
>>> +++
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/latin-1.xml
>>> Wed Jan 18 20:59:15 2012
>>> @@ -0,0 +1,12 @@
>>> +<?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>
>>>
>>> Added:
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/utf-8.xml
>>> URL:
>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/utf-8.xml?rev=1233066&view=auto
>>> ==============================================================================
>>> ---
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/utf-8.xml
>>> (added)
>>> +++
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/utf-8.xml
>>> Wed Jan 18 20:59:15 2012
>>> @@ -0,0 +1,11 @@
>>> +<?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>
>>>
>>> Added:
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/java/test/MyClass.java
>>> URL:
>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/java/test/MyClass.java?rev=1233066&view=auto
>>> ==============================================================================
>>> ---
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/java/test/MyClass.java
>>> (added)
>>> +++
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/java/test/MyClass.java
>>> Wed Jan 18 20:59:15 2012
>>> @@ -0,0 +1,12 @@
>>> +package test;
>>> +
>>> +public class MyClass
>>> +{
>>> +
>>> + public static void main( String[] args )
>>> + {
>>> + ;
>>> + return;
>>> + }
>>> +
>>> +}
>>>
>>> Added:
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/pom.xml
>>> URL:
>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/pom.xml?rev=1233066&view=auto
>>> ==============================================================================
>>> --- maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/pom.xml
>>> (added)
>>> +++ maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/pom.xml
>>> Wed Jan 18 20:59:15 2012
>>> @@ -0,0 +1,35 @@
>>> +<?xml version="1.0" encoding="UTF-8"?>
>>> +
>>> +<!--
>>> +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.
>>> +-->
>>> +
>>> +<project xmlns="http://maven.apache.org/POM/4.0.0"
>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
>>> http://maven.apache.org/xsd/maven-4.0.0.xsd">
>>> + <modelVersion>4.0.0</modelVersion>
>>> +
>>> + <parent>
>>> + <groupId>org.apache.maven.plugin.pmd.its</groupId>
>>> + <artifactId>mpmd-138-parent</artifactId>
>>> + <version>1.0-SNAPSHOT</version>
>>> + </parent>
>>> +
>>> + <artifactId>mpmd-138-mod-2</artifactId>
>>> +
>>> + <name>Module 2</name>
>>> +
>>> +</project>
>>> \ No newline at end of file
>>>
>>> Added:
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/rulesets/basic.xml
>>> URL:
>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/rulesets/basic.xml?rev=1233066&view=auto
>>> ==============================================================================
>>> ---
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/rulesets/basic.xml
>>> (added)
>>> +++
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/rulesets/basic.xml
>>> Wed Jan 18 20:59:15 2012
>>> @@ -0,0 +1,11 @@
>>> +<?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>
>>>
>>> Added:
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/src/main/java/test/MyClass.java
>>> URL:
>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/src/main/java/test/MyClass.java?rev=1233066&view=auto
>>> ==============================================================================
>>> ---
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/src/main/java/test/MyClass.java
>>> (added)
>>> +++
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/src/main/java/test/MyClass.java
>>> Wed Jan 18 20:59:15 2012
>>> @@ -0,0 +1,12 @@
>>> +package test;
>>> +
>>> +public class MyClass
>>> +{
>>> +
>>> + public static void main( String[] args )
>>> + {
>>> + ;
>>> + return;
>>> + }
>>> +
>>> +}
>>>
>>> Added:
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/pom.xml
>>> URL:
>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/pom.xml?rev=1233066&view=auto
>>> ==============================================================================
>>> --- maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/pom.xml
>>> (added)
>>> +++ maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/pom.xml
>>> Wed Jan 18 20:59:15 2012
>>> @@ -0,0 +1,37 @@
>>> +<?xml version="1.0" encoding="UTF-8"?>
>>> +
>>> +<!--
>>> +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.
>>> +-->
>>> +
>>> +<project xmlns="http://maven.apache.org/POM/4.0.0"
>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
>>> http://maven.apache.org/xsd/maven-4.0.0.xsd">
>>> + <modelVersion>4.0.0</modelVersion>
>>> +
>>> + <parent>
>>> + <groupId>org.apache.maven.plugin.pmd.its</groupId>
>>> + <artifactId>mpmd-138-parent</artifactId>
>>> + <version>1.0-SNAPSHOT</version>
>>> + </parent>
>>> +
>>> + <artifactId>mpmd-138-mod-3</artifactId>
>>> +
>>> + <name>Module 3</name>
>>> +
>>> + <description>Test 3 classes with copy-paste block</description>
>>> +
>>> +</project>
>>> \ No newline at end of file
>>>
>>> Added:
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/MyClass.java
>>> URL:
>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/MyClass.java?rev=1233066&view=auto
>>> ==============================================================================
>>> ---
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/MyClass.java
>>> (added)
>>> +++
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/MyClass.java
>>> Wed Jan 18 20:59:15 2012
>>> @@ -0,0 +1,39 @@
>>> +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 );
>>> + }
>>> + }
>>> +
>>> +}
>>>
>>> Added:
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/sub/MyClass.java
>>> URL:
>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/sub/MyClass.java?rev=1233066&view=auto
>>> ==============================================================================
>>> ---
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/sub/MyClass.java
>>> (added)
>>> +++
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/sub/MyClass.java
>>> Wed Jan 18 20:59:15 2012
>>> @@ -0,0 +1,40 @@
>>> +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 );
>>> + }
>>> + }
>>> +}
>>> \ No newline at end of file
>>>
>>> Added:
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/pom.xml
>>> URL:
>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/pom.xml?rev=1233066&view=auto
>>> ==============================================================================
>>> --- maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/pom.xml
>>> (added)
>>> +++ maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/pom.xml
>>> Wed Jan 18 20:59:15 2012
>>> @@ -0,0 +1,37 @@
>>> +<?xml version="1.0" encoding="UTF-8"?>
>>> +
>>> +<!--
>>> +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.
>>> +-->
>>> +
>>> +<project xmlns="http://maven.apache.org/POM/4.0.0"
>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
>>> http://maven.apache.org/xsd/maven-4.0.0.xsd">
>>> + <modelVersion>4.0.0</modelVersion>
>>> +
>>> + <parent>
>>> + <groupId>org.apache.maven.plugin.pmd.its</groupId>
>>> + <artifactId>mpmd-138-parent</artifactId>
>>> + <version>1.0-SNAPSHOT</version>
>>> + </parent>
>>> +
>>> + <artifactId>mpmd-138-mod-4</artifactId>
>>> +
>>> + <name>Module 4</name>
>>> +
>>> + <description>Test 3 classes with copy-paste block</description>
>>> +
>>> +</project>
>>> \ No newline at end of file
>>>
>>> Added:
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/MyClass.java
>>> URL:
>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/MyClass.java?rev=1233066&view=auto
>>> ==============================================================================
>>> ---
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/MyClass.java
>>> (added)
>>> +++
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/MyClass.java
>>> Wed Jan 18 20:59:15 2012
>>> @@ -0,0 +1,37 @@
>>> +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 );
>>> + }
>>> + }
>>> +}
>>> \ No newline at end of file
>>>
>>> Added:
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/OtherClass.java
>>> URL:
>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/OtherClass.java?rev=1233066&view=auto
>>> ==============================================================================
>>> ---
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/OtherClass.java
>>> (added)
>>> +++
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/OtherClass.java
>>> Wed Jan 18 20:59:15 2012
>>> @@ -0,0 +1,40 @@
>>> +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 );
>>> + }
>>> + }
>>> +}
>>> \ No newline at end of file
>>>
>>> Added:
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/sub/MyClass.java
>>> URL:
>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/sub/MyClass.java?rev=1233066&view=auto
>>> ==============================================================================
>>> ---
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/sub/MyClass.java
>>> (added)
>>> +++
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/sub/MyClass.java
>>> Wed Jan 18 20:59:15 2012
>>> @@ -0,0 +1,36 @@
>>> +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 );
>>> + }
>>> + }
>>> +}
>>> \ No newline at end of file
>>>
>>> Added: maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/pom.xml
>>> URL:
>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/pom.xml?rev=1233066&view=auto
>>> ==============================================================================
>>> --- maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/pom.xml
>>> (added)
>>> +++ maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/pom.xml Wed
>>> Jan 18 20:59:15 2012
>>> @@ -0,0 +1,67 @@
>>> +<?xml version="1.0" encoding="UTF-8"?>
>>> +
>>> +<!--
>>> +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.
>>> +-->
>>> +
>>> +<project xmlns="http://maven.apache.org/POM/4.0.0"
>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
>>> http://maven.apache.org/xsd/maven-4.0.0.xsd">
>>> + <modelVersion>4.0.0</modelVersion>
>>> +
>>> + <groupId>org.apache.maven.plugin.pmd.its</groupId>
>>> + <artifactId>mpmd-138-parent</artifactId>
>>> + <version>1.0-SNAPSHOT</version>
>>> + <packaging>pom</packaging>
>>> +
>>> + <name>Parent</name>
>>> + <description>
>>> + Test proper report generation in a multi-module build.
>>> + </description>
>>> +
>>> + <modules>
>>> + <module>mod-1</module>
>>> + <module>mod-2</module>
>>> + <module>mod-3</module>
>>> + <module>mod-4</module>
>>> + </modules>
>>> +
>>> + <properties>
>>> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
>>> + </properties>
>>> +
>>> + <build>
>>> + <plugins>
>>> + <plugin>
>>> + <artifactId>maven-pmd-plugin</artifactId>
>>> + <version>@project.version@</version>
>>> + <executions>
>>> + <execution>
>>> + <goals>
>>> + <goal>check</goal>
>>> + <goal>cpd-check</goal>
>>> + </goals>
>>> + </execution>
>>> + </executions>
>>> + <configuration>
>>> + <verbose>true</verbose>
>>> + <minimumTokens>25</minimumTokens>
>>> + <failOnViolation>false</failOnViolation> <!-- force
>>> execution of both goals, will be checked with verify-script -->
>>> + </configuration>
>>> + </plugin>
>>> + </plugins>
>>> + </build>
>>> +</project>
>>> \ No newline at end of file
>>>
>>> Added:
>>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/verify.groovy
>>> URL:
>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/verify.groovy?rev=1233066&view=auto
>>> ==============================================================================
>>> --- maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/verify.groovy
>>> (added)
>>> +++ maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/verify.groovy
>>> Wed Jan 18 20:59:15 2012
>>> @@ -0,0 +1,37 @@
>>> +
>>> +/*
>>> + * 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.
>>> + */
>>> +
>>> +File buildLog = new File( basedir, 'build.log' )
>>> +assert buildLog.exists()
>>> +
>>> +// Module 1
>>> +assert 1 == buildLog.getText().count('[INFO] PMD Failure:
>>> test.MyClass:8 Rule:EmptyStatementNotInLoop Priority:3 An empty
>>> statement (semicolon) not part of a loop.')
>>> +assert 1 == buildLog.getText().count('[INFO] PMD Failure:
>>> test.MyClass:9 Rule:UnnecessaryReturn Priority:3 Avoid unnecessary
>>> return statements.')
>>> +assert 1 == buildLog.getText().count('[INFO] You have 2 PMD
>>> violations. For more details see:')
>>> +
>>> +// Module 2
>>> +assert 1 == buildLog.getText().count('[INFO] PMD Failure:
>>> test.MyClass:8 Rule:EmptyStatementNotInLoop Priority:3 TEST:
>>> LOCAL-FILE-RULESET.')
>>> +assert 1 == buildLog.getText().count('[INFO] You have 1 PMD
>>> violation. For more details see:')
>>> +
>>> +// Module 3
>>> +assert 1 == buildLog.getText().count('[INFO] You have 1 CPD
>>> duplication. For more details see:')
>>> +
>>> +// Module 4
>>> +assert 1 == buildLog.getText().count('[INFO] You have 2 CPD
>>> duplications. For more details see:')
>>> \ No newline at end of file
>>>
>>> Modified:
>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/AbstractPmdViolationCheckMojo.java
>>> URL:
>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/AbstractPmdViolationCheckMojo.java?rev=1233066&r1=1233065&r2=1233066&view=diff
>>> ==============================================================================
>>> ---
>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/AbstractPmdViolationCheckMojo.java
>>> (original)
>>> +++
>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/AbstractPmdViolationCheckMojo.java
>>> Wed Jan 18 20:59:15 2012
>>> @@ -23,19 +23,13 @@ import java.io.File;
>>> import java.io.IOException;
>>> import java.io.Reader;
>>> import java.util.ArrayList;
>>> -import java.util.HashMap;
>>> import java.util.List;
>>> -import java.util.Map;
>>>
>>> import org.apache.maven.plugin.AbstractMojo;
>>> import org.apache.maven.plugin.MojoExecutionException;
>>> import org.apache.maven.plugin.MojoFailureException;
>>> import org.apache.maven.project.MavenProject;
>>> import org.codehaus.plexus.util.IOUtil;
>>> -import org.codehaus.plexus.util.ReaderFactory;
>>> -import org.codehaus.plexus.util.StringUtils;
>>> -import org.codehaus.plexus.util.xml.pull.MXParser;
>>> -import org.codehaus.plexus.util.xml.pull.XmlPullParser;
>>> import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
>>>
>>> /**
>>> @@ -44,13 +38,9 @@ import org.codehaus.plexus.util.xml.pull
>>> * @author <a href="mailto:brett@apache.org">Brett Porter</a>
>>> * @version $Id$
>>> */
>>> -public abstract class AbstractPmdViolationCheckMojo
>>> +public abstract class AbstractPmdViolationCheckMojo<D>
>>> extends AbstractMojo
>>> {
>>> - private static final Boolean FAILURES_KEY = Boolean.TRUE;
>>> -
>>> - private static final Boolean WARNINGS_KEY = Boolean.FALSE;
>>> -
>>> /**
>>> * The location of the XML report to check, as generated by the
>>> PMD report.
>>> *
>>> @@ -117,14 +107,10 @@ public abstract class AbstractPmdViolati
>>> Reader reader = null;
>>> try
>>> {
>>> - XmlPullParser xpp = new MXParser();
>>> - reader = ReaderFactory.newXmlReader( outputFile );
>>> - xpp.setInput( reader );
>>> -
>>> - Map<Boolean, List<Map<String, String>>>
>>> violations = getViolations( xpp, tagName, failurePriority );
>>> + ViolationDetails<D> violations = getViolations(
>>> outputFile, failurePriority );
>>>
>>> - List<Map<String, String>> failures =
>>> violations.get( FAILURES_KEY );
>>> - List<Map<String, String>> warnings =
>>> violations.get( WARNINGS_KEY );
>>> + List<D> failures = violations.getFailureDetails();
>>> + List<D> warnings = violations.getWarningDetails();
>>>
>>> if ( verbose )
>>> {
>>> @@ -178,86 +164,36 @@ public abstract class AbstractPmdViolati
>>> * @throws XmlPullParserException
>>> * @throws IOException
>>> */
>>> - private Map<Boolean, List<Map<String, String>>> getViolations(
>>> XmlPullParser xpp, String tagName, int failurePriority )
>>> + private ViolationDetails<D> getViolations( File analysisFile, int
>>> failurePriority )
>>> throws XmlPullParserException, IOException
>>> {
>>> - int eventType = xpp.getEventType();
>>> -
>>> - List<Map<String, String>> failures = new
>>> ArrayList<Map<String, String>>();
>>> - List<Map<String, String>> warnings = new
>>> ArrayList<Map<String, String>>();
>>> -
>>> - String fullpath = null;
>>> + List<D> failures = new ArrayList<D>();
>>> + List<D> warnings = new ArrayList<D>();
>>>
>>> - while ( eventType != XmlPullParser.END_DOCUMENT )
>>> + List<D> violations = getErrorDetails( analysisFile );
>>> +
>>> + for( D violation : violations )
>>> {
>>> - if ( eventType == XmlPullParser.START_TAG &&
>>> "file".equals( xpp.getName() ) )
>>> + int priority = getPriority( violation );
>>> + if ( priority <= failurePriority )
>>> {
>>> - fullpath = xpp.getAttributeValue( "", "name" );
>>> + failures.add( violation );
>>> }
>>> - if ( eventType == XmlPullParser.START_TAG &&
>>> tagName.equals( xpp.getName() ) )
>>> - {
>>> - Map<String, String> details = getErrorDetails( xpp );
>>> -
>>> - if ( fullpath != null )
>>> - {
>>> - details.put( "filename", getFilename( fullpath,
>>> details.get( "package" ) ) );
>>> - }
>>> -
>>> - try
>>> - {
>>> - int priority = Integer.parseInt( details.get(
>>> "priority" ) );
>>> - if ( priority <= failurePriority )
>>> - {
>>> - failures.add( details );
>>> - }
>>> - else
>>> - {
>>> - warnings.add( details );
>>> - }
>>> - }
>>> - catch ( NumberFormatException e )
>>> - {
>>> - // I don't know what priority this is. Treat it
>>> like a
>>> - // failure
>>> - failures.add( details );
>>> - }
>>> - catch ( NullPointerException e )
>>> - {
>>> - // I don't know what priority this is. Treat it
>>> like a
>>> - // failure
>>> - failures.add( details );
>>> - }
>>> -
>>> - }
>>> -
>>> - eventType = xpp.next();
>>> - }
>>> -
>>> - Map<Boolean, List<Map<String, String>>> map = new
>>> HashMap<Boolean, List<Map<String, String>>>( 2 );
>>> - map.put( FAILURES_KEY, failures );
>>> - map.put( WARNINGS_KEY, warnings );
>>> - return map;
>>> - }
>>> -
>>> - private String getFilename( String fullpath, String pkg )
>>> - {
>>> - int index = fullpath.lastIndexOf( File.separatorChar );
>>> -
>>> - while ( StringUtils.isNotEmpty( pkg ) )
>>> - {
>>> - index = fullpath.substring( 0, index ).lastIndexOf(
>>> File.separatorChar );
>>> -
>>> - int dot = pkg.indexOf( '.' );
>>> -
>>> - if ( dot < 0 )
>>> + else
>>> {
>>> - break;
>>> + warnings.add( violation );
>>> }
>>> - pkg = pkg.substring( dot + 1 );
>>> }
>>> -
>>> - return fullpath.substring( index + 1 );
>>> +
>>> + ViolationDetails<D> details = newViolationDetailsInstance();
>>> + details.setFailureDetails( failures );
>>> + details.setWarningDetails( warnings );
>>> + return details;
>>> }
>>> +
>>> + protected abstract int getPriority( D errorDetail );
>>> +
>>> + protected abstract ViolationDetails<D>
>>> newViolationDetailsInstance();
>>>
>>> /**
>>> * Prints the warnings and failures
>>> @@ -267,14 +203,14 @@ public abstract class AbstractPmdViolati
>>> * @param warnings
>>> * list of warnings
>>> */
>>> - protected void printErrors( List<Map<String, String>> failures,
>>> List<Map<String, String>> warnings )
>>> + protected void printErrors( List<D> failures, List<D> warnings )
>>> {
>>> - for ( Map<String, String> warning : warnings )
>>> + for ( D warning : warnings )
>>> {
>>> printError( warning, "Warning" );
>>> }
>>>
>>> - for ( Map<String, String> failure : failures )
>>> + for ( D failure : failures )
>>> {
>>> printError( failure, "Failure" );
>>> }
>>> @@ -322,7 +258,7 @@ public abstract class AbstractPmdViolati
>>> *
>>> * @param item
>>> */
>>> - protected abstract void printError( Map<String, String> item,
>>> String severity );
>>> + protected abstract void printError( D item, String severity );
>>>
>>> /**
>>> * Gets the attributes and text for the violation tag and puts
>>> them in a
>>> @@ -332,6 +268,6 @@ public abstract class AbstractPmdViolati
>>> * @throws XmlPullParserException
>>> * @throws IOException
>>> */
>>> - protected abstract Map<String, String> getErrorDetails(
>>> XmlPullParser xpp )
>>> + protected abstract List<D> getErrorDetails( File analisysFile )
>>> throws XmlPullParserException, IOException;
>>> }
>>> \ No newline at end of file
>>>
>>> Modified:
>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/CpdViolationCheckMojo.java
>>> URL:
>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/CpdViolationCheckMojo.java?rev=1233066&r1=1233065&r2=1233066&view=diff
>>> ==============================================================================
>>> ---
>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/CpdViolationCheckMojo.java
>>> (original)
>>> +++
>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/CpdViolationCheckMojo.java
>>> Wed Jan 18 20:59:15 2012
>>> @@ -19,13 +19,17 @@ package org.apache.maven.plugin.pmd;
>>> * under the License.
>>> */
>>>
>>> +import java.io.File;
>>> +import java.io.FileReader;
>>> import java.io.IOException;
>>> -import java.util.HashMap;
>>> -import java.util.Map;
>>> +import java.util.List;
>>>
>>> import org.apache.maven.plugin.MojoExecutionException;
>>> import org.apache.maven.plugin.MojoFailureException;
>>> -import org.codehaus.plexus.util.xml.pull.XmlPullParser;
>>> +import org.apache.maven.plugin.pmd.model.CpdErrorDetail;
>>> +import org.apache.maven.plugin.pmd.model.CpdFile;
>>> +import org.apache.maven.plugin.pmd.model.Duplication;
>>> +import org.apache.maven.plugin.pmd.model.io.xpp3.CpdXpp3Reader;
>>> import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
>>>
>>> /**
>>> @@ -39,7 +43,7 @@ import org.codehaus.plexus.util.xml.pull
>>> * @threadSafe
>>> */
>>> public class CpdViolationCheckMojo
>>> - extends AbstractPmdViolationCheckMojo
>>> + extends AbstractPmdViolationCheckMojo<Duplication>
>>> {
>>>
>>> /**
>>> @@ -61,9 +65,9 @@ public class CpdViolationCheckMojo
>>> }
>>>
>>> /** {@inheritDoc} */
>>> - protected void printError( Map item, String severity )
>>> + protected void printError( Duplication item, String severity )
>>> {
>>> - String lines = (String) item.get( "lines" );
>>> + int lines = item.getLines();
>>>
>>>
>>> StringBuffer buff = new StringBuffer( 100 );
>>> @@ -71,68 +75,38 @@ public class CpdViolationCheckMojo
>>> buff.append( lines ).append( " lines of duplicated code at
>>> locations:" );
>>> this.getLog().info( buff.toString() );
>>>
>>> - buff.setLength( 0 );
>>> - buff.append( " " );
>>> - Map file = (Map) item.get( "file" );
>>> - buff.append( file.get( "path" ) );
>>> - buff.append( " line " ).append( file.get( "line" ) );
>>> - this.getLog().info( buff.toString() );
>>> -
>>> - buff.setLength( 0 );
>>> - buff.append( " " );
>>> - file = (Map) item.get( "file1" );
>>> - buff.append( file.get( "path" ) );
>>> - buff.append( " line " ).append( file.get( "line" ) );
>>> - this.getLog().info( buff.toString() );
>>> +
>>> + for( CpdFile file : item.getFiles() )
>>> + {
>>> + buff.setLength( 0 );
>>> + buff.append( " " );
>>> + buff.append( file.getPath() );
>>> + buff.append( " line " ).append( file.getLine() );
>>> + this.getLog().info( buff.toString() );
>>> + }
>>>
>>> - Map codefrag = (Map) item.get( "codefragment" );
>>> - String codefragstr = (String) codefrag.get( "text" );
>>> this.getLog().debug( "CPD " + severity + ": Code Fragment " );
>>> - this.getLog().debug( codefragstr );
>>> + this.getLog().debug( item.getCodefragment() );
>>> }
>>>
>>> /** {@inheritDoc} */
>>> - protected Map getErrorDetails( XmlPullParser xpp )
>>> + protected List<Duplication> getErrorDetails( File cpdFile )
>>> throws XmlPullParserException, IOException
>>> {
>>> - int index = 0;
>>> - int attributeCount = 0;
>>> - HashMap msgs = new HashMap();
>>> -
>>> - attributeCount = xpp.getAttributeCount();
>>> - while ( index < attributeCount )
>>> - {
>>> - msgs.put( xpp.getAttributeName( index ),
>>> xpp.getAttributeValue( index ) );
>>> -
>>> - index++;
>>> - }
>>> -
>>> - int tp = xpp.next();
>>> - while ( tp != XmlPullParser.END_TAG )
>>> - {
>>> - // get the tag's text
>>> - switch ( tp )
>>> - {
>>> - case XmlPullParser.TEXT:
>>> - msgs.put( "text", xpp.getText().trim() );
>>> - break;
>>> - case XmlPullParser.START_TAG:
>>> - String nm = xpp.getName();
>>> - if ( msgs.containsKey( nm ) )
>>> - {
>>> - int cnt = 1;
>>> - while ( msgs.containsKey( nm + cnt ) )
>>> - {
>>> - ++cnt;
>>> - }
>>> - nm = nm + cnt;
>>> - }
>>> - msgs.put( nm, getErrorDetails( xpp ) );
>>> - break;
>>> - default:
>>> - }
>>> - tp = xpp.next();
>>> - }
>>> - return msgs;
>>> + CpdXpp3Reader reader = new CpdXpp3Reader();
>>> + CpdErrorDetail details = reader.read( new FileReader( cpdFile
>>> ), false );
>>> + return details.getDuplications();
>>> + }
>>> +
>>> + @Override
>>> + protected int getPriority( Duplication errorDetail )
>>> + {
>>> + return 0;
>>> + }
>>> +
>>> + @Override
>>> + protected ViolationDetails<Duplication>
>>> newViolationDetailsInstance()
>>> + {
>>> + return new ViolationDetails<Duplication>();
>>> }
>>> -}
>>> +}
>>> \ No newline at end of file
>>>
>>> Modified:
>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdViolationCheckMojo.java
>>> URL:
>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdViolationCheckMojo.java?rev=1233066&r1=1233065&r2=1233066&view=diff
>>> ==============================================================================
>>> ---
>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdViolationCheckMojo.java
>>> (original)
>>> +++
>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdViolationCheckMojo.java
>>> Wed Jan 18 20:59:15 2012
>>> @@ -19,12 +19,19 @@ package org.apache.maven.plugin.pmd;
>>> * under the License.
>>> */
>>>
>>> +import java.io.File;
>>> +import java.io.FileReader;
>>> import java.io.IOException;
>>> -import java.util.HashMap;
>>> -import java.util.Map;
>>> +import java.util.ArrayList;
>>> +import java.util.List;
>>>
>>> import org.apache.maven.plugin.MojoExecutionException;
>>> import org.apache.maven.plugin.MojoFailureException;
>>> +import org.apache.maven.plugin.pmd.model.PmdErrorDetail;
>>> +import org.apache.maven.plugin.pmd.model.PmdFile;
>>> +import org.apache.maven.plugin.pmd.model.Violation;
>>> +import org.apache.maven.plugin.pmd.model.io.xpp3.PmdXpp3Reader;
>>> +import org.codehaus.plexus.util.StringUtils;
>>> import org.codehaus.plexus.util.xml.pull.XmlPullParser;
>>> import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
>>>
>>> @@ -39,7 +46,7 @@ import org.codehaus.plexus.util.xml.pull
>>> * @threadSafe
>>> */
>>> public class PmdViolationCheckMojo
>>> - extends AbstractPmdViolationCheckMojo
>>> + extends AbstractPmdViolationCheckMojo<Violation>
>>> {
>>> /**
>>> * What priority level to fail the build on. Failures at or above
>>> this level
>>> @@ -71,55 +78,83 @@ public class PmdViolationCheckMojo
>>> }
>>>
>>> /** {@inheritDoc} */
>>> - protected void printError( Map<String, String> item, String
>>> severity )
>>> + protected void printError( Violation item, String severity )
>>> {
>>>
>>> StringBuffer buff = new StringBuffer( 100 );
>>> buff.append( "PMD " + severity + ": " );
>>> - if ( item.containsKey( "class" ) )
>>> + if ( item.getViolationClass() != null )
>>> {
>>> - if ( item.containsKey( "package" ) )
>>> + if ( item.getViolationPackage() != null )
>>> {
>>> - buff.append( item.get( "package" ) );
>>> + buff.append( item.getViolationPackage() );
>>> buff.append( "." );
>>> }
>>> - buff.append( item.get( "class" ) );
>>> + buff.append( item.getViolationClass() );
>>> }
>>> else
>>> {
>>> - buff.append( item.get( "filename" ) );
>>> + buff.append( item.getFileName() );
>>> }
>>> buff.append( ":" );
>>> - buff.append( item.get( "beginline" ) );
>>> - buff.append( " Rule:" ).append( item.get( "rule" ) );
>>> - buff.append( " Priority:" ).append( item.get( "priority" ) );
>>> - buff.append( " " ).append( item.get( "text" ) ).append( "." );
>>> + buff.append( item.getBeginline() );
>>> + buff.append( " Rule:" ).append( item.getRule() );
>>> + buff.append( " Priority:" ).append( item.getPriority() );
>>> + buff.append( " " ).append( item.getText() ).append( "." );
>>>
>>> this.getLog().info( buff.toString() );
>>> }
>>> -
>>> - /** {@inheritDoc} */
>>> - protected Map<String, String> getErrorDetails( XmlPullParser xpp )
>>> +
>>> + @Override
>>> + protected List<Violation> getErrorDetails( File pmdFile )
>>> throws XmlPullParserException, IOException
>>> {
>>> - int index = 0;
>>> - int attributeCount = 0;
>>> - Map<String, String> msgs = new HashMap<String, String>();
>>> + PmdXpp3Reader reader = new PmdXpp3Reader();
>>> + PmdErrorDetail details = reader.read( new FileReader( pmdFile
>>> ), false );
>>>
>>> - attributeCount = xpp.getAttributeCount();
>>> - while ( index < attributeCount )
>>> + List<Violation> violations = new ArrayList<Violation>();
>>> + for( PmdFile file : details.getFiles() )
>>> {
>>> -
>>> - msgs.put( xpp.getAttributeName( index ),
>>> xpp.getAttributeValue( index ) );
>>> -
>>> - index++;
>>> + String fullPath = file.getName();
>>> +
>>> + for ( Violation violation : file.getViolations() )
>>> + {
>>> + violation.setFileName( getFilename( fullPath,
>>> violation.getViolationPackage() ) );
>>> + violations.add( violation );
>>> + }
>>> }
>>> + return violations;
>>> + }
>>> +
>>> + @Override
>>> + protected int getPriority( Violation errorDetail )
>>> + {
>>> + return errorDetail.getPriority();
>>> + }
>>> +
>>> + @Override
>>> + protected ViolationDetails<Violation>
>>> newViolationDetailsInstance()
>>> + {
>>> + return new ViolationDetails<Violation>();
>>> + }
>>> +
>>> + private String getFilename( String fullpath, String pkg )
>>> + {
>>> + int index = fullpath.lastIndexOf( File.separatorChar );
>>>
>>> - // get the tag's text
>>> - if ( xpp.next() == XmlPullParser.TEXT )
>>> + while ( StringUtils.isNotEmpty( pkg ) )
>>> {
>>> - msgs.put( "text", xpp.getText().trim() );
>>> + index = fullpath.substring( 0, index ).lastIndexOf(
>>> File.separatorChar );
>>> +
>>> + int dot = pkg.indexOf( '.' );
>>> +
>>> + if ( dot < 0 )
>>> + {
>>> + break;
>>> + }
>>> + pkg = pkg.substring( dot + 1 );
>>> }
>>> - return msgs;
>>> +
>>> + return fullpath.substring( index + 1 );
>>> }
>>> }
>>> \ No newline at end of file
>>>
>>> Added:
>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/ViolationDetails.java
>>> URL:
>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/ViolationDetails.java?rev=1233066&view=auto
>>> ==============================================================================
>>> ---
>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/ViolationDetails.java
>>> (added)
>>> +++
>>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/ViolationDetails.java
>>> Wed Jan 18 20:59:15 2012
>>> @@ -0,0 +1,69 @@
>>> +package org.apache.maven.plugin.pmd;
>>> +
>>> +/*
>>> + * 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.
>>> + */
>>> +
>>> +import java.util.ArrayList;
>>> +import java.util.List;
>>> +
>>> +/**
>>> + * Collector of warnings and failures.
>>> + *
>>> + * @author Robert Scholte
>>> + * @param <D>
>>> + * @since 2.7
>>> + */
>>> +public class ViolationDetails<D>
>>> +{
>>> + private List<D> warningDetails = new ArrayList<D>();
>>> +
>>> + private List<D> failureDetails = new ArrayList<D>();
>>> +
>>> + /**
>>> + * @return the warningDetails, never {@code null}
>>> + */
>>> + public List<D> getWarningDetails()
>>> + {
>>> + return warningDetails;
>>> + }
>>> +
>>> + /**
>>> + * @param warningDetails the warningDetails to set
>>> + */
>>> + public void setWarningDetails( List<D> warningDetails )
>>> + {
>>> + this.warningDetails = warningDetails;
>>> + }
>>> +
>>> + /**
>>> + * @return the failureDetails, never {@code null}
>>> + */
>>> + public List<D> getFailureDetails()
>>> + {
>>> + return failureDetails;
>>> + }
>>> +
>>> + /**
>>> + * @param failureDetails the failureDetails to set
>>> + */
>>> + public void setFailureDetails( List<D> failureDetails )
>>> + {
>>> + this.failureDetails = failureDetails;
>>> + }
>>> +}
>>> \ No newline at end of file
>>>
>>> Added: maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/cpd.mdo
>>> URL:
>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/cpd.mdo?rev=1233066&view=auto
>>> ==============================================================================
>>> --- maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/cpd.mdo (added)
>>> +++ maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/cpd.mdo Wed Jan
>>> 18 20:59:15 2012
>>> @@ -0,0 +1,70 @@
>>> +<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>
>>> + <name>codefragment</name>
>>> + <type>String</type>
>>> + </field>
>>> + </fields>
>>> + </class>
>>> + <class xml.tagName="file">
>>> + <name>CpdFile</name>
>>> + <fields>
>>> + <field xml.attribute="true">
>>> + <name>line</name>
>>> + <type>int</type>
>>> + </field>
>>> + <field xml.attribute="true">
>>> + <name>path</name>
>>> + <type>String</type>
>>> + </field>
>>> + </fields>
>>> + </class>
>>> + </classes>
>>> +</model>
>>> \ No newline at end of file
>>>
>>> Added: maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/pmd.mdo
>>> URL:
>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/pmd.mdo?rev=1233066&view=auto
>>> ==============================================================================
>>> --- maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/pmd.mdo (added)
>>> +++ maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/pmd.mdo Wed Jan
>>> 18 20:59:15 2012
>>> @@ -0,0 +1,109 @@
>>> +<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">
>>> + <type>Violation</type>
>>> + <multiplicity>*</multiplicity>
>>> + </association>
>>> + </field>
>>> + </fields>
>>> + </class>
>>> + <class>
>>> + <name>Violation</name>
>>> + <fields>
>>> + <field xml.attribute="true">
>>> + <name>beginline</name>
>>> + <type>int</type>
>>> + </field>
>>> + <field xml.tagName="class" xml.attribute="true">
>>> + <name>violationClass</name>
>>> + <type>String</type>
>>> + </field>
>>> + <field xml.tagName="package" xml.attribute="true">
>>> + <name>violationPackage</name>
>>> + <type>String</type>
>>> + </field>
>>> + <field xml.attribute="true">
>>> + <name>rule</name>
>>> + <type>String</type>
>>> + </field>
>>> + <field xml.attribute="true">
>>> + <name>priority</name>
>>> + <type>int</type>
>>> + </field>
>>> + <field xml.content="true">
>>> + <name>text</name>
>>> + <type>String</type>
>>> + </field>
>>> + </fields>
>>> + <codeSegments>
>>> + <codeSegment>
>>> + <code>
>>> + <![CDATA[
>>> + private String fileName;
>>> +
>>> + public void setFileName( String fileName )
>>> + {
>>> + this.fileName = fileName;
>>> + }
>>> +
>>> + public String getFileName()
>>> + {
>>> + return fileName;
>>> + }
>>> + ]]>
>>> + </code>
>>> + </codeSegment>
>>> + </codeSegments>
>>> + </class>
>>> + </classes>
>>> +
>>> +
>>> +
>>> +</model>
>>> \ No newline at end of file
>>>
>>>
>>>
>>
>>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org
Re: svn commit: r1233066 - in /maven/plugins/trunk/maven-pmd-plugin:
./ src/it/mpmd-138/ src/it/mpmd-138/mod-1/ src/it/mpmd-138/mod-1/src/ src/it/mpmd-138/mod-1/src/main/
src/it/mpmd-138/mod-1/src/main/config/ src/it/mpmd-138/mod-1/src/main/config/pmd/
src...
Posted by Dennis Lundberg <de...@apache.org>.
Some more data on my setup:
On Ubuntu the IT fails with Maven 2.2.1, but it works with Maven 3.0.3
On Windows 7 the IT fails with both Maven 2.2.1 and Maven 3.0.3
On 2012-01-25 23:06, Dennis Lundberg wrote:
> Hi Robert,
>
> The new IT mpmd-138 is failing for me on both Windows 7 and Ubuntu:
>
> [INFO] Building: mpmd-138\pom.xml
> [INFO] ..FAILED (10.9 s)
> [INFO] The post-build script did not succeed. Expression: (1 ==
> buildLog.getText().count([INFO] PMD Failure: test.MyClass:8
> Rule:EmptyStatementNotInLoop Priority:3 An empty statement (semicolon)
> not part of a loop.))
>
> Can you have a look at it?
>
> On 2012-01-18 21:59, rfscholte@apache.org wrote:
>> Author: rfscholte
>> Date: Wed Jan 18 20:59:15 2012
>> New Revision: 1233066
>>
>> URL: http://svn.apache.org/viewvc?rev=1233066&view=rev
>> Log:
>> Fix MPMD-138: Use modello to generate models to read pmd and cpd files
>>
>> Added:
>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/
>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/invoker.properties
>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/
>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/pom.xml
>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/
>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/
>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/
>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/
>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/latin-1.xml
>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/utf-8.xml
>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/java/
>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/java/test/
>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/java/test/MyClass.java
>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/
>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/pom.xml
>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/rulesets/
>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/rulesets/basic.xml
>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/src/
>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/src/main/
>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/src/main/java/
>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/src/main/java/test/
>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/src/main/java/test/MyClass.java
>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/
>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/pom.xml
>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/
>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/
>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/
>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/
>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/MyClass.java
>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/sub/
>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/sub/MyClass.java
>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/
>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/pom.xml
>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/
>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/
>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/
>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/
>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/MyClass.java
>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/OtherClass.java
>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/sub/
>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/sub/MyClass.java
>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/pom.xml
>> maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/verify.groovy
>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/ViolationDetails.java
>> maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/
>> maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/cpd.mdo
>> maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/pmd.mdo
>> Modified:
>> maven/plugins/trunk/maven-pmd-plugin/pom.xml
>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/AbstractPmdViolationCheckMojo.java
>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/CpdViolationCheckMojo.java
>> maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdViolationCheckMojo.java
>>
>> Modified: maven/plugins/trunk/maven-pmd-plugin/pom.xml
>> URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/pom.xml?rev=1233066&r1=1233065&r2=1233066&view=diff
>> ==============================================================================
>> --- maven/plugins/trunk/maven-pmd-plugin/pom.xml (original)
>> +++ maven/plugins/trunk/maven-pmd-plugin/pom.xml Wed Jan 18 20:59:15 2012
>> @@ -68,6 +68,33 @@ under the License.
>> <sitePluginVersion>3.0</sitePluginVersion>
>> </properties>
>>
>> + <build>
>> + <plugins>
>> + <plugin>
>> + <groupId>org.codehaus.modello</groupId>
>> + <artifactId>modello-maven-plugin</artifactId>
>> + <version>1.4.1</version>
>> + <configuration>
>> + <useJava5>true</useJava5>
>> + <models>
>> + <model>src/main/mdo/pmd.mdo</model>
>> + <model>src/main/mdo/cpd.mdo</model>
>> + </models>
>> + <version>1.0</version>
>> + </configuration>
>> + <executions>
>> + <execution>
>> + <phase>generate-sources</phase>
>> + <goals>
>> + <goal>java</goal>
>> + <goal>xpp3-reader</goal>
>> + </goals>
>> + </execution>
>> + </executions>
>> + </plugin>
>> + </plugins>
>> + </build>
>> +
>> <dependencies>
>> <!-- maven -->
>> <dependency>
>> @@ -124,7 +151,7 @@ under the License.
>> <dependency>
>> <groupId>org.codehaus.plexus</groupId>
>> <artifactId>plexus-utils</artifactId>
>> - <version>2.0.5</version>
>> + <version>2.1</version>
>> </dependency>
>>
>> <!-- pmd -->
>>
>> Added: maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/invoker.properties
>> URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/invoker.properties?rev=1233066&view=auto
>> ==============================================================================
>> --- maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/invoker.properties (added)
>> +++ maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/invoker.properties Wed Jan 18 20:59:15 2012
>> @@ -0,0 +1 @@
>> +invoker.goals = clean verify
>> \ No newline at end of file
>>
>> Added: maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/pom.xml
>> URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/pom.xml?rev=1233066&view=auto
>> ==============================================================================
>> --- maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/pom.xml (added)
>> +++ maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/pom.xml Wed Jan 18 20:59:15 2012
>> @@ -0,0 +1,39 @@
>> +<?xml version="1.0" encoding="UTF-8"?>
>> +
>> +<!--
>> +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.
>> +-->
>> +
>> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
>> + <modelVersion>4.0.0</modelVersion>
>> +
>> + <parent>
>> + <groupId>org.apache.maven.plugin.pmd.its</groupId>
>> + <artifactId>mpmd-138-parent</artifactId>
>> + <version>1.0-SNAPSHOT</version>
>> + </parent>
>> +
>> + <artifactId>mpmd-138-mod-1</artifactId>
>> +
>> + <name>Module 1</name>
>> +
>> + <properties>
>> + <project.reporting.outputEncoding>ISO-8859-1</project.reporting.outputEncoding>
>> + </properties>
>> +
>> +</project>
>> \ No newline at end of file
>>
>> Added: maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/latin-1.xml
>> URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/latin-1.xml?rev=1233066&view=auto
>> ==============================================================================
>> --- maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/latin-1.xml (added)
>> +++ maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/latin-1.xml Wed Jan 18 20:59:15 2012
>> @@ -0,0 +1,12 @@
>> +<?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>
>>
>> Added: maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/utf-8.xml
>> URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/utf-8.xml?rev=1233066&view=auto
>> ==============================================================================
>> --- maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/utf-8.xml (added)
>> +++ maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/config/pmd/utf-8.xml Wed Jan 18 20:59:15 2012
>> @@ -0,0 +1,11 @@
>> +<?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>
>>
>> Added: maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/java/test/MyClass.java
>> URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/java/test/MyClass.java?rev=1233066&view=auto
>> ==============================================================================
>> --- maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/java/test/MyClass.java (added)
>> +++ maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-1/src/main/java/test/MyClass.java Wed Jan 18 20:59:15 2012
>> @@ -0,0 +1,12 @@
>> +package test;
>> +
>> +public class MyClass
>> +{
>> +
>> + public static void main( String[] args )
>> + {
>> + ;
>> + return;
>> + }
>> +
>> +}
>>
>> Added: maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/pom.xml
>> URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/pom.xml?rev=1233066&view=auto
>> ==============================================================================
>> --- maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/pom.xml (added)
>> +++ maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/pom.xml Wed Jan 18 20:59:15 2012
>> @@ -0,0 +1,35 @@
>> +<?xml version="1.0" encoding="UTF-8"?>
>> +
>> +<!--
>> +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.
>> +-->
>> +
>> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
>> + <modelVersion>4.0.0</modelVersion>
>> +
>> + <parent>
>> + <groupId>org.apache.maven.plugin.pmd.its</groupId>
>> + <artifactId>mpmd-138-parent</artifactId>
>> + <version>1.0-SNAPSHOT</version>
>> + </parent>
>> +
>> + <artifactId>mpmd-138-mod-2</artifactId>
>> +
>> + <name>Module 2</name>
>> +
>> +</project>
>> \ No newline at end of file
>>
>> Added: maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/rulesets/basic.xml
>> URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/rulesets/basic.xml?rev=1233066&view=auto
>> ==============================================================================
>> --- maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/rulesets/basic.xml (added)
>> +++ maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/rulesets/basic.xml Wed Jan 18 20:59:15 2012
>> @@ -0,0 +1,11 @@
>> +<?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>
>>
>> Added: maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/src/main/java/test/MyClass.java
>> URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/src/main/java/test/MyClass.java?rev=1233066&view=auto
>> ==============================================================================
>> --- maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/src/main/java/test/MyClass.java (added)
>> +++ maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-2/src/main/java/test/MyClass.java Wed Jan 18 20:59:15 2012
>> @@ -0,0 +1,12 @@
>> +package test;
>> +
>> +public class MyClass
>> +{
>> +
>> + public static void main( String[] args )
>> + {
>> + ;
>> + return;
>> + }
>> +
>> +}
>>
>> Added: maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/pom.xml
>> URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/pom.xml?rev=1233066&view=auto
>> ==============================================================================
>> --- maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/pom.xml (added)
>> +++ maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/pom.xml Wed Jan 18 20:59:15 2012
>> @@ -0,0 +1,37 @@
>> +<?xml version="1.0" encoding="UTF-8"?>
>> +
>> +<!--
>> +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.
>> +-->
>> +
>> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
>> + <modelVersion>4.0.0</modelVersion>
>> +
>> + <parent>
>> + <groupId>org.apache.maven.plugin.pmd.its</groupId>
>> + <artifactId>mpmd-138-parent</artifactId>
>> + <version>1.0-SNAPSHOT</version>
>> + </parent>
>> +
>> + <artifactId>mpmd-138-mod-3</artifactId>
>> +
>> + <name>Module 3</name>
>> +
>> + <description>Test 3 classes with copy-paste block</description>
>> +
>> +</project>
>> \ No newline at end of file
>>
>> Added: maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/MyClass.java
>> URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/MyClass.java?rev=1233066&view=auto
>> ==============================================================================
>> --- maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/MyClass.java (added)
>> +++ maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/MyClass.java Wed Jan 18 20:59:15 2012
>> @@ -0,0 +1,39 @@
>> +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 );
>> + }
>> + }
>> +
>> +}
>>
>> Added: maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/sub/MyClass.java
>> URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/sub/MyClass.java?rev=1233066&view=auto
>> ==============================================================================
>> --- maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/sub/MyClass.java (added)
>> +++ maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-3/src/main/java/test/sub/MyClass.java Wed Jan 18 20:59:15 2012
>> @@ -0,0 +1,40 @@
>> +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 );
>> + }
>> + }
>> +}
>> \ No newline at end of file
>>
>> Added: maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/pom.xml
>> URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/pom.xml?rev=1233066&view=auto
>> ==============================================================================
>> --- maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/pom.xml (added)
>> +++ maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/pom.xml Wed Jan 18 20:59:15 2012
>> @@ -0,0 +1,37 @@
>> +<?xml version="1.0" encoding="UTF-8"?>
>> +
>> +<!--
>> +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.
>> +-->
>> +
>> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
>> + <modelVersion>4.0.0</modelVersion>
>> +
>> + <parent>
>> + <groupId>org.apache.maven.plugin.pmd.its</groupId>
>> + <artifactId>mpmd-138-parent</artifactId>
>> + <version>1.0-SNAPSHOT</version>
>> + </parent>
>> +
>> + <artifactId>mpmd-138-mod-4</artifactId>
>> +
>> + <name>Module 4</name>
>> +
>> + <description>Test 3 classes with copy-paste block</description>
>> +
>> +</project>
>> \ No newline at end of file
>>
>> Added: maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/MyClass.java
>> URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/MyClass.java?rev=1233066&view=auto
>> ==============================================================================
>> --- maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/MyClass.java (added)
>> +++ maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/MyClass.java Wed Jan 18 20:59:15 2012
>> @@ -0,0 +1,37 @@
>> +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 );
>> + }
>> + }
>> +}
>> \ No newline at end of file
>>
>> Added: maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/OtherClass.java
>> URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/OtherClass.java?rev=1233066&view=auto
>> ==============================================================================
>> --- maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/OtherClass.java (added)
>> +++ maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/OtherClass.java Wed Jan 18 20:59:15 2012
>> @@ -0,0 +1,40 @@
>> +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 );
>> + }
>> + }
>> +}
>> \ No newline at end of file
>>
>> Added: maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/sub/MyClass.java
>> URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/sub/MyClass.java?rev=1233066&view=auto
>> ==============================================================================
>> --- maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/sub/MyClass.java (added)
>> +++ maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/mod-4/src/main/java/test/sub/MyClass.java Wed Jan 18 20:59:15 2012
>> @@ -0,0 +1,36 @@
>> +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 );
>> + }
>> + }
>> +}
>> \ No newline at end of file
>>
>> Added: maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/pom.xml
>> URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/pom.xml?rev=1233066&view=auto
>> ==============================================================================
>> --- maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/pom.xml (added)
>> +++ maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/pom.xml Wed Jan 18 20:59:15 2012
>> @@ -0,0 +1,67 @@
>> +<?xml version="1.0" encoding="UTF-8"?>
>> +
>> +<!--
>> +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.
>> +-->
>> +
>> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
>> + <modelVersion>4.0.0</modelVersion>
>> +
>> + <groupId>org.apache.maven.plugin.pmd.its</groupId>
>> + <artifactId>mpmd-138-parent</artifactId>
>> + <version>1.0-SNAPSHOT</version>
>> + <packaging>pom</packaging>
>> +
>> + <name>Parent</name>
>> + <description>
>> + Test proper report generation in a multi-module build.
>> + </description>
>> +
>> + <modules>
>> + <module>mod-1</module>
>> + <module>mod-2</module>
>> + <module>mod-3</module>
>> + <module>mod-4</module>
>> + </modules>
>> +
>> + <properties>
>> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
>> + </properties>
>> +
>> + <build>
>> + <plugins>
>> + <plugin>
>> + <artifactId>maven-pmd-plugin</artifactId>
>> + <version>@project.version@</version>
>> + <executions>
>> + <execution>
>> + <goals>
>> + <goal>check</goal>
>> + <goal>cpd-check</goal>
>> + </goals>
>> + </execution>
>> + </executions>
>> + <configuration>
>> + <verbose>true</verbose>
>> + <minimumTokens>25</minimumTokens>
>> + <failOnViolation>false</failOnViolation> <!-- force execution of both goals, will be checked with verify-script -->
>> + </configuration>
>> + </plugin>
>> + </plugins>
>> + </build>
>> +</project>
>> \ No newline at end of file
>>
>> Added: maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/verify.groovy
>> URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/verify.groovy?rev=1233066&view=auto
>> ==============================================================================
>> --- maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/verify.groovy (added)
>> +++ maven/plugins/trunk/maven-pmd-plugin/src/it/mpmd-138/verify.groovy Wed Jan 18 20:59:15 2012
>> @@ -0,0 +1,37 @@
>> +
>> +/*
>> + * 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.
>> + */
>> +
>> +File buildLog = new File( basedir, 'build.log' )
>> +assert buildLog.exists()
>> +
>> +// Module 1
>> +assert 1 == buildLog.getText().count('[INFO] PMD Failure: test.MyClass:8 Rule:EmptyStatementNotInLoop Priority:3 An empty statement (semicolon) not part of a loop.')
>> +assert 1 == buildLog.getText().count('[INFO] PMD Failure: test.MyClass:9 Rule:UnnecessaryReturn Priority:3 Avoid unnecessary return statements.')
>> +assert 1 == buildLog.getText().count('[INFO] You have 2 PMD violations. For more details see:')
>> +
>> +// Module 2
>> +assert 1 == buildLog.getText().count('[INFO] PMD Failure: test.MyClass:8 Rule:EmptyStatementNotInLoop Priority:3 TEST: LOCAL-FILE-RULESET.')
>> +assert 1 == buildLog.getText().count('[INFO] You have 1 PMD violation. For more details see:')
>> +
>> +// Module 3
>> +assert 1 == buildLog.getText().count('[INFO] You have 1 CPD duplication. For more details see:')
>> +
>> +// Module 4
>> +assert 1 == buildLog.getText().count('[INFO] You have 2 CPD duplications. For more details see:')
>> \ No newline at end of file
>>
>> Modified: maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/AbstractPmdViolationCheckMojo.java
>> URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/AbstractPmdViolationCheckMojo.java?rev=1233066&r1=1233065&r2=1233066&view=diff
>> ==============================================================================
>> --- maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/AbstractPmdViolationCheckMojo.java (original)
>> +++ maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/AbstractPmdViolationCheckMojo.java Wed Jan 18 20:59:15 2012
>> @@ -23,19 +23,13 @@ import java.io.File;
>> import java.io.IOException;
>> import java.io.Reader;
>> import java.util.ArrayList;
>> -import java.util.HashMap;
>> import java.util.List;
>> -import java.util.Map;
>>
>> import org.apache.maven.plugin.AbstractMojo;
>> import org.apache.maven.plugin.MojoExecutionException;
>> import org.apache.maven.plugin.MojoFailureException;
>> import org.apache.maven.project.MavenProject;
>> import org.codehaus.plexus.util.IOUtil;
>> -import org.codehaus.plexus.util.ReaderFactory;
>> -import org.codehaus.plexus.util.StringUtils;
>> -import org.codehaus.plexus.util.xml.pull.MXParser;
>> -import org.codehaus.plexus.util.xml.pull.XmlPullParser;
>> import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
>>
>> /**
>> @@ -44,13 +38,9 @@ import org.codehaus.plexus.util.xml.pull
>> * @author <a href="mailto:brett@apache.org">Brett Porter</a>
>> * @version $Id$
>> */
>> -public abstract class AbstractPmdViolationCheckMojo
>> +public abstract class AbstractPmdViolationCheckMojo<D>
>> extends AbstractMojo
>> {
>> - private static final Boolean FAILURES_KEY = Boolean.TRUE;
>> -
>> - private static final Boolean WARNINGS_KEY = Boolean.FALSE;
>> -
>> /**
>> * The location of the XML report to check, as generated by the PMD report.
>> *
>> @@ -117,14 +107,10 @@ public abstract class AbstractPmdViolati
>> Reader reader = null;
>> try
>> {
>> - XmlPullParser xpp = new MXParser();
>> - reader = ReaderFactory.newXmlReader( outputFile );
>> - xpp.setInput( reader );
>> -
>> - Map<Boolean, List<Map<String, String>>> violations = getViolations( xpp, tagName, failurePriority );
>> + ViolationDetails<D> violations = getViolations( outputFile, failurePriority );
>>
>> - List<Map<String, String>> failures = violations.get( FAILURES_KEY );
>> - List<Map<String, String>> warnings = violations.get( WARNINGS_KEY );
>> + List<D> failures = violations.getFailureDetails();
>> + List<D> warnings = violations.getWarningDetails();
>>
>> if ( verbose )
>> {
>> @@ -178,86 +164,36 @@ public abstract class AbstractPmdViolati
>> * @throws XmlPullParserException
>> * @throws IOException
>> */
>> - private Map<Boolean, List<Map<String, String>>> getViolations( XmlPullParser xpp, String tagName, int failurePriority )
>> + private ViolationDetails<D> getViolations( File analysisFile, int failurePriority )
>> throws XmlPullParserException, IOException
>> {
>> - int eventType = xpp.getEventType();
>> -
>> - List<Map<String, String>> failures = new ArrayList<Map<String, String>>();
>> - List<Map<String, String>> warnings = new ArrayList<Map<String, String>>();
>> -
>> - String fullpath = null;
>> + List<D> failures = new ArrayList<D>();
>> + List<D> warnings = new ArrayList<D>();
>>
>> - while ( eventType != XmlPullParser.END_DOCUMENT )
>> + List<D> violations = getErrorDetails( analysisFile );
>> +
>> + for( D violation : violations )
>> {
>> - if ( eventType == XmlPullParser.START_TAG && "file".equals( xpp.getName() ) )
>> + int priority = getPriority( violation );
>> + if ( priority <= failurePriority )
>> {
>> - fullpath = xpp.getAttributeValue( "", "name" );
>> + failures.add( violation );
>> }
>> - if ( eventType == XmlPullParser.START_TAG && tagName.equals( xpp.getName() ) )
>> - {
>> - Map<String, String> details = getErrorDetails( xpp );
>> -
>> - if ( fullpath != null )
>> - {
>> - details.put( "filename", getFilename( fullpath, details.get( "package" ) ) );
>> - }
>> -
>> - try
>> - {
>> - int priority = Integer.parseInt( details.get( "priority" ) );
>> - if ( priority <= failurePriority )
>> - {
>> - failures.add( details );
>> - }
>> - else
>> - {
>> - warnings.add( details );
>> - }
>> - }
>> - catch ( NumberFormatException e )
>> - {
>> - // I don't know what priority this is. Treat it like a
>> - // failure
>> - failures.add( details );
>> - }
>> - catch ( NullPointerException e )
>> - {
>> - // I don't know what priority this is. Treat it like a
>> - // failure
>> - failures.add( details );
>> - }
>> -
>> - }
>> -
>> - eventType = xpp.next();
>> - }
>> -
>> - Map<Boolean, List<Map<String, String>>> map = new HashMap<Boolean, List<Map<String, String>>>( 2 );
>> - map.put( FAILURES_KEY, failures );
>> - map.put( WARNINGS_KEY, warnings );
>> - return map;
>> - }
>> -
>> - private String getFilename( String fullpath, String pkg )
>> - {
>> - int index = fullpath.lastIndexOf( File.separatorChar );
>> -
>> - while ( StringUtils.isNotEmpty( pkg ) )
>> - {
>> - index = fullpath.substring( 0, index ).lastIndexOf( File.separatorChar );
>> -
>> - int dot = pkg.indexOf( '.' );
>> -
>> - if ( dot < 0 )
>> + else
>> {
>> - break;
>> + warnings.add( violation );
>> }
>> - pkg = pkg.substring( dot + 1 );
>> }
>> -
>> - return fullpath.substring( index + 1 );
>> +
>> + ViolationDetails<D> details = newViolationDetailsInstance();
>> + details.setFailureDetails( failures );
>> + details.setWarningDetails( warnings );
>> + return details;
>> }
>> +
>> + protected abstract int getPriority( D errorDetail );
>> +
>> + protected abstract ViolationDetails<D> newViolationDetailsInstance();
>>
>> /**
>> * Prints the warnings and failures
>> @@ -267,14 +203,14 @@ public abstract class AbstractPmdViolati
>> * @param warnings
>> * list of warnings
>> */
>> - protected void printErrors( List<Map<String, String>> failures, List<Map<String, String>> warnings )
>> + protected void printErrors( List<D> failures, List<D> warnings )
>> {
>> - for ( Map<String, String> warning : warnings )
>> + for ( D warning : warnings )
>> {
>> printError( warning, "Warning" );
>> }
>>
>> - for ( Map<String, String> failure : failures )
>> + for ( D failure : failures )
>> {
>> printError( failure, "Failure" );
>> }
>> @@ -322,7 +258,7 @@ public abstract class AbstractPmdViolati
>> *
>> * @param item
>> */
>> - protected abstract void printError( Map<String, String> item, String severity );
>> + protected abstract void printError( D item, String severity );
>>
>> /**
>> * Gets the attributes and text for the violation tag and puts them in a
>> @@ -332,6 +268,6 @@ public abstract class AbstractPmdViolati
>> * @throws XmlPullParserException
>> * @throws IOException
>> */
>> - protected abstract Map<String, String> getErrorDetails( XmlPullParser xpp )
>> + protected abstract List<D> getErrorDetails( File analisysFile )
>> throws XmlPullParserException, IOException;
>> }
>> \ No newline at end of file
>>
>> Modified: maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/CpdViolationCheckMojo.java
>> URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/CpdViolationCheckMojo.java?rev=1233066&r1=1233065&r2=1233066&view=diff
>> ==============================================================================
>> --- maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/CpdViolationCheckMojo.java (original)
>> +++ maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/CpdViolationCheckMojo.java Wed Jan 18 20:59:15 2012
>> @@ -19,13 +19,17 @@ package org.apache.maven.plugin.pmd;
>> * under the License.
>> */
>>
>> +import java.io.File;
>> +import java.io.FileReader;
>> import java.io.IOException;
>> -import java.util.HashMap;
>> -import java.util.Map;
>> +import java.util.List;
>>
>> import org.apache.maven.plugin.MojoExecutionException;
>> import org.apache.maven.plugin.MojoFailureException;
>> -import org.codehaus.plexus.util.xml.pull.XmlPullParser;
>> +import org.apache.maven.plugin.pmd.model.CpdErrorDetail;
>> +import org.apache.maven.plugin.pmd.model.CpdFile;
>> +import org.apache.maven.plugin.pmd.model.Duplication;
>> +import org.apache.maven.plugin.pmd.model.io.xpp3.CpdXpp3Reader;
>> import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
>>
>> /**
>> @@ -39,7 +43,7 @@ import org.codehaus.plexus.util.xml.pull
>> * @threadSafe
>> */
>> public class CpdViolationCheckMojo
>> - extends AbstractPmdViolationCheckMojo
>> + extends AbstractPmdViolationCheckMojo<Duplication>
>> {
>>
>> /**
>> @@ -61,9 +65,9 @@ public class CpdViolationCheckMojo
>> }
>>
>> /** {@inheritDoc} */
>> - protected void printError( Map item, String severity )
>> + protected void printError( Duplication item, String severity )
>> {
>> - String lines = (String) item.get( "lines" );
>> + int lines = item.getLines();
>>
>>
>> StringBuffer buff = new StringBuffer( 100 );
>> @@ -71,68 +75,38 @@ public class CpdViolationCheckMojo
>> buff.append( lines ).append( " lines of duplicated code at locations:" );
>> this.getLog().info( buff.toString() );
>>
>> - buff.setLength( 0 );
>> - buff.append( " " );
>> - Map file = (Map) item.get( "file" );
>> - buff.append( file.get( "path" ) );
>> - buff.append( " line " ).append( file.get( "line" ) );
>> - this.getLog().info( buff.toString() );
>> -
>> - buff.setLength( 0 );
>> - buff.append( " " );
>> - file = (Map) item.get( "file1" );
>> - buff.append( file.get( "path" ) );
>> - buff.append( " line " ).append( file.get( "line" ) );
>> - this.getLog().info( buff.toString() );
>> +
>> + for( CpdFile file : item.getFiles() )
>> + {
>> + buff.setLength( 0 );
>> + buff.append( " " );
>> + buff.append( file.getPath() );
>> + buff.append( " line " ).append( file.getLine() );
>> + this.getLog().info( buff.toString() );
>> + }
>>
>> - Map codefrag = (Map) item.get( "codefragment" );
>> - String codefragstr = (String) codefrag.get( "text" );
>> this.getLog().debug( "CPD " + severity + ": Code Fragment " );
>> - this.getLog().debug( codefragstr );
>> + this.getLog().debug( item.getCodefragment() );
>> }
>>
>> /** {@inheritDoc} */
>> - protected Map getErrorDetails( XmlPullParser xpp )
>> + protected List<Duplication> getErrorDetails( File cpdFile )
>> throws XmlPullParserException, IOException
>> {
>> - int index = 0;
>> - int attributeCount = 0;
>> - HashMap msgs = new HashMap();
>> -
>> - attributeCount = xpp.getAttributeCount();
>> - while ( index < attributeCount )
>> - {
>> - msgs.put( xpp.getAttributeName( index ), xpp.getAttributeValue( index ) );
>> -
>> - index++;
>> - }
>> -
>> - int tp = xpp.next();
>> - while ( tp != XmlPullParser.END_TAG )
>> - {
>> - // get the tag's text
>> - switch ( tp )
>> - {
>> - case XmlPullParser.TEXT:
>> - msgs.put( "text", xpp.getText().trim() );
>> - break;
>> - case XmlPullParser.START_TAG:
>> - String nm = xpp.getName();
>> - if ( msgs.containsKey( nm ) )
>> - {
>> - int cnt = 1;
>> - while ( msgs.containsKey( nm + cnt ) )
>> - {
>> - ++cnt;
>> - }
>> - nm = nm + cnt;
>> - }
>> - msgs.put( nm, getErrorDetails( xpp ) );
>> - break;
>> - default:
>> - }
>> - tp = xpp.next();
>> - }
>> - return msgs;
>> + CpdXpp3Reader reader = new CpdXpp3Reader();
>> + CpdErrorDetail details = reader.read( new FileReader( cpdFile ), false );
>> + return details.getDuplications();
>> + }
>> +
>> + @Override
>> + protected int getPriority( Duplication errorDetail )
>> + {
>> + return 0;
>> + }
>> +
>> + @Override
>> + protected ViolationDetails<Duplication> newViolationDetailsInstance()
>> + {
>> + return new ViolationDetails<Duplication>();
>> }
>> -}
>> +}
>> \ No newline at end of file
>>
>> Modified: maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdViolationCheckMojo.java
>> URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdViolationCheckMojo.java?rev=1233066&r1=1233065&r2=1233066&view=diff
>> ==============================================================================
>> --- maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdViolationCheckMojo.java (original)
>> +++ maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdViolationCheckMojo.java Wed Jan 18 20:59:15 2012
>> @@ -19,12 +19,19 @@ package org.apache.maven.plugin.pmd;
>> * under the License.
>> */
>>
>> +import java.io.File;
>> +import java.io.FileReader;
>> import java.io.IOException;
>> -import java.util.HashMap;
>> -import java.util.Map;
>> +import java.util.ArrayList;
>> +import java.util.List;
>>
>> import org.apache.maven.plugin.MojoExecutionException;
>> import org.apache.maven.plugin.MojoFailureException;
>> +import org.apache.maven.plugin.pmd.model.PmdErrorDetail;
>> +import org.apache.maven.plugin.pmd.model.PmdFile;
>> +import org.apache.maven.plugin.pmd.model.Violation;
>> +import org.apache.maven.plugin.pmd.model.io.xpp3.PmdXpp3Reader;
>> +import org.codehaus.plexus.util.StringUtils;
>> import org.codehaus.plexus.util.xml.pull.XmlPullParser;
>> import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
>>
>> @@ -39,7 +46,7 @@ import org.codehaus.plexus.util.xml.pull
>> * @threadSafe
>> */
>> public class PmdViolationCheckMojo
>> - extends AbstractPmdViolationCheckMojo
>> + extends AbstractPmdViolationCheckMojo<Violation>
>> {
>> /**
>> * What priority level to fail the build on. Failures at or above this level
>> @@ -71,55 +78,83 @@ public class PmdViolationCheckMojo
>> }
>>
>> /** {@inheritDoc} */
>> - protected void printError( Map<String, String> item, String severity )
>> + protected void printError( Violation item, String severity )
>> {
>>
>> StringBuffer buff = new StringBuffer( 100 );
>> buff.append( "PMD " + severity + ": " );
>> - if ( item.containsKey( "class" ) )
>> + if ( item.getViolationClass() != null )
>> {
>> - if ( item.containsKey( "package" ) )
>> + if ( item.getViolationPackage() != null )
>> {
>> - buff.append( item.get( "package" ) );
>> + buff.append( item.getViolationPackage() );
>> buff.append( "." );
>> }
>> - buff.append( item.get( "class" ) );
>> + buff.append( item.getViolationClass() );
>> }
>> else
>> {
>> - buff.append( item.get( "filename" ) );
>> + buff.append( item.getFileName() );
>> }
>> buff.append( ":" );
>> - buff.append( item.get( "beginline" ) );
>> - buff.append( " Rule:" ).append( item.get( "rule" ) );
>> - buff.append( " Priority:" ).append( item.get( "priority" ) );
>> - buff.append( " " ).append( item.get( "text" ) ).append( "." );
>> + buff.append( item.getBeginline() );
>> + buff.append( " Rule:" ).append( item.getRule() );
>> + buff.append( " Priority:" ).append( item.getPriority() );
>> + buff.append( " " ).append( item.getText() ).append( "." );
>>
>> this.getLog().info( buff.toString() );
>> }
>> -
>> - /** {@inheritDoc} */
>> - protected Map<String, String> getErrorDetails( XmlPullParser xpp )
>> +
>> + @Override
>> + protected List<Violation> getErrorDetails( File pmdFile )
>> throws XmlPullParserException, IOException
>> {
>> - int index = 0;
>> - int attributeCount = 0;
>> - Map<String, String> msgs = new HashMap<String, String>();
>> + PmdXpp3Reader reader = new PmdXpp3Reader();
>> + PmdErrorDetail details = reader.read( new FileReader( pmdFile ), false );
>>
>> - attributeCount = xpp.getAttributeCount();
>> - while ( index < attributeCount )
>> + List<Violation> violations = new ArrayList<Violation>();
>> + for( PmdFile file : details.getFiles() )
>> {
>> -
>> - msgs.put( xpp.getAttributeName( index ), xpp.getAttributeValue( index ) );
>> -
>> - index++;
>> + String fullPath = file.getName();
>> +
>> + for ( Violation violation : file.getViolations() )
>> + {
>> + violation.setFileName( getFilename( fullPath, violation.getViolationPackage() ) );
>> + violations.add( violation );
>> + }
>> }
>> + return violations;
>> + }
>> +
>> + @Override
>> + protected int getPriority( Violation errorDetail )
>> + {
>> + return errorDetail.getPriority();
>> + }
>> +
>> + @Override
>> + protected ViolationDetails<Violation> newViolationDetailsInstance()
>> + {
>> + return new ViolationDetails<Violation>();
>> + }
>> +
>> + private String getFilename( String fullpath, String pkg )
>> + {
>> + int index = fullpath.lastIndexOf( File.separatorChar );
>>
>> - // get the tag's text
>> - if ( xpp.next() == XmlPullParser.TEXT )
>> + while ( StringUtils.isNotEmpty( pkg ) )
>> {
>> - msgs.put( "text", xpp.getText().trim() );
>> + index = fullpath.substring( 0, index ).lastIndexOf( File.separatorChar );
>> +
>> + int dot = pkg.indexOf( '.' );
>> +
>> + if ( dot < 0 )
>> + {
>> + break;
>> + }
>> + pkg = pkg.substring( dot + 1 );
>> }
>> - return msgs;
>> +
>> + return fullpath.substring( index + 1 );
>> }
>> }
>> \ No newline at end of file
>>
>> Added: maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/ViolationDetails.java
>> URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/ViolationDetails.java?rev=1233066&view=auto
>> ==============================================================================
>> --- maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/ViolationDetails.java (added)
>> +++ maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/ViolationDetails.java Wed Jan 18 20:59:15 2012
>> @@ -0,0 +1,69 @@
>> +package org.apache.maven.plugin.pmd;
>> +
>> +/*
>> + * 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.
>> + */
>> +
>> +import java.util.ArrayList;
>> +import java.util.List;
>> +
>> +/**
>> + * Collector of warnings and failures.
>> + *
>> + * @author Robert Scholte
>> + * @param <D>
>> + * @since 2.7
>> + */
>> +public class ViolationDetails<D>
>> +{
>> + private List<D> warningDetails = new ArrayList<D>();
>> +
>> + private List<D> failureDetails = new ArrayList<D>();
>> +
>> + /**
>> + * @return the warningDetails, never {@code null}
>> + */
>> + public List<D> getWarningDetails()
>> + {
>> + return warningDetails;
>> + }
>> +
>> + /**
>> + * @param warningDetails the warningDetails to set
>> + */
>> + public void setWarningDetails( List<D> warningDetails )
>> + {
>> + this.warningDetails = warningDetails;
>> + }
>> +
>> + /**
>> + * @return the failureDetails, never {@code null}
>> + */
>> + public List<D> getFailureDetails()
>> + {
>> + return failureDetails;
>> + }
>> +
>> + /**
>> + * @param failureDetails the failureDetails to set
>> + */
>> + public void setFailureDetails( List<D> failureDetails )
>> + {
>> + this.failureDetails = failureDetails;
>> + }
>> +}
>> \ No newline at end of file
>>
>> Added: maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/cpd.mdo
>> URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/cpd.mdo?rev=1233066&view=auto
>> ==============================================================================
>> --- maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/cpd.mdo (added)
>> +++ maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/cpd.mdo Wed Jan 18 20:59:15 2012
>> @@ -0,0 +1,70 @@
>> +<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>
>> + <name>codefragment</name>
>> + <type>String</type>
>> + </field>
>> + </fields>
>> + </class>
>> + <class xml.tagName="file">
>> + <name>CpdFile</name>
>> + <fields>
>> + <field xml.attribute="true">
>> + <name>line</name>
>> + <type>int</type>
>> + </field>
>> + <field xml.attribute="true">
>> + <name>path</name>
>> + <type>String</type>
>> + </field>
>> + </fields>
>> + </class>
>> + </classes>
>> +</model>
>> \ No newline at end of file
>>
>> Added: maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/pmd.mdo
>> URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/pmd.mdo?rev=1233066&view=auto
>> ==============================================================================
>> --- maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/pmd.mdo (added)
>> +++ maven/plugins/trunk/maven-pmd-plugin/src/main/mdo/pmd.mdo Wed Jan 18 20:59:15 2012
>> @@ -0,0 +1,109 @@
>> +<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">
>> + <type>Violation</type>
>> + <multiplicity>*</multiplicity>
>> + </association>
>> + </field>
>> + </fields>
>> + </class>
>> + <class>
>> + <name>Violation</name>
>> + <fields>
>> + <field xml.attribute="true">
>> + <name>beginline</name>
>> + <type>int</type>
>> + </field>
>> + <field xml.tagName="class" xml.attribute="true">
>> + <name>violationClass</name>
>> + <type>String</type>
>> + </field>
>> + <field xml.tagName="package" xml.attribute="true">
>> + <name>violationPackage</name>
>> + <type>String</type>
>> + </field>
>> + <field xml.attribute="true">
>> + <name>rule</name>
>> + <type>String</type>
>> + </field>
>> + <field xml.attribute="true">
>> + <name>priority</name>
>> + <type>int</type>
>> + </field>
>> + <field xml.content="true">
>> + <name>text</name>
>> + <type>String</type>
>> + </field>
>> + </fields>
>> + <codeSegments>
>> + <codeSegment>
>> + <code>
>> + <![CDATA[
>> + private String fileName;
>> +
>> + public void setFileName( String fileName )
>> + {
>> + this.fileName = fileName;
>> + }
>> +
>> + public String getFileName()
>> + {
>> + return fileName;
>> + }
>> + ]]>
>> + </code>
>> + </codeSegment>
>> + </codeSegments>
>> + </class>
>> + </classes>
>> +
>> +
>> +
>> +</model>
>> \ No newline at end of file
>>
>>
>>
>
>
--
Dennis Lundberg
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org