From 3fe171ec8a04a7606dfc92498798e1139e8dec05 Mon Sep 17 00:00:00 2001 From: rnveach Date: Fri, 6 Nov 2015 14:42:29 -0500 Subject: [PATCH] Issue #2451: removed excess hierarchy from NoFinalizerCheck --- .../checks/coding/NoFinalizerCheck.java | 41 ++++++++++++++++--- 1 file changed, 35 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/NoFinalizerCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/NoFinalizerCheck.java index a5fe02d10..754f6f77b 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/NoFinalizerCheck.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/NoFinalizerCheck.java @@ -19,6 +19,10 @@ package com.puppycrawl.tools.checkstyle.checks.coding; +import com.puppycrawl.tools.checkstyle.api.Check; +import com.puppycrawl.tools.checkstyle.api.DetailAST; +import com.puppycrawl.tools.checkstyle.api.TokenTypes; + /** * Checks that no method having zero parameters is defined * using the name finalize. @@ -27,7 +31,7 @@ package com.puppycrawl.tools.checkstyle.checks.coding; * @author smckay@google.com (Steve McKay) * @author lkuehne */ -public class NoFinalizerCheck extends AbstractIllegalMethodCheck { +public class NoFinalizerCheck extends Check { /** * A key is pointing to the warning message text in "messages.properties" @@ -35,10 +39,35 @@ public class NoFinalizerCheck extends AbstractIllegalMethodCheck { */ public static final String MSG_KEY = "avoid.finalizer.method"; - /** - * Creates an instance. - */ - public NoFinalizerCheck() { - super("finalize", MSG_KEY); + @Override + public int[] getDefaultTokens() { + return getAcceptableTokens(); + } + + @Override + public int[] getAcceptableTokens() { + return new int[] {TokenTypes.METHOD_DEF}; + } + + @Override + public int[] getRequiredTokens() { + return getAcceptableTokens(); + } + + @Override + public void visitToken(DetailAST aAST) { + final DetailAST mid = aAST.findFirstToken(TokenTypes.IDENT); + final String name = mid.getText(); + + if ("finalize".equals(name)) { + + final DetailAST params = aAST.findFirstToken(TokenTypes.PARAMETERS); + final boolean hasEmptyParamList = + !params.branchContains(TokenTypes.PARAMETER_DEF); + + if (hasEmptyParamList) { + log(aAST.getLineNo(), MSG_KEY); + } + } } }