コード例 #1
0
  @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));
  }
コード例 #2
0
  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();
    }
  }