scopecreationvisitortest.java

来自「检查Java程序漏洞」· Java 代码 · 共 72 行

JAVA
72
字号
/** * BSD-style license; for more info see http://pmd.sourceforge.net/license.html*/package test.net.sourceforge.pmd.symboltable;import junit.framework.TestCase;import net.sourceforge.pmd.ast.ASTClassBodyDeclaration;import net.sourceforge.pmd.ast.ASTCompilationUnit;import net.sourceforge.pmd.ast.ASTIfStatement;import net.sourceforge.pmd.ast.ASTTryStatement;import net.sourceforge.pmd.ast.SimpleNode;import net.sourceforge.pmd.symboltable.BasicScopeCreationVisitor;import net.sourceforge.pmd.symboltable.BasicScopeFactory;import net.sourceforge.pmd.symboltable.GlobalScope;import net.sourceforge.pmd.symboltable.LocalScope;import net.sourceforge.pmd.symboltable.ScopeFactory;import java.util.Stack;public class ScopeCreationVisitorTest extends TestCase {    private class MyCB extends ASTClassBodyDeclaration {        public MyCB() {            super(1);        }        public boolean isAnonymousInnerClass() {            return true;        }    }    private class MySF implements ScopeFactory {        public boolean gotCalled;        public void openScope(Stack scopes, SimpleNode node) {            this.gotCalled = true;            scopes.add(new Object());        }    }    public void testScopesAreCreated() {        BasicScopeCreationVisitor sc = new BasicScopeCreationVisitor(new BasicScopeFactory());        ASTCompilationUnit acu = new ASTCompilationUnit(1);        acu.setScope(new GlobalScope());        ASTTryStatement tryNode = new ASTTryStatement(2);        tryNode.setScope(new LocalScope());        tryNode.jjtSetParent(acu);        ASTIfStatement ifNode = new ASTIfStatement(3);        ifNode.jjtSetParent(tryNode);        sc.visit(acu, null);        assertTrue(ifNode.getScope() instanceof LocalScope);    }    public void testAnonymousInnerClassIsCreated() {        MySF sf = new MySF();        BasicScopeCreationVisitor sc = new BasicScopeCreationVisitor(sf);        ASTClassBodyDeclaration cb = new MyCB();        sc.visit(cb, null);        assertTrue(sf.gotCalled);    }    public void testAnonymousInnerClassIsNotCreated() {        MySF sf = new MySF();        new BasicScopeCreationVisitor(sf).visit(new ASTClassBodyDeclaration(1), null);        assertFalse(sf.gotCalled);    }}

⌨️ 快捷键说明

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