View Javadoc
1   /*
2    * SPDX-FileCopyrightText: Copyright (c) 2011-2026 Yegor Bugayenko
3    * SPDX-License-Identifier: MIT
4    */
5   package com.qulice.checkstyle;
6   
7   import com.puppycrawl.tools.checkstyle.api.AbstractCheck;
8   import com.puppycrawl.tools.checkstyle.api.DetailAST;
9   import com.puppycrawl.tools.checkstyle.api.FileContents;
10  import com.puppycrawl.tools.checkstyle.api.TextBlock;
11  import com.puppycrawl.tools.checkstyle.api.TokenTypes;
12  import com.puppycrawl.tools.checkstyle.utils.AnnotationUtil;
13  
14  /**
15   * Checks that there is no Javadoc for inherited methods.
16   * Users may have a different understanding of your method
17   * based on whether they examine the method in the supertype
18   * or the subtype and it may cause confusion.
19   *
20   * @since 0.16
21   */
22  public final class NoJavadocForOverriddenMethodsCheck extends AbstractCheck {
23  
24      /**
25       * Default constructor.
26       */
27      public NoJavadocForOverriddenMethodsCheck() {
28          // nothing to initialize
29      }
30  
31      @Override
32      public int[] getDefaultTokens() {
33          return new int[] {
34              TokenTypes.METHOD_DEF,
35          };
36      }
37  
38      @Override
39      public int[] getAcceptableTokens() {
40          return this.getDefaultTokens();
41      }
42  
43      @Override
44      public int[] getRequiredTokens() {
45          return this.getDefaultTokens();
46      }
47  
48      @Override
49      @SuppressWarnings("deprecation")
50      public void visitToken(final DetailAST ast) {
51          if (AnnotationUtil.containsAnnotation(ast, "Override")) {
52              final FileContents contents = getFileContents();
53              final TextBlock javadoc = contents.getJavadocBefore(
54                  ast.getLineNo()
55              );
56              if (javadoc != null) {
57                  log(ast, "Overridden methods should not have Javadoc");
58              }
59          }
60      }
61  }