/** * process modifiers * * @param ast ast of Modifiers */ private void processModifiers(DetailAST ast) { final ScopeState state = scopeStates.peek(); if (ast.findFirstToken(TokenTypes.LITERAL_STATIC) != null) { if (state.currentScopeState > STATE_STATIC_VARIABLE_DEF) { if (!ignoreModifiers || state.currentScopeState > STATE_INSTANCE_VARIABLE_DEF) { log(ast, MSG_STATIC); } } else { state.currentScopeState = STATE_STATIC_VARIABLE_DEF; } } else { if (state.currentScopeState > STATE_INSTANCE_VARIABLE_DEF) { log(ast, MSG_INSTANCE); } else if (state.currentScopeState == STATE_STATIC_VARIABLE_DEF) { state.declarationAccess = Scope.PUBLIC; state.currentScopeState = STATE_INSTANCE_VARIABLE_DEF; } } final Scope access = ScopeUtils.getScopeFromMods(ast); if (state.declarationAccess.compareTo(access) > 0) { if (!ignoreModifiers) { log(ast, MSG_ACCESS); } } else { state.declarationAccess = access; } }
@Override public void visitToken(DetailAST ast) { final int parentType = ast.getParent().getType(); switch (ast.getType()) { case TokenTypes.OBJBLOCK: scopeStates.push(new ScopeState()); break; case TokenTypes.MODIFIERS: if (parentType == TokenTypes.VARIABLE_DEF && ast.getParent().getParent().getType() == TokenTypes.OBJBLOCK) { processModifiers(ast); } break; case TokenTypes.CTOR_DEF: if (parentType == TokenTypes.OBJBLOCK) { processConstructor(ast); } break; case TokenTypes.METHOD_DEF: if (parentType == TokenTypes.OBJBLOCK) { final ScopeState state = scopeStates.peek(); // nothing can be bigger than method's state state.currentScopeState = STATE_METHOD_DEF; } break; default: break; } }
/** * process Method Token * * @param ast ,ethod token AST */ private void processMethod(DetailAST ast) { final ScopeState state = scopeStates.peek(); if (state.currentScopeState > STATE_METHOD_DEF) { if (!ignoreMethods) { log(ast, MSG_METHOD); } } else { state.currentScopeState = STATE_METHOD_DEF; } }
/** * process constructor * * @param ast constructor AST */ private void processConstructor(DetailAST ast) { final ScopeState state = scopeStates.peek(); if (state.currentScopeState > STATE_CTOR_DEF) { if (!ignoreConstructors) { log(ast, MSG_CONSTRUCTOR); } } else { state.currentScopeState = STATE_CTOR_DEF; } }