Author: dkulp
Date: Sat Mar 10 09:30:00 2007
New Revision: 516753

URL: http://svn.apache.org/viewvc?view=rev&rev=516753
Log:
Add ability to exclude some source roots

Modified:
    
maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/AbstractPmdReport.java

Modified: 
maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/AbstractPmdReport.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/AbstractPmdReport.java?view=diff&rev=516753&r1=516752&r2=516753
==============================================================================
--- 
maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/AbstractPmdReport.java
 (original)
+++ 
maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/AbstractPmdReport.java
 Sat Mar 10 09:30:00 2007
@@ -104,6 +104,7 @@
      * A list of files to exclude from checking. Can contain ant-style 
wildcards and double wildcards.
      *
      * @parameter
+     * @since 2.2
      */
     private String[] excludes;
     
@@ -111,6 +112,7 @@
      * A list of files to include from checking. Can contain ant-style 
wildcards and double wildcards.  
      * Defaults to **\/*.java
      *
+     * @since 2.2
      * @parameter
      */
     private String[] includes;
@@ -123,22 +125,32 @@
      *
      * @parameter expression="${project.compileSourceRoots}"
      * @required
+     * @readonly
      */
     private List compileSourceRoots;
     
     /**
-     * The source directories containing the test-source to be compiled.
+     * The source directories containing the test-sources to be compiled.
      *
      * @parameter expression="${project.testCompileSourceRoots}"
      * @required
+     * @readonly
      */
     private List testSourceRoots;
     
-
+    /**
+     * The project source directories that should be excluded.
+     *
+     * @since 2.2
+     * @parameter
+     */
+    private List excludeRoots;
+    
     /**
      * Run PMD on the tests
      *
      * @parameter default-value="false"
+     * @since 2.2
      */
     protected boolean includeTests;
     
@@ -208,6 +220,23 @@
     protected List getFilesToProcess( )
         throws IOException
     {
+        if ( excludeRoots == null )
+        {
+            excludeRoots = Collections.EMPTY_LIST;
+        }
+        List excludeRootFiles = new ArrayList(excludeRoots.size());
+        
+        for (Iterator it = excludeRoots.iterator(); it.hasNext();) 
+        {
+            String root = (String)it.next();
+            File file = new File(root);
+            if ( file.exists()
+                && file.isDirectory())
+            {
+                excludeRootFiles.add(file);
+            }
+        }
+        
         String excluding = getIncludeExcludeString( excludes );
         String including = getIncludeExcludeString( includes );
         List files = new ArrayList();
@@ -238,10 +267,11 @@
             String root = (String)it.next();
             File sourceDirectory = new File(root);
             if ( sourceDirectory.exists()
-                && sourceDirectory.isDirectory() )
+                && sourceDirectory.isDirectory()
+                && !excludeRootFiles.contains(sourceDirectory))
             {
                 files.addAll( FileUtils.getFiles( sourceDirectory, including, 
excludesStr.toString() ) );
-            }            
+            }
         }
         
         if ( includeTests )
@@ -250,11 +280,13 @@
             {
                 String root = (String)it.next();
                 File sourceDirectory = new File(root);
+                
                 if ( sourceDirectory.exists()
-                    && sourceDirectory.isDirectory() )
+                    && sourceDirectory.isDirectory()
+                    && !excludeRootFiles.contains(sourceDirectory))
                 {
                     files.addAll( FileUtils.getFiles( sourceDirectory, 
including, excludesStr.toString() ) );
-                }            
+                }
             }
         }
         return files;


Reply via email to