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 + -
显示快捷键?