Package org.sonar.php.tree.symbols
Class SymbolVisitor
- java.lang.Object
-
- org.sonar.plugins.php.api.visitors.PHPVisitorCheck
-
- org.sonar.php.tree.symbols.SymbolVisitor
-
- All Implemented Interfaces:
PHPCheck,VisitorCheck
public class SymbolVisitor extends PHPVisitorCheck
-
-
Field Summary
-
Fields inherited from class org.sonar.plugins.php.api.visitors.PHPVisitorCheck
MAX_DEPTH
-
-
Constructor Summary
Constructors Constructor Description SymbolVisitor(SymbolTableImpl symbolTable)
-
Method Summary
-
Methods inherited from class org.sonar.plugins.php.api.visitors.PHPVisitorCheck
analyze, analyze, analyze, context, getFullyQualifiedName, init, newIssue, scan, scan, visitArrayAccess, visitArrayAssignmentPattern, visitArrayAssignmentPatternElement, visitArrayInitializerBracket, visitArrayInitializerFunction, visitArrayPair, visitAssignmentExpression, visitAttribute, visitAttributeGroup, visitBinaryExpression, visitBlock, visitBreakStatement, visitBuiltInType, visitCallArgument, visitCaseClause, visitCastExpression, visitCatchBlock, visitConditionalExpression, visitContinueStatement, visitDeclareStatement, visitDefaultClause, visitDoWhileStatement, visitEchoTagStatement, visitElseClause, visitElseifClause, visitEmptyStatement, visitExecutionOperator, visitExpandableStringCharacters, visitExpandableStringLiteral, visitExpressionListStatement, visitExpressionStatement, visitForEachStatement, visitForStatement, visitGotoStatement, visitHeredoc, visitIfStatement, visitInlineHTML, visitLabel, visitListExpression, visitLiteral, visitMatchConditionClause, visitMatchDefaultClause, visitMatchExpression, visitNamespaceName, visitParenthesisedExpression, visitPostfixExpression, visitPrefixedCastExpression, visitPrefixExpression, visitReferenceVariable, visitReturnStatement, visitReturnTypeClause, visitScript, visitSpreadArgument, visitSwitchStatement, visitThrowExpression, visitThrowStatement, visitTraitAlias, visitTraitMethodReference, visitTraitPrecedence, visitTrivia, visitTryStatement, visitType, visitUnionType, visitUnsetVariableStatement, visitUseClause, visitVariableDeclaration, visitVariableVariable, visitWhileStatement, visitYieldExpression
-
-
-
-
Constructor Detail
-
SymbolVisitor
public SymbolVisitor(SymbolTableImpl symbolTable)
-
-
Method Detail
-
visitCompilationUnit
public void visitCompilationUnit(CompilationUnitTree tree)
- Specified by:
visitCompilationUnitin interfaceVisitorCheck- Overrides:
visitCompilationUnitin classPHPVisitorCheck
-
visitNamespaceStatement
public void visitNamespaceStatement(NamespaceStatementTree tree)
- Specified by:
visitNamespaceStatementin interfaceVisitorCheck
-
visitFunctionDeclaration
public void visitFunctionDeclaration(FunctionDeclarationTree tree)
- Specified by:
visitFunctionDeclarationin interfaceVisitorCheck- Overrides:
visitFunctionDeclarationin classPHPVisitorCheck
-
visitFunctionExpression
public void visitFunctionExpression(FunctionExpressionTree tree)
- Specified by:
visitFunctionExpressionin interfaceVisitorCheck- Overrides:
visitFunctionExpressionin classPHPVisitorCheck
-
visitArrowFunctionExpression
public void visitArrowFunctionExpression(ArrowFunctionExpressionTree tree)
- Specified by:
visitArrowFunctionExpressionin interfaceVisitorCheck- Overrides:
visitArrowFunctionExpressionin classPHPVisitorCheck
-
visitMethodDeclaration
public void visitMethodDeclaration(MethodDeclarationTree tree)
- Specified by:
visitMethodDeclarationin interfaceVisitorCheck- Overrides:
visitMethodDeclarationin classPHPVisitorCheck
-
visitClassPropertyDeclaration
public void visitClassPropertyDeclaration(ClassPropertyDeclarationTree tree)
- Specified by:
visitClassPropertyDeclarationin interfaceVisitorCheck- Overrides:
visitClassPropertyDeclarationin classPHPVisitorCheck
-
visitParameterList
public void visitParameterList(ParameterListTree tree)
- Specified by:
visitParameterListin interfaceVisitorCheck- Overrides:
visitParameterListin classPHPVisitorCheck
-
visitClassDeclaration
public void visitClassDeclaration(ClassDeclarationTree tree)
- Specified by:
visitClassDeclarationin interfaceVisitorCheck- Overrides:
visitClassDeclarationin classPHPVisitorCheck
-
visitUseTraitDeclaration
public void visitUseTraitDeclaration(UseTraitDeclarationTree tree)
- Specified by:
visitUseTraitDeclarationin interfaceVisitorCheck- Overrides:
visitUseTraitDeclarationin classPHPVisitorCheck
-
visitAnonymousClass
public void visitAnonymousClass(AnonymousClassTree tree)
- Specified by:
visitAnonymousClassin interfaceVisitorCheck- Overrides:
visitAnonymousClassin classPHPVisitorCheck
-
visitConstDeclaration
public void visitConstDeclaration(ConstantDeclarationTree tree)
Description copied from interface:VisitorCheck[ START ] Statement- Specified by:
visitConstDeclarationin interfaceVisitorCheck- Overrides:
visitConstDeclarationin classPHPVisitorCheck
-
visitVariableIdentifier
public void visitVariableIdentifier(VariableIdentifierTree tree)
- Specified by:
visitVariableIdentifierin interfaceVisitorCheck- Overrides:
visitVariableIdentifierin classPHPVisitorCheck
-
visitToken
public void visitToken(SyntaxToken token)
- Specified by:
visitTokenin interfaceVisitorCheck- Overrides:
visitTokenin classPHPVisitorCheck
-
visitNameIdentifier
public void visitNameIdentifier(NameIdentifierTree tree)
- Specified by:
visitNameIdentifierin interfaceVisitorCheck- Overrides:
visitNameIdentifierin classPHPVisitorCheck
-
visitCompoundVariable
public void visitCompoundVariable(CompoundVariableTree tree)
- Specified by:
visitCompoundVariablein interfaceVisitorCheck- Overrides:
visitCompoundVariablein classPHPVisitorCheck
-
visitParameter
public void visitParameter(ParameterTree tree)
- Specified by:
visitParameterin interfaceVisitorCheck- Overrides:
visitParameterin classPHPVisitorCheck
-
visitGlobalStatement
public void visitGlobalStatement(GlobalStatementTree tree)
- Specified by:
visitGlobalStatementin interfaceVisitorCheck- Overrides:
visitGlobalStatementin classPHPVisitorCheck
-
visitStaticStatement
public void visitStaticStatement(StaticStatementTree tree)
- Specified by:
visitStaticStatementin interfaceVisitorCheck- Overrides:
visitStaticStatementin classPHPVisitorCheck
-
visitLexicalVariables
public void visitLexicalVariables(LexicalVariablesTree tree)
- Specified by:
visitLexicalVariablesin interfaceVisitorCheck- Overrides:
visitLexicalVariablesin classPHPVisitorCheck
-
visitNewExpression
public void visitNewExpression(NewExpressionTree tree)
- Specified by:
visitNewExpressionin interfaceVisitorCheck- Overrides:
visitNewExpressionin classPHPVisitorCheck
-
visitFunctionCall
public void visitFunctionCall(FunctionCallTree tree)
- Specified by:
visitFunctionCallin interfaceVisitorCheck- Overrides:
visitFunctionCallin classPHPVisitorCheck
-
visitMemberAccess
public void visitMemberAccess(MemberAccessTree tree)
- Specified by:
visitMemberAccessin interfaceVisitorCheck- Overrides:
visitMemberAccessin classPHPVisitorCheck
-
visitComputedVariable
public void visitComputedVariable(ComputedVariableTree tree)
- Specified by:
visitComputedVariablein interfaceVisitorCheck- Overrides:
visitComputedVariablein classPHPVisitorCheck
-
currentNamespace
public SymbolQualifiedName currentNamespace()
-
isBracketedNamespace
public boolean isBracketedNamespace(NamespaceStatementTree tree)
-
visitUseStatement
public void visitUseStatement(UseStatementTree tree)
- Specified by:
visitUseStatementin interfaceVisitorCheck- Overrides:
visitUseStatementin classPHPVisitorCheck
-
getFullyQualifiedName
public QualifiedName getFullyQualifiedName(NamespaceNameTree name, Symbol.Kind kind)
Resolution rules are defined in http://php.net/manual/en/language.namespaces.rules.phpIf unqualified name (see above link for definition) is a class symbol we resolve it in the current namespace. If it's a function we check if it's declared in current namespace, and if not we resolve as if it was in global namespace. This is imprecise heuristics, because function could be declared in current namespace, but in another source file, thus we will incorrectly consider such functions to be in the global namespace
-
-