1   
2    package> test.net.sourceforge.pmd;
3    
4    import java.io.StringReader;
5    
6    import net.sourceforge.pmd.PMD;
7    import net.sourceforge.pmd.Report;
8    import net.sourceforge.pmd.Rule;
9    import net.sourceforge.pmd.RuleContext;
10   import net.sourceforge.pmd.RuleSet;
11   import net.sourceforge.pmd.RuleSets;
12   import net.sourceforge.pmd.SourceTypeToRuleLanguageMapper;
13   import test.net.sourceforge.pmd.testframework.RuleTst;
14   import test.net.sourceforge.pmd.testframework.TestDescriptor;
15   
16   public class ExcludeLinesTest extends RuleTst {
17       private Rule rule;
18   
19       public void setUp() {
20           rule = findRule("unusedcode", "UnusedLocalVariable");
21       }
22   
23       public void testAcceptance() {
24           runTest(new TestDescriptor(TEST1, "NOPMD should work", 0, rule));
25           runTest(new TestDescriptor(TEST2, "Should fail without exclude marker", 1, rule));
26       }
27   
28       public void testAlternateMarker() throws Throwable {
29           PMD p = new PMD();
30           p.setExcludeMarker("FOOBAR");
31           RuleContext ctx = new RuleContext();
32           Report r = new Report();
33           ctx.setReport(r);
34           ctx.setSourceCodeFilename("n/a");
35           RuleSet rules = new RuleSet();
36           rules.addRule(rule);
37           rules.setLanguage(SourceTypeToRuleLanguageMapper.getMappedLanguage(DEFAULT_SOURCE_TYPE));
38           p.processFile(new StringReader(TEST3), new RuleSets(rules), ctx, DEFAULT_SOURCE_TYPE);
39           assertTrue(r.isEmpty());
40           assertEquals(r.getSuppressedRuleViolations().size(), 1);
41       }
42   
43       private static final String TEST1 =
44               "public class Foo {" + PMD.EOL +
45               " void foo() {" + PMD.EOL +
46               "  int x; //NOPMD " + PMD.EOL +
47               " } " + PMD.EOL +
48               "}";
49   
50       private static final String TEST2 =
51               "public class Foo {" + PMD.EOL +
52               " void foo() {" + PMD.EOL +
53               "  int x;" + PMD.EOL +
54               " } " + PMD.EOL +
55               "}";
56   
57       private static final String TEST3 =
58               "public class Foo {" + PMD.EOL +
59               " void foo() {" + PMD.EOL +
60               "  int x; // FOOBAR" + PMD.EOL +
61               " } " + PMD.EOL +
62               "}";
63   
64   }