From 5b29d00c22372df7400e508cc14f4030a2e17a57 Mon Sep 17 00:00:00 2001 From: Tom Copeland Date: Wed, 11 Sep 2002 18:54:44 +0000 Subject: [PATCH] added new JUnitStaticSuiteRule git-svn-id: https://pmd.svn.sourceforge.net/svnroot/pmd/trunk@914 51baf565-9d33-0410-a72c-fc3788e3496d --- pmd/etc/changelog.txt | 2 +- .../pmd/rules/JUnitStaticSuiteRuleTest.java | 23 +++++++++++++++ pmd/rulesets/newrules.xml | 19 ++++++++++++ .../pmd/rules/JUnitStaticSuiteRule.java | 29 +++++++++++++++++++ pmd/test-data/JUnitStaticSuite1.java | 4 +++ pmd/test-data/JUnitStaticSuite2.java | 3 ++ 6 files changed, 79 insertions(+), 1 deletion(-) create mode 100644 pmd/regress/test/net/sourceforge/pmd/rules/JUnitStaticSuiteRuleTest.java create mode 100644 pmd/src/net/sourceforge/pmd/rules/JUnitStaticSuiteRule.java create mode 100644 pmd/test-data/JUnitStaticSuite1.java create mode 100644 pmd/test-data/JUnitStaticSuite2.java diff --git a/pmd/etc/changelog.txt b/pmd/etc/changelog.txt index 8fdd722c26..6222f5f66e 100644 --- a/pmd/etc/changelog.txt +++ b/pmd/etc/changelog.txt @@ -1,5 +1,5 @@ ???? 2002 - 1.0rc2: -Added new rule: JUnitSpellingRule +Added new rules: JUnitSpellingRule, JUnitStaticSuiteRule Added new ruleset - junit. Fixed bug in PMD GUI - rules are now saved correctly. diff --git a/pmd/regress/test/net/sourceforge/pmd/rules/JUnitStaticSuiteRuleTest.java b/pmd/regress/test/net/sourceforge/pmd/rules/JUnitStaticSuiteRuleTest.java new file mode 100644 index 0000000000..954c00c99b --- /dev/null +++ b/pmd/regress/test/net/sourceforge/pmd/rules/JUnitStaticSuiteRuleTest.java @@ -0,0 +1,23 @@ +/* + * User: tom + * Date: Sep 11, 2002 + * Time: 2:45:29 PM + */ +package test.net.sourceforge.pmd.rules; + +import net.sourceforge.pmd.rules.JUnitStaticSuiteRule; + +public class JUnitStaticSuiteRuleTest extends RuleTst { + + public JUnitStaticSuiteRuleTest(String name) { + super(name); + } + + public void test1() throws Throwable { + runTest("JUnitStaticSuite1.java", 2, new JUnitStaticSuiteRule()); + } + + public void test2() throws Throwable { + runTest("JUnitStaticSuite2.java", 0, new JUnitStaticSuiteRule()); + } +} diff --git a/pmd/rulesets/newrules.xml b/pmd/rulesets/newrules.xml index 617ce41e40..bf230583f4 100644 --- a/pmd/rulesets/newrules.xml +++ b/pmd/rulesets/newrules.xml @@ -19,6 +19,25 @@ public class Foo extends TestCase { public void setup() {} // oops, should be setUp public void TearDown() {} // oops, should be tearDown } +]]> + + + + + + + The suite() method needs to be both public and static. + + + + diff --git a/pmd/src/net/sourceforge/pmd/rules/JUnitStaticSuiteRule.java b/pmd/src/net/sourceforge/pmd/rules/JUnitStaticSuiteRule.java new file mode 100644 index 0000000000..1610814bc1 --- /dev/null +++ b/pmd/src/net/sourceforge/pmd/rules/JUnitStaticSuiteRule.java @@ -0,0 +1,29 @@ +/* + * User: tom + * Date: Sep 11, 2002 + * Time: 2:27:46 PM + */ +package net.sourceforge.pmd.rules; + +import net.sourceforge.pmd.AbstractRule; +import net.sourceforge.pmd.RuleContext; +import net.sourceforge.pmd.ast.ASTMethodDeclarator; +import net.sourceforge.pmd.ast.AccessNode; + +public class JUnitStaticSuiteRule extends AbstractRule { + + public Object visit(ASTMethodDeclarator node, Object data) { + if (!node.getImage().equals("suite")) { + return data; + } + + AccessNode parent = (AccessNode)node.jjtGetParent(); + if (!parent.isPublic() || !parent.isStatic()) { + RuleContext ctx = (RuleContext)data; + ctx.getReport().addRuleViolation(createRuleViolation(ctx, node.getBeginColumn())); + } + + return data; + } + +} diff --git a/pmd/test-data/JUnitStaticSuite1.java b/pmd/test-data/JUnitStaticSuite1.java new file mode 100644 index 0000000000..a912c69ae4 --- /dev/null +++ b/pmd/test-data/JUnitStaticSuite1.java @@ -0,0 +1,4 @@ +public class JUnitStaticSuite1 { + public TestSuite suite() {} + private static TestSuite suite() {} +} diff --git a/pmd/test-data/JUnitStaticSuite2.java b/pmd/test-data/JUnitStaticSuite2.java new file mode 100644 index 0000000000..e08c46d563 --- /dev/null +++ b/pmd/test-data/JUnitStaticSuite2.java @@ -0,0 +1,3 @@ +public class JUnitStaticSuite2 { + public static TestSuite suite() {} +}