@Override public void visitToken(DetailAST detailAST) { DetailAST firstChildAST = detailAST.getFirstChild(); if ((firstChildAST == null) || (firstChildAST.getType() == TokenTypes.DOT)) { return; } DetailAST parentAST = detailAST.getParent(); DetailAST nameAST = null; if (parentAST.getType() == TokenTypes.EXPR) { nameAST = detailAST.findFirstToken(TokenTypes.IDENT); } else if (parentAST.getType() == TokenTypes.VARIABLE_DEF) { nameAST = parentAST.findFirstToken(TokenTypes.IDENT); } if (nameAST == null) { return; } _checkMissingEmptyLineAfterReferencingVariable( parentAST, nameAST.getText(), DetailASTUtil.getEndLine(detailAST)); _checkMissingEmptyLineBetweenAssigningAndUsingVariable( parentAST, nameAST.getText(), DetailASTUtil.getEndLine(detailAST)); }
private void _checkMissingEmptyLineAfterReferencingVariable( DetailAST detailAST, String name, int endLine) { boolean isReferenced = false; DetailAST nextSibling = detailAST.getNextSibling(); while (true) { if ((nextSibling == null) || (nextSibling.getType() != TokenTypes.SEMI)) { return; } nextSibling = nextSibling.getNextSibling(); if ((nextSibling == null) || ((nextSibling.getType() != TokenTypes.EXPR) && (nextSibling.getType() != TokenTypes.VARIABLE_DEF))) { return; } boolean expressionReferencesVariable = false; List<DetailAST> identASTList = DetailASTUtil.getAllChildTokens(nextSibling, true, TokenTypes.IDENT); for (DetailAST identAST : identASTList) { String identName = identAST.getText(); if (identName.equals(name)) { expressionReferencesVariable = true; } } if (!expressionReferencesVariable) { if (isReferenced) { int startLineNextExpression = DetailASTUtil.getStartLine(nextSibling); if ((endLine + 1) == startLineNextExpression) { log( startLineNextExpression, MSG_MISSING_EMPTY_LINE_AFTER_VARIABLE_REFERENCE, startLineNextExpression, name); } } return; } isReferenced = true; endLine = DetailASTUtil.getEndLine(nextSibling); nextSibling = nextSibling.getNextSibling(); } }