From 05425083cb3ed5c72a99464a83e3d25529cdd184 Mon Sep 17 00:00:00 2001 From: Tom Copeland Date: Tue, 25 Jun 2002 14:16:19 +0000 Subject: [PATCH] modified PMD to accept an InputStream as well as a File git-svn-id: https://pmd.svn.sourceforge.net/svnroot/pmd/trunk@50 51baf565-9d33-0410-a72c-fc3788e3496d --- pmd/etc/build.xml | 3 + pmd/etc/scp.bat | 1 + .../net/sourceforge/pmd/FunctionalTest.java | 69 +++++++++---------- pmd/src/net/sourceforge/pmd/PMD.java | 33 ++++----- pmd/src/net/sourceforge/pmd/PMDTask.java | 28 ++++---- 5 files changed, 68 insertions(+), 66 deletions(-) diff --git a/pmd/etc/build.xml b/pmd/etc/build.xml index a65b827d93..1048079678 100644 --- a/pmd/etc/build.xml +++ b/pmd/etc/build.xml @@ -3,6 +3,7 @@ + @@ -29,6 +30,7 @@ + @@ -39,6 +41,7 @@ + diff --git a/pmd/etc/scp.bat b/pmd/etc/scp.bat index 81fdcfe4a7..c74035c3a0 100755 --- a/pmd/etc/scp.bat +++ b/pmd/etc/scp.bat @@ -2,4 +2,5 @@ set CVSROOT=:ext:tomcopeland@cvs.pmd.sourceforge.net:/cvsroot/pmd set HOME=c: set CVS_RSH=c:\bin\ssh\ssh set CLASSPATH=../build/ +set CLASSPATH=%CLASSPATH%;../test-data/ set CLASSPATH=%CLASSPATH%;c:\javacc2.1\bin\lib\JavaCC.zip diff --git a/pmd/regress/test/net/sourceforge/pmd/FunctionalTest.java b/pmd/regress/test/net/sourceforge/pmd/FunctionalTest.java index 8708a77a6f..29b70b2058 100644 --- a/pmd/regress/test/net/sourceforge/pmd/FunctionalTest.java +++ b/pmd/regress/test/net/sourceforge/pmd/FunctionalTest.java @@ -9,6 +9,7 @@ import junit.framework.TestCase; import java.io.File; import java.io.FileInputStream; +import java.io.FileNotFoundException; import java.util.Iterator; import net.sourceforge.pmd.*; @@ -20,52 +21,52 @@ public class FunctionalTest extends TestCase{ } public void testUnusedLocal1() { - Report report = process(new File(root() + "Unused1.java")); + Report report = process("Unused1.java"); assertEquals(1, report.getSize()); assertEquals(new UnusedLocalVariableRule(), ((RuleViolation)report.iterator().next()).getRule()); } public void testUnusedLocal2() { - Report report = process(new File(root() + "Unused2.java")); + Report report = process("Unused2.java"); assertEquals(1, report.getSize()); assertEquals(new UnusedLocalVariableRule(), ((RuleViolation)report.iterator().next()).getRule()); } public void testUnusedLocal3() { - Report report = process(new File(root() + "Unused3.java")); + Report report = process("Unused3.java"); assertEquals(1, report.getSize()); assertEquals(new UnusedLocalVariableRule(), ((RuleViolation)report.iterator().next()).getRule()); } public void testUnusedLocal4() { - Report report = process(new File(root() + "Unused4.java")); + Report report = process("Unused4.java"); assertTrue(report.empty()); } public void testUnusedLocal5() { - Report report = process(new File(root() + "Unused5.java")); + Report report = process("Unused5.java"); assertEquals(1, report.getSize()); assertEquals(new UnusedLocalVariableRule(), ((RuleViolation)report.iterator().next()).getRule()); } public void testUnusedLocal6() { - Report report = process(new File(root() + "Unused6.java")); + Report report = process("Unused6.java"); assertTrue(report.empty()); } public void testUnusedLocal7() { - Report report = process(new File(root() + "Unused7.java")); + Report report = process("Unused7.java"); assertTrue(report.empty()); } public void testUnusedLocal8() { - Report report = process(new File(root() + "Unused8.java")); + Report report = process("Unused8.java"); assertEquals(1, report.getSize()); assertEquals(new SystemPropsRule(), ((RuleViolation)report.iterator().next()).getRule()); } public void testUnusedLocal9() { - Report report = process(new File(root() + "Unused9.java")); + Report report = process("Unused9.java"); assertEquals(2, report.getSize()); Iterator i = report.iterator(); assertEquals(new UnusedLocalVariableRule(), ((RuleViolation)i.next()).getRule()); @@ -73,113 +74,109 @@ public class FunctionalTest extends TestCase{ } public void testUnusedLocal10() { - Report report = process(new File(root() + "Unused10.java")); + Report report = process("Unused10.java"); assertTrue(report.empty()); } public void testEmptyCatchBlock() { - Report report = process(new File(root() + "EmptyCatchBlock.java")); + Report report = process("EmptyCatchBlock.java"); assertEquals(1, report.getSize()); assertEquals(new EmptyCatchBlockRule(), ((RuleViolation)report.iterator().next()).getRule()); } public void testUnnecessaryTemporaries() { - Report report = process(new File(root() + "UnnecessaryTemporary.java")); + Report report = process("UnnecessaryTemporary.java"); assertEquals(6, report.getSize()); assertEquals(new UnnecessaryConversionTemporaryRule(), ((RuleViolation)report.iterator().next()).getRule()); } public void testProps() { - Report report = process(new File(root() + "ContainsSystemGetProps.java")); + Report report = process("ContainsSystemGetProps.java"); assertEquals(3, report.getSize()); assertEquals(new SystemPropsRule(), ((RuleViolation)report.iterator().next()).getRule()); } public void testSystemIn() { - Report report = process(new File(root() + "ContainsSystemIn.java")); + Report report = process("ContainsSystemIn.java"); assertEquals(3, report.getSize()); assertEquals(new SystemOutRule(), ((RuleViolation)report.iterator().next()).getRule()); } public void testSystemOut() { - Report report = process(new File(root() + "ContainsSystemOut.java")); + Report report = process("ContainsSystemOut.java"); assertEquals(1, report.getSize()); assertEquals(new SystemOutRule(), ((RuleViolation)report.iterator().next()).getRule()); } public void testCreateAThread() { - Report report = process(new File(root() + "CreatesAThread.java")); + Report report = process("CreatesAThread.java"); assertEquals(1, report.getSize()); assertEquals(new DontCreateThreadsRule(), ((RuleViolation)report.iterator().next()).getRule()); } public void testCreateATimer() { - Report report = process(new File(root() + "CreatesATimer.java")); + Report report = process("CreatesATimer.java"); assertEquals(1, report.getSize()); assertEquals(new DontCreateTimersRule(), ((RuleViolation)report.iterator().next()).getRule()); } public void testEmptyIf() { - Report report = process(new File(root() + "EmptyIfStmtRule.java")); + Report report = process("EmptyIfStmtRule.java"); assertEquals(1, report.getSize()); assertEquals(new EmptyIfStmtRule(), ((RuleViolation)report.iterator().next()).getRule()); } public void testUnusedPrivateInstanceVar1() { - Report report = process(new File(root() + "UnusedPrivateInstanceVar1.java")); + Report report = process("UnusedPrivateInstanceVar1.java"); assertEquals(1, report.getSize()); Iterator i = report.iterator(); assertEquals(new UnusedPrivateInstanceVariableRule(), ((RuleViolation)i.next()).getRule()); } public void testUnusedPrivateInstanceVar2() { - Report report = process(new File(root() + "UnusedPrivateInstanceVar2.java")); + Report report = process("UnusedPrivateInstanceVar2.java"); assertTrue(report.empty()); } public void testUnusedPrivateInstanceVar3() { - Report report = process(new File(root() + "UnusedPrivateInstanceVar3.java")); + Report report = process("UnusedPrivateInstanceVar3.java"); assertEquals(1, report.getSize()); Iterator i = report.iterator(); assertEquals(new UnusedPrivateInstanceVariableRule(), ((RuleViolation)i.next()).getRule()); } public void testUnusedPrivateInstanceVar4() { - Report report = process(new File(root() + "UnusedPrivateInstanceVar4.java")); + Report report = process("UnusedPrivateInstanceVar4.java"); assertTrue(report.empty()); } public void testUnusedPrivateInstanceVar6() { - Report report = process(new File(root() + "UnusedPrivateInstanceVar6.java")); + Report report = process("UnusedPrivateInstanceVar6.java"); assertTrue(report.empty()); } public void testUnusedPrivateInstanceVar7() { - Report report = process(new File(root() + "UnusedPrivateInstanceVar7.java")); + Report report = process("UnusedPrivateInstanceVar7.java"); assertTrue(report.empty()); } public void testUnusedPrivateInstanceVar8() { - Report report = process(new File(root() + "UnusedPrivateInstanceVar8.java")); + Report report = process("UnusedPrivateInstanceVar8.java"); assertTrue(report.empty()); } /* TODO - this tests unused variables in nested classes public void testUnusedPrivateInstanceVar9() { - Report report = process(new File(root() + "UnusedPrivateInstanceVar9.java")); + Report report = process("UnusedPrivateInstanceVar9.java"); assertEquals(1, report.getSize()); } TODO - this tests unused variables in nested classes */ - private Report process(File file) { - PMD p = new PMD(); - return p.processFile(file, RuleFactory.ALL); - } - - private String root() { - if (System.getProperty("os.name").indexOf("Linux") != -1) { - return "/home/build/hourly/working/pmd/test-data" + System.getProperty("file.separator"); + private Report process(String file) { + try { + PMD p = new PMD(); + return p.processFile(file, getClass().getClassLoader().getResourceAsStream(file), RuleFactory.ALL); + } catch (FileNotFoundException fnfe) { + throw new RuntimeException("File " + file + " not found"); } - return "c:\\data\\pmd\\pmd\\test-data" + System.getProperty("file.separator"); } - } diff --git a/pmd/src/net/sourceforge/pmd/PMD.java b/pmd/src/net/sourceforge/pmd/PMD.java index 0a1865ac98..dbb3ffabeb 100644 --- a/pmd/src/net/sourceforge/pmd/PMD.java +++ b/pmd/src/net/sourceforge/pmd/PMD.java @@ -16,19 +16,12 @@ import java.util.Iterator; public class PMD { - public Report processFile(InputStream is) { - return null; - } - - public Report processFile(FileReader fr) { - return null; } - - public Report processFile(File file, String ruleSetType) { - Report report = new Report(file.getAbsolutePath()); + public Report processFile(String filename, InputStream is, String ruleSetType) throws FileNotFoundException { + Report report = new Report(filename); List rules = RuleFactory.createRules(ruleSetType); try { - Reader reader = new BufferedReader(new FileReader(file)); + InputStreamReader reader = new InputStreamReader(is); JavaParser parser = new JavaParser(reader); ASTCompilationUnit c = parser.CompilationUnit(); //c.dump(""); @@ -37,17 +30,17 @@ public class PMD { c.childrenAccept(rule, report); } reader.close(); - } catch (FileNotFoundException fnfe) { - fnfe.printStackTrace(); } catch (ParseException pe) { - System.out.println("Error while parsing " + file.getAbsolutePath() + " at line " + pe.currentToken.beginLine + "; continuing..."); - } catch (IOException ioe) { - ioe.printStackTrace(); + System.out.println("Error while parsing " + filename + " at line " + pe.currentToken.beginLine + "; continuing..."); } catch (Throwable t) { - System.out.println("Error while parsing " + file.getAbsolutePath() + "; "+ t.getMessage() + "; continuing..."); + System.out.println("Error while parsing " + filename + "; "+ t.getMessage() + "; continuing..."); //t.printStackTrace(); } return report; + } + + public Report processFile(File file, String ruleSetType) throws FileNotFoundException{ + return processFile(file.getAbsolutePath(), new FileInputStream(file), ruleSetType); } public static void main(String[] args) { @@ -59,7 +52,11 @@ public class PMD { throw new RuntimeException("File " + args[0] + " doesn't exist"); } PMD pmd = new PMD(); - Report report = pmd.processFile(input, RuleFactory.ALL); - System.out.println("" + report.renderToXML() + ""); + try { + Report report = pmd.processFile(input, RuleFactory.ALL); + System.out.println("" + report.renderToXML() + ""); + } catch (FileNotFoundException fnfe) { + fnfe.printStackTrace(); + } } } diff --git a/pmd/src/net/sourceforge/pmd/PMDTask.java b/pmd/src/net/sourceforge/pmd/PMDTask.java index a05d3a47f2..a03129a59c 100644 --- a/pmd/src/net/sourceforge/pmd/PMDTask.java +++ b/pmd/src/net/sourceforge/pmd/PMDTask.java @@ -60,19 +60,23 @@ public class PMDTask extends Task { DirectoryScanner ds = fs.getDirectoryScanner(project); String[] srcFiles = ds.getIncludedFiles(); for (int j=0; j