|
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, [hidden email] 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:[hidden email]">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: [hidden email] For additional commands, e-mail: [hidden email] |
|
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, [hidden email] 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:[hidden email]">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: [hidden email] For additional commands, e-mail: [hidden email] |
|
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 <[hidden email]> 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, [hidden email] 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:[hidden email]">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: [hidden email] For additional commands, e-mail: [hidden email] |
|
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 <[hidden email]> > 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, [hidden email] 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:[hidden email]">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: [hidden email] > For additional commands, e-mail: [hidden email] > > -- Dennis Lundberg --------------------------------------------------------------------- To unsubscribe, e-mail: [hidden email] For additional commands, e-mail: [hidden email] |
|
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 <[hidden email]> 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 <[hidden email]> >> 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, [hidden email] 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:[hidden email]">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: [hidden email] >> For additional commands, e-mail: [hidden email] >> >> > --------------------------------------------------------------------- To unsubscribe, e-mail: [hidden email] For additional commands, e-mail: [hidden email] |
|
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 <[hidden email]> > 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 <[hidden email]> >>> 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, [hidden email] 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:[hidden email]">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: [hidden email] >>> For additional commands, e-mail: [hidden email] >>> >>> >> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [hidden email] > For additional commands, e-mail: [hidden email] > > -- Dennis Lundberg --------------------------------------------------------------------- To unsubscribe, e-mail: [hidden email] For additional commands, e-mail: [hidden email] |
| Powered by Nabble | Edit this page |
