From 03a24c2e44dbc49721c7c4a6e4e82d7907a601ee Mon Sep 17 00:00:00 2001 From: rnveach Date: Fri, 6 Nov 2015 14:15:55 -0500 Subject: [PATCH] Issue #2451: removed excess hierarchy from NoCloneCheck --- .../checks/coding/NoCloneCheck.java | 41 ++++++++++++++++--- 1 file changed, 35 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/NoCloneCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/NoCloneCheck.java index d30e3a63d..b70b9bae8 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/NoCloneCheck.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/NoCloneCheck.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 the clone method is not overridden from the @@ -112,7 +116,7 @@ package com.puppycrawl.tools.checkstyle.checks.coding; * @author Travis Schneeberger * @see Object#clone() */ -public class NoCloneCheck extends AbstractIllegalMethodCheck { +public class NoCloneCheck extends Check { /** * A key is pointing to the warning message text in "messages.properties" @@ -120,10 +124,35 @@ public class NoCloneCheck extends AbstractIllegalMethodCheck { */ public static final String MSG_KEY = "avoid.clone.method"; - /** - * Creates an instance. - */ - public NoCloneCheck() { - super("clone", 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 ("clone".equals(name)) { + + final DetailAST params = aAST.findFirstToken(TokenTypes.PARAMETERS); + final boolean hasEmptyParamList = + !params.branchContains(TokenTypes.PARAMETER_DEF); + + if (hasEmptyParamList) { + log(aAST.getLineNo(), MSG_KEY); + } + } } }