added fixes for bug 579718

git-svn-id: https://pmd.svn.sourceforge.net/svnroot/pmd/trunk@279 51baf565-9d33-0410-a72c-fc3788e3496d
This commit is contained in:
Tom Copeland
2002-07-10 18:20:55 +00:00
parent 18b1b50437
commit 79183c8ba9
3 changed files with 32 additions and 8 deletions

View File

@ -35,8 +35,8 @@
<target name="pmd">
<taskdef name="pmd" classname="net.sourceforge.pmd.ant.PMDTask"/>
<!--<pmd reportFile="c:\jdk14.html" rulesetfiles="rulesets/ticbuild.xml,rulesets/unusedcode.xml,rulesets/design.xml" format="html">-->
<pmd reportFile="c:\jdk14.html" rulesetfiles="rulesets/new_for_0_4.xml,rulesets/ticbuild.xml,rulesets/unusedcode.xml,rulesets/design.xml" format="html" verbose="true">
<pmd reportFile="c:\jdk14.html" rulesetfiles="rulesets/basic.xml,rulesets/foo.xml" format="html">
<!--<pmd reportFile="c:\jdk14.html" rulesetfiles="rulesets/new_for_0_4.xml,rulesets/ticbuild.xml,rulesets/unusedcode.xml,rulesets/design.xml" format="html" verbose="true">-->
<fileset dir="c:\data\pmd\pmd\src">
<!--<fileset dir="c:\j2sdk1.4.0\src">-->
<include name="**/*.java"/>

View File

@ -0,0 +1,12 @@
/*
* User: tom
* Date: Jul 10, 2002
* Time: 2:11:53 PM
*/
package net.sourceforge.pmd;
public class RuleSetNotFoundException extends Exception {
public RuleSetNotFoundException(String msg) {
super(msg);
}
}

View File

@ -62,10 +62,15 @@ public class PMDTask extends Task {
throw new BuildException("Renderer format must be either 'xml' or 'html'; you specified " + format);
}
PMD pmd = new PMD();
RuleSet rules = null;
try {
createRuleSets();
} catch (RuleSetNotFoundException rsnfe) {
throw new BuildException(rsnfe.getMessage());
}
PMD pmd = new PMD();
RuleContext ctx = new RuleContext();
RuleSet rules = createRuleSets();
Report report = new Report();
ctx.setReport(report);
@ -109,21 +114,28 @@ public class PMDTask extends Task {
}
}
private RuleSet createRuleSets() {
private RuleSet createRuleSets() throws RuleSetNotFoundException {
RuleSetFactory ruleSetFactory = new RuleSetFactory();
RuleSet ruleSet = new RuleSet();
if (ruleSetFiles.indexOf(',') == -1) {
ruleSet = ruleSetFactory.createRuleSet(getClass().getClassLoader().getResourceAsStream(ruleSetFiles));
ruleSet = ruleSetFactory.createRuleSet(tryToGetStreamTo(ruleSetFiles));
} else {
for (StringTokenizer st = new StringTokenizer(ruleSetFiles, ","); st.hasMoreTokens();) {
String ruleSetName = st.nextToken();
RuleSet tmpRuleSet = ruleSetFactory.createRuleSet(getClass().getClassLoader().getResourceAsStream(ruleSetName));
RuleSet tmpRuleSet = ruleSetFactory.createRuleSet(tryToGetStreamTo(ruleSetName));
if (verbose) System.out.println("Adding " + tmpRuleSet.size() + " rules from ruleset " + ruleSetName);
ruleSet.addRuleSet(tmpRuleSet);
}
}
return ruleSet;
}
private InputStream tryToGetStreamTo(String name) throws RuleSetNotFoundException {
InputStream in = getClass().getClassLoader().getResourceAsStream(name);
if (in == null) {
throw new RuleSetNotFoundException("Can't find ruleset " + name + "; make sure that path is on the CLASSPATH");
}
return in;
}
}