diff --git a/maven-plugin-pmd-build/src/main/java/net/sourceforge/pmd/build/filefilter/RulesetFilenameFilter.java b/maven-plugin-pmd-build/src/main/java/net/sourceforge/pmd/build/filefilter/RulesetFilenameFilter.java index c6068a5a31..844e6f9eb2 100644 --- a/maven-plugin-pmd-build/src/main/java/net/sourceforge/pmd/build/filefilter/RulesetFilenameFilter.java +++ b/maven-plugin-pmd-build/src/main/java/net/sourceforge/pmd/build/filefilter/RulesetFilenameFilter.java @@ -5,6 +5,7 @@ package net.sourceforge.pmd.build.filefilter; import java.io.File; import java.io.FilenameFilter; +import java.util.regex.Pattern; /** * @@ -15,8 +16,13 @@ import java.io.FilenameFilter; public class RulesetFilenameFilter implements FilenameFilter { // FUTURE: Make this somehow configurable ? Turn into an array passed by constructor ? - // TODO: move to compiled regex to improve perf. - private static final String[] patterns = { "^[0-9][0-9].*\\.xml", "^.*dogfood.*\\.xml", "^all-.*\\.xml", "^migrating_.*\\.xml", "^pmdspecific.xml"} ; + private static final Pattern EXCLUDE = Pattern.compile( + "(^[0-9][0-9].*\\.xml)" + + "|(^.*dogfood.*\\.xml)" + + "|(^all-.*\\.xml)" + + "|(^migrating_.*\\.xml)" + + "|(^pmdspecific.xml)" + ); public boolean accept(File file, String name) { if ( doesNotMatchExcludeNames(name) ) @@ -26,10 +32,6 @@ public class RulesetFilenameFilter implements FilenameFilter { } private boolean doesNotMatchExcludeNames(String name) { - for ( String pattern : patterns ) { - if ( name.matches(pattern)) - return false; - } - return true; + return !EXCLUDE.matcher(name).matches(); } } diff --git a/maven-plugin-pmd-build/src/main/java/net/sourceforge/pmd/build/util/FileUtil.java b/maven-plugin-pmd-build/src/main/java/net/sourceforge/pmd/build/util/FileUtil.java index 876c19b46e..3fb112aa74 100644 --- a/maven-plugin-pmd-build/src/main/java/net/sourceforge/pmd/build/util/FileUtil.java +++ b/maven-plugin-pmd-build/src/main/java/net/sourceforge/pmd/build/util/FileUtil.java @@ -15,8 +15,10 @@ import java.io.FilenameFilter; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; -import java.util.HashSet; -import java.util.Set; +import java.util.Arrays; +import java.util.Collections; +import java.util.LinkedList; +import java.util.List; import net.sourceforge.pmd.build.PmdBuildException; @@ -28,20 +30,20 @@ public final class FileUtil { public static String pathToParent = ".."; - private FileUtil() {}; + private FileUtil() {} - public static Set listFilesFrom(File dir) { + public static List listFilesFrom(File dir) { return filterFilesFrom(dir, null); } - public static Set filterFilesFrom(File dir, FilenameFilter filter) { - Set filteredFiles = new HashSet(0); + public static List filterFilesFrom(File dir, FilenameFilter filter) { + List filteredFiles = new LinkedList(); if ( dir != null ) { File[] files = dir.listFiles(filter); if ( files != null && files.length > 0 ) - for ( int fileIterator = 0 ; fileIterator < files.length ; fileIterator++ ) - filteredFiles.add(files[fileIterator]); + filteredFiles.addAll(Arrays.asList(files)); } + Collections.sort(filteredFiles); return filteredFiles; } diff --git a/maven-plugin-pmd-build/src/test/java/net/sourceforge/pmd/ant/PmdBuildTaskTest.java b/maven-plugin-pmd-build/src/test/java/net/sourceforge/pmd/ant/PmdBuildTaskTest.java index 65f613b9a7..be99fb5b5e 100644 --- a/maven-plugin-pmd-build/src/test/java/net/sourceforge/pmd/ant/PmdBuildTaskTest.java +++ b/maven-plugin-pmd-build/src/test/java/net/sourceforge/pmd/ant/PmdBuildTaskTest.java @@ -4,8 +4,13 @@ package net.sourceforge.pmd.ant; +import static org.junit.Assert.assertTrue; + +import java.io.File; + import net.sourceforge.pmd.TestBase; +import org.apache.commons.io.IOUtils; import org.junit.Test; /** @@ -22,5 +27,10 @@ public class PmdBuildTaskTest extends TestBase { task.setSiteXml(TEST_DIR + "site/site.pre.xml"); task.setSiteXmlTarget(TEST_DIR + "site/site.xml"); task.execute(); + + String site = IOUtils.toString(new File(TEST_DIR + "site/site.xml").toURI()); + assertTrue(site.contains(" + + + + +The Code Size ruleset contains rules that find problems related to code size or complexity. + + + + +The NPath complexity of a method is the number of acyclic execution paths through that method. +A threshold of 200 is generally considered the point where measures should be taken to reduce +complexity and increase readability. + + 3 + + r) { + doSomething(); + while (f < 5 ) { + anotherThing(); + f -= 27; + } + } else { + tryThis(); + } + } + } + if ( r - n > 45) { + while (doMagic()) { + findRabbits(); + } + } + try { + doSomethingDangerous(); + } catch (Exception ex) { + makeAmends(); + } finally { + dontDoItAgain(); + } + } +} + + ]]> + + + + \ No newline at end of file