From f6a15cfb3c3c64d16c269bd8240722c7f9d7974e Mon Sep 17 00:00:00 2001 From: Andrei Paikin Date: Sun, 3 Apr 2022 08:41:41 +0300 Subject: [PATCH] Issue #11507: remove usages of getFileContents.inPackageInfo method, add getFilePath method to api --- config/suppressions.xml | 5 ----- pom.xml | 2 ++ .../tools/checkstyle/api/AbstractCheck.java | 9 +++++++++ .../puppycrawl/tools/checkstyle/api/FileContents.java | 5 ++++- .../checkstyle/checks/OuterTypeFilenameCheck.java | 8 +++----- .../checks/annotation/PackageAnnotationCheck.java | 7 ++----- .../checks/coding/PackageDeclarationCheck.java | 4 +--- .../checkstyle/checks/imports/ImportControlCheck.java | 2 +- .../checkstyle/checks/javadoc/JavadocStyleCheck.java | 8 ++------ .../checks/javadoc/MissingJavadocPackageCheck.java | 7 ++----- .../checks/whitespace/EmptyLineSeparatorCheck.java | 5 ++--- .../tools/checkstyle/meta/JavadocMetadataScraper.java | 11 ++--------- .../puppycrawl/tools/checkstyle/utils/CheckUtil.java | 10 ++++++++++ 13 files changed, 40 insertions(+), 43 deletions(-) diff --git a/config/suppressions.xml b/config/suppressions.xml index 650e3df997d..265318ac533 100644 --- a/config/suppressions.xml +++ b/config/suppressions.xml @@ -101,9 +101,7 @@ files="[\\/]src[\\/]xdocs[\\/]beginning_development.xml"/> - - @@ -111,7 +109,6 @@ - @@ -119,8 +116,6 @@ - - diff --git a/pom.xml b/pom.xml index efc713b87b6..eccb3bb9d58 100644 --- a/pom.xml +++ b/pom.xml @@ -3376,6 +3376,8 @@ com.puppycrawl.tools.checkstyle.api.* com.puppycrawl.tools.checkstyle.checks.coding.UnusedLocalVariableCheckTest + + com.puppycrawl.tools.checkstyle.checks.OuterTypeFilenameCheckTest *.Input* diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/api/AbstractCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/api/AbstractCheck.java index abf88f71dc9..22847dd213a 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/api/AbstractCheck.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/api/AbstractCheck.java @@ -298,6 +298,15 @@ public final String getLine(int index) { return context.get().fileContents.getLine(index); } + /** + * Returns full path to the file. + * + * @return full path to file. + */ + public final String getFilePath() { + return context.get().fileContents.getFileName(); + } + /** * Returns code point representation of file text from given line number. * diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/api/FileContents.java b/src/main/java/com/puppycrawl/tools/checkstyle/api/FileContents.java index 038771c316c..8fed7c0e592 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/api/FileContents.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/api/FileContents.java @@ -28,6 +28,7 @@ import java.util.regex.Pattern; import com.puppycrawl.tools.checkstyle.grammar.CommentListener; +import com.puppycrawl.tools.checkstyle.utils.CheckUtil; import com.puppycrawl.tools.checkstyle.utils.CommonUtil; /** @@ -328,9 +329,11 @@ public Map> getBlockComments() { * Checks if the current file is a package-info.java file. * * @return true if the package file. + * @deprecated use {@link CheckUtil#isPackageInfo(String)} for the same functionality, + * or use {@link AbstractCheck#getFilePath()} to process your own standards. */ + @Deprecated(since = "10.2") public boolean inPackageInfo() { return getFileName().endsWith("package-info.java"); } - } diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/OuterTypeFilenameCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/OuterTypeFilenameCheck.java index ed903b33aae..28293d3c734 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/OuterTypeFilenameCheck.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/OuterTypeFilenameCheck.java @@ -130,7 +130,7 @@ public int[] getRequiredTokens() { @Override public void beginTree(DetailAST rootAST) { - fileName = getFileName(); + fileName = getSourceFileName(); seenFirstToken = false; hasPublic = false; wrongType = null; @@ -167,10 +167,8 @@ public void finishTree(DetailAST rootAST) { * * @return source file name. */ - // suppress deprecation until https://github.com/checkstyle/checkstyle/issues/11166 - @SuppressWarnings("deprecation") - private String getFileName() { - String name = getFileContents().getFileName(); + private String getSourceFileName() { + String name = getFilePath(); name = name.substring(name.lastIndexOf(File.separatorChar) + 1); return FILE_EXTENSION_PATTERN.matcher(name).replaceAll(""); } diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/annotation/PackageAnnotationCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/annotation/PackageAnnotationCheck.java index 45c06dcdb3d..c248f9e9e33 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/annotation/PackageAnnotationCheck.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/annotation/PackageAnnotationCheck.java @@ -24,6 +24,7 @@ import com.puppycrawl.tools.checkstyle.api.DetailAST; import com.puppycrawl.tools.checkstyle.api.TokenTypes; import com.puppycrawl.tools.checkstyle.utils.AnnotationUtil; +import com.puppycrawl.tools.checkstyle.utils.CheckUtil; /** *

@@ -102,16 +103,12 @@ public int[] getAcceptableTokens() { return getRequiredTokens(); } - // suppress deprecation until https://github.com/checkstyle/checkstyle/issues/11166 - @SuppressWarnings("deprecation") @Override public void visitToken(final DetailAST ast) { final boolean containsAnnotation = AnnotationUtil.containsAnnotation(ast); - final boolean inPackageInfo = - getFileContents().inPackageInfo(); - if (containsAnnotation && !inPackageInfo) { + if (containsAnnotation && !CheckUtil.isPackageInfo(getFilePath())) { log(ast, MSG_KEY); } } diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/PackageDeclarationCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/PackageDeclarationCheck.java index ef712ae9a39..f0062ad7897 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/PackageDeclarationCheck.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/PackageDeclarationCheck.java @@ -179,10 +179,8 @@ public void visitToken(DetailAST ast) { * * @return Directory name. */ - // suppress deprecation until https://github.com/checkstyle/checkstyle/issues/11166 - @SuppressWarnings("deprecation") private String getDirectoryName() { - final String fileName = getFileContents().getFileName(); + final String fileName = getFilePath(); final int lastSeparatorPos = fileName.lastIndexOf(File.separatorChar); return fileName.substring(0, lastSeparatorPos); } diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/imports/ImportControlCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/imports/ImportControlCheck.java index 779818953f9..21fdbda1f51 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/imports/ImportControlCheck.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/imports/ImportControlCheck.java @@ -521,7 +521,7 @@ public int[] getRequiredTokens() { @Override public void beginTree(DetailAST rootAST) { currentImportControl = null; - processCurrentFile = path.matcher(getFileContents().getFileName()).find(); + processCurrentFile = path.matcher(getFilePath()).find(); fileName = getFileContents().getText().getFile().getName(); final int period = fileName.lastIndexOf('.'); diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocStyleCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocStyleCheck.java index 54a923d9d5f..7dd686b30e8 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocStyleCheck.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocStyleCheck.java @@ -416,13 +416,11 @@ public void visitToken(DetailAST ast) { * @param ast a given node. * @return whether we should check a given node. */ - // suppress deprecation until https://github.com/checkstyle/checkstyle/issues/11166 - @SuppressWarnings("deprecation") private boolean shouldCheck(final DetailAST ast) { boolean check = false; if (ast.getType() == TokenTypes.PACKAGE_DEF) { - check = getFileContents().inPackageInfo(); + check = CheckUtil.isPackageInfo(getFilePath()); } else if (!ScopeUtil.isInCodeBlock(ast)) { final Scope customScope = ScopeUtil.getScope(ast); @@ -447,15 +445,13 @@ else if (!ScopeUtil.isInCodeBlock(ast)) { * @see #checkFirstSentenceEnding(DetailAST, TextBlock) * @see #checkHtmlTags(DetailAST, TextBlock) */ - // suppress deprecation until https://github.com/checkstyle/checkstyle/issues/11166 - @SuppressWarnings("deprecation") private void checkComment(final DetailAST ast, final TextBlock comment) { if (comment == null) { // checking for missing docs in JavadocStyleCheck is not consistent // with the rest of CheckStyle... Even though, I didn't think it // made sense to make another check just to ensure that the // package-info.java file actually contains package Javadocs. - if (getFileContents().inPackageInfo()) { + if (CheckUtil.isPackageInfo(getFilePath())) { log(ast, MSG_JAVADOC_MISSING); } } diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/javadoc/MissingJavadocPackageCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/javadoc/MissingJavadocPackageCheck.java index af28e2d9c35..d358eaac641 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/javadoc/MissingJavadocPackageCheck.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/javadoc/MissingJavadocPackageCheck.java @@ -24,8 +24,8 @@ import com.puppycrawl.tools.checkstyle.StatelessCheck; import com.puppycrawl.tools.checkstyle.api.AbstractCheck; import com.puppycrawl.tools.checkstyle.api.DetailAST; -import com.puppycrawl.tools.checkstyle.api.FileContents; import com.puppycrawl.tools.checkstyle.api.TokenTypes; +import com.puppycrawl.tools.checkstyle.utils.CheckUtil; import com.puppycrawl.tools.checkstyle.utils.JavadocUtil; /** @@ -99,12 +99,9 @@ public boolean isCommentNodesRequired() { return true; } - // suppress deprecation until https://github.com/checkstyle/checkstyle/issues/11166 - @SuppressWarnings("deprecation") @Override public void visitToken(DetailAST ast) { - final FileContents contents = getFileContents(); - if (contents.inPackageInfo() && !hasJavadoc(ast)) { + if (CheckUtil.isPackageInfo(getFilePath()) && !hasJavadoc(ast)) { log(ast, MSG_PKG_JAVADOC_MISSING); } } diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/whitespace/EmptyLineSeparatorCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/whitespace/EmptyLineSeparatorCheck.java index e6846e2c3af..648210b0b5f 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/whitespace/EmptyLineSeparatorCheck.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/whitespace/EmptyLineSeparatorCheck.java @@ -29,6 +29,7 @@ import com.puppycrawl.tools.checkstyle.api.DetailAST; import com.puppycrawl.tools.checkstyle.api.FileContents; import com.puppycrawl.tools.checkstyle.api.TokenTypes; +import com.puppycrawl.tools.checkstyle.utils.CheckUtil; import com.puppycrawl.tools.checkstyle.utils.CommonUtil; import com.puppycrawl.tools.checkstyle.utils.JavadocUtil; import com.puppycrawl.tools.checkstyle.utils.TokenUtil; @@ -641,11 +642,9 @@ private boolean hasMultipleLinesBefore(DetailAST ast) { * @param ast token * @param nextToken next token */ - // suppress deprecation until https://github.com/checkstyle/checkstyle/issues/11166 - @SuppressWarnings("deprecation") private void processPackage(DetailAST ast, DetailAST nextToken) { if (ast.getLineNo() > 1 && !hasEmptyLineBefore(ast)) { - if (getFileContents().getFileName().endsWith("package-info.java")) { + if (CheckUtil.isPackageInfo(getFilePath())) { if (!ast.getFirstChild().hasChildren() && !isPrecededByJavadoc(ast)) { log(ast, MSG_SHOULD_BE_SEPARATED, ast.getText()); } diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/meta/JavadocMetadataScraper.java b/src/main/java/com/puppycrawl/tools/checkstyle/meta/JavadocMetadataScraper.java index 828e3414591..f25cdfd05a5 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/meta/JavadocMetadataScraper.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/meta/JavadocMetadataScraper.java @@ -48,8 +48,6 @@ /** * Class for scraping module metadata from the corresponding class' class-level javadoc. */ -// suppress deprecation until https://github.com/checkstyle/checkstyle/issues/11166 -@SuppressWarnings("deprecation") @FileStatefulCheck public class JavadocMetadataScraper extends AbstractJavadocCheck { @@ -188,8 +186,6 @@ public int[] getRequiredJavadocTokens() { return getAcceptableJavadocTokens(); } - // suppress deprecation until https://github.com/checkstyle/checkstyle/issues/11166 - @SuppressWarnings("deprecation") @Override public void beginJavadocTree(DetailNode rootAst) { if (isTopLevelClassJavadoc()) { @@ -200,7 +196,6 @@ public void beginJavadocTree(DetailNode rootAst) { exampleSectionStartIdx = -1; parentSectionStartIdx = -1; - final String filePath = getFileContents().getFileName(); String moduleName = getModuleSimpleName(); final String checkModuleExtension = "Check"; if (moduleName.endsWith(checkModuleExtension)) { @@ -208,7 +203,7 @@ public void beginJavadocTree(DetailNode rootAst) { .substring(0, moduleName.length() - checkModuleExtension.length()); } moduleDetails.setName(moduleName); - moduleDetails.setFullQualifiedName(getPackageName(filePath)); + moduleDetails.setFullQualifiedName(getPackageName(getFilePath())); moduleDetails.setModuleType(getModuleType()); } } @@ -596,10 +591,8 @@ else if (simpleModuleName.endsWith("Filter")) { * * @return simple module name */ - // suppress deprecation until https://github.com/checkstyle/checkstyle/issues/11166 - @SuppressWarnings("deprecation") private String getModuleSimpleName() { - final String fullFileName = getFileContents().getFileName(); + final String fullFileName = getFilePath(); final String[] pathTokens = FILE_SEPARATOR_PATTERN.split(fullFileName); final String fileName = pathTokens[pathTokens.length - 1]; return fileName.substring(0, fileName.length() - JAVA_FILE_EXTENSION.length()); diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/utils/CheckUtil.java b/src/main/java/com/puppycrawl/tools/checkstyle/utils/CheckUtil.java index 9c30b87855a..a0517cba97f 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/utils/CheckUtil.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/utils/CheckUtil.java @@ -680,4 +680,14 @@ public static String getShortNameOfAnonInnerClass(DetailAST literalNewAst) { final DetailAST firstChild = parentAst.getFirstChild(); return extractQualifiedName(firstChild); } + + /** + * Checks if the given file path is a package-info.java file. + * + * @param filePath path to the file. + * @return true if the package file. + */ + public static boolean isPackageInfo(String filePath) { + return filePath.endsWith("package-info.java"); + } }