    1   package test.net.sourceforge.pmd.rules.design;
    2
    3   import net.sourceforge.pmd.PMD;
    4   import net.sourceforge.pmd.Rule;
    5   import net.sourceforge.pmd.RuleSetNotFoundException;
    6   import test.net.sourceforge.pmd.testframework.SimpleAggregatorTst;
    7   import test.net.sourceforge.pmd.testframework.TestDescriptor;
    8
    9   public class AvoidInstanceofChecksInCatchClauseTest extends SimpleAggregatorTst {
    10      private Rule rule;
    11
    12      public void setUp() throws RuleSetNotFoundException {
    13          rule = findRule("design", "AvoidInstanceofChecksInCatchClause");
    14      }
    15
    16      public void testAll() {
    17          runTests(new TestDescriptor[]{
    18              new TestDescriptor(TEST1, "bad, instanceof FooException", 1, rule),
    19              new TestDescriptor(TEST2, "ok, no instanceof", 0, rule),
    20          });
    21      }
    22
    23      private static final String TEST1 =
    24              "public class Foo {" + PMD.EOL +
    25              " void bar() {" +
    26              "  try {" + PMD.EOL +
    27              "   foo();" + PMD.EOL +
    28              "  } catch (Exception e) {" + PMD.EOL +
    29              "   if (e instanceof FooException) {}" + PMD.EOL +
    30              "  }" + PMD.EOL +
    31              " }" + PMD.EOL +
    32              "}";
    33
    34      private static final String TEST2 =
    35              "public class Foo {" + PMD.EOL +
    36              " void bar() {" +
    37              "  try {" + PMD.EOL +
    38              "   foo();" + PMD.EOL +
    39              "  } catch (Exception e) {" + PMD.EOL +
    40              "  }" + PMD.EOL +
    41              " }" + PMD.EOL +
    42              "}";
    43  }