⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rulesettest.java

📁 检查Java程序漏洞
💻 JAVA
字号:
/** * <copyright> *  Copyright 1997-2002 InfoEther, LLC *  under sponsorship of the Defense Advanced Research Projects Agency(DARPA). * *  This program is free software; you can redistribute it and/or modify *  it under the terms of the Cougaar Open Source License as publishedby *  DARPA on the Cougaar Open Source Website (www.cougaar.org). * *  THE COUGAAR SOFTWARE AND ANY DERIVATIVE SUPPLIED BY LICENSOR IS *  PROVIDED 'AS IS' WITHOUT WARRANTIES OF ANY KIND, WHETHER EXPRESS OR *  IMPLIED, INCLUDING (BUT NOT LIMITED TO) ALL IMPLIED WARRANTIES OF *  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, AND WITHOUT *  ANY WARRANTIES AS TO NON-INFRINGEMENT.  IN NO EVENT SHALL COPYRIGHT *  HOLDER BE LIABLE FOR ANY DIRECT, SPECIAL, INDIRECT OR CONSEQUENTIAL *  DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE OF DATA OR PROFITS, *  TORTIOUS CONDUCT, ARISING OUT OF OR IN CONNECTION WITH THE USE OR *  PERFORMANCE OF THE COUGAAR SOFTWARE. * </copyright> */package test.net.sourceforge.pmd;import junit.framework.TestCase;import net.sourceforge.pmd.Report;import net.sourceforge.pmd.RuleContext;import net.sourceforge.pmd.RuleSet;import net.sourceforge.pmd.RuleViolation;import net.sourceforge.pmd.TargetJDK1_4;import net.sourceforge.pmd.ast.JavaParser;import test.net.sourceforge.pmd.testframework.MockRule;import java.io.StringReader;import java.util.ArrayList;import java.util.Collections;import java.util.HashSet;import java.util.Iterator;import java.util.List;import java.util.Random;import java.util.Set;public class RuleSetTest extends TestCase {    private String javaCode = "public class Test { }";    public void testConstructor() {        new RuleSet();    }    public void testAccessors() {        RuleSet rs = new RuleSet();        rs.setName("foo");        assertEquals("name mismatch", "foo", rs.getName());        rs.setDescription("bar");        assertEquals("description mismatch", "bar", rs.getDescription());    }    public void testGetRuleByName() {        RuleSet rs = new RuleSet();        MockRule mock = new MockRule("name", "desc", "msg");        rs.addRule(mock);        assertEquals("unable to fetch rule by name", mock, rs.getRuleByName("name"));    }    public void testRuleList() {        RuleSet IUT = new RuleSet();        assertEquals("Size of RuleSet isn't zero.", 0, IUT.size());        MockRule rule = new MockRule("name", "desc", "msg");        IUT.addRule(rule);        assertEquals("Size of RuleSet isn't one.", 1, IUT.size());        Set rules = IUT.getRules();        Iterator i = rules.iterator();        assertTrue("Empty Set", i.hasNext());        assertEquals("Returned set of wrong size.", 1, rules.size());        assertEquals("Rule isn't in ruleset.", rule, i.next());    }    public void testAddRuleSet() {        RuleSet set1 = new RuleSet();        set1.addRule(new MockRule("name", "desc", "msg"));        RuleSet set2 = new RuleSet();        set2.addRule(new MockRule("name", "desc", "msg"));        set1.addRuleSet(set2);        assertEquals("ruleset size wrong", 2, set1.size());    }    public void testApply0Rules() throws Throwable {        RuleSet IUT = new RuleSet();        verifyRuleSet(IUT, 0, new HashSet());    }    public void testApply1Rule() throws Throwable {        RuleSet IUT = new RuleSet();        MockRule rule = new MockRule("name", "desc", "msg");        RuleContext ctx = new RuleContext();        ctx.setSourceCodeFilename("filename");        RuleViolation violation = new RuleViolation(rule, 1, ctx);        rule.addViolation(violation);        IUT.addRule(rule);        verifyRuleSet(IUT, 1, Collections.singleton(violation));    }    public void testApplyNRule() throws Throwable {        RuleSet IUT = new RuleSet();        Random rand = new Random();        int numRules = rand.nextInt(10) + 1;        Set ruleViolations = new HashSet();        for (int i = 0; i < numRules; i++) {            MockRule rule = new MockRule("name", "desc", "msg");            RuleContext ctx = new RuleContext();            ctx.setSourceCodeFilename("filename");            RuleViolation violation = new RuleViolation(rule, i, ctx);            ruleViolations.add(violation);            rule.addViolation(violation);            IUT.addRule(rule);        }        verifyRuleSet(IUT, numRules, ruleViolations);    }    protected void verifyRuleSet(RuleSet IUT, int size, Set values) throws Throwable {        RuleContext context = new RuleContext();        Set reportedValues = new HashSet();        context.setReport(new Report());        IUT.apply(makeCompilationUnits(), context);        assertEquals("Invalid number of Violations Reported", size, context.getReport().size());        Iterator violations = context.getReport().iterator();        while (violations.hasNext()) {            RuleViolation violation = (RuleViolation) violations.next();            reportedValues.add(violation);            assertTrue("Unexpected Violation Returned: " + violation, values.contains(violation));        }        Iterator expected = values.iterator();        while (expected.hasNext()) {            RuleViolation violation = (RuleViolation) expected.next();            assertTrue("Expected Violation not Returned: " + violation, reportedValues.contains(violation));        }    }    protected List makeCompilationUnits() throws Throwable {        List RC = new ArrayList();        JavaParser parser = (new TargetJDK1_4()).createParser(new StringReader(javaCode));        RC.add(parser.CompilationUnit());        return RC;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -