1 2 package test.net.sourceforge.pmd.rules; 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.RuleViolation; 12 import net.sourceforge.pmd.rules.XPathRule; 13 import test.net.sourceforge.pmd.testframework.RuleTst; 14 15 18 public class XPathRuleTest extends RuleTst { 19 20 XPathRule rule; 21 22 public void setUp() { 23 rule = new XPathRule(); 24 rule.setMessage("XPath Rule Failed"); 25 } 26 27 public void testPluginname() throws Throwable { 28 Rule rule = new XPathRule(); 29 rule.addProperty("xpath", "//VariableDeclaratorId[string-length(@Image) < 3]"); 30 rule.setMessage("{0}"); 31 rule.addProperty("pluginname", "true"); 32 PMD p = new PMD(); 33 RuleContext ctx = new RuleContext(); 34 Report report = new Report(); 35 ctx.setReport(report); 36 ctx.setSourceCodeFilename("n/a"); 37 RuleSet rules = new RuleSet(); 38 rules.addRule(rule); 39 p.processFile(new StringReader (TEST1), rules, ctx); 40 RuleViolation rv = (RuleViolation) report.iterator().next(); 41 assertEquals("a", rv.getDescription()); 42 } 43 44 public void testVariables() throws Throwable { 45 Rule rule = new XPathRule(); 46 rule.addProperty("xpath", "//VariableDeclaratorId[@Image=$var]"); 47 rule.setMessage("Avoid vars"); 48 rule.addProperty("var", "fiddle"); 49 PMD p = new PMD(); 50 RuleContext ctx = new RuleContext(); 51 Report report = new Report(); 52 ctx.setReport(report); 53 ctx.setSourceCodeFilename("n/a"); 54 RuleSet rules = new RuleSet(); 55 rules.addRule(rule); 56 p.processFile(new StringReader (TEST2), rules, ctx); 57 RuleViolation rv = (RuleViolation) report.iterator().next(); 58 assertEquals(3, rv.getBeginLine()); 59 } 60 61 private static final String TEST1 = 62 "public class Foo {" + PMD.EOL + 63 " int a;" + PMD.EOL + 64 "}"; 65 66 private static final String TEST2 = 67 "public class Foo {" + PMD.EOL + 68 " int faddle;" + PMD.EOL + 69 " int fiddle;" + PMD.EOL + 70 "}"; 71 } 72 | Popular Tags |