diff --git a/docs/config_naming.html b/docs/config_naming.html index c64149006..5eb533c46 100644 --- a/docs/config_naming.html +++ b/docs/config_naming.html @@ -58,7 +58,8 @@
+ <module name="LocalVariableName"> + <property name="format" value="^e[a-zA-Z0-9]*$"/> + <property name="tokens" value="PARAMETER_DEF"/> + </module> ++
* Checks that local, non-final variable names conform to a format specified - * by the format property. The format is a + * by the format property. A catch parameter is considered to be + * a local variable. The format is a * * regular expression * and defaults to @@ -61,7 +62,10 @@ public class LocalVariableNameCheck /** @see com.puppycrawl.tools.checkstyle.api.Check */ public int[] getDefaultTokens() { - return new int[] {TokenTypes.VARIABLE_DEF}; + return new int[] { + TokenTypes.VARIABLE_DEF, + TokenTypes.PARAMETER_DEF, + }; } /** @see com.puppycrawl.tools.checkstyle.checks.AbstractNameCheck */ @@ -71,7 +75,6 @@ public class LocalVariableNameCheck aAST.findFirstToken(TokenTypes.MODIFIERS); final boolean isFinal = (modifiersAST != null) && modifiersAST.branchContains(TokenTypes.FINAL); - - return (!isFinal && ScopeUtils.inCodeBlock(aAST)); + return (!isFinal && ScopeUtils.isLocalVariableDef(aAST)); } } diff --git a/src/checkstyle/com/puppycrawl/tools/checkstyle/checks/MemberNameCheck.java b/src/checkstyle/com/puppycrawl/tools/checkstyle/checks/MemberNameCheck.java index c3a4d7bc7..096894120 100644 --- a/src/checkstyle/com/puppycrawl/tools/checkstyle/checks/MemberNameCheck.java +++ b/src/checkstyle/com/puppycrawl/tools/checkstyle/checks/MemberNameCheck.java @@ -73,6 +73,6 @@ public class MemberNameCheck && modifiersAST.branchContains(TokenTypes.LITERAL_STATIC); return (!isStatic && !ScopeUtils.inInterfaceBlock(aAST) - && !ScopeUtils.inCodeBlock(aAST)); + && !ScopeUtils.isLocalVariableDef(aAST)); } } diff --git a/src/testinputs/com/puppycrawl/tools/checkstyle/InputInner.java b/src/testinputs/com/puppycrawl/tools/checkstyle/InputInner.java index 0f6f374b5..ca66e4077 100644 --- a/src/testinputs/com/puppycrawl/tools/checkstyle/InputInner.java +++ b/src/testinputs/com/puppycrawl/tools/checkstyle/InputInner.java @@ -41,4 +41,19 @@ class InputInner protected static Object sWeird = new Object(); /** demonstrate bug in handling static final **/ static Object sWeird2 = new Object(); + + /** demonstrate bug in local final variable */ + public interface Inter + { + } + + public static void main() + { + Inter m = new Inter() + { + private static final int CDS = 1; + + private int ABC; + }; + } } diff --git a/src/tests/com/puppycrawl/tools/checkstyle/checks/LocalFinalVariableNameCheckTest.java b/src/tests/com/puppycrawl/tools/checkstyle/checks/LocalFinalVariableNameCheckTest.java index 5b214b124..64c15bc30 100644 --- a/src/tests/com/puppycrawl/tools/checkstyle/checks/LocalFinalVariableNameCheckTest.java +++ b/src/tests/com/puppycrawl/tools/checkstyle/checks/LocalFinalVariableNameCheckTest.java @@ -28,5 +28,14 @@ public class LocalFinalVariableNameCheckTest }; verify(checkConfig, getPath("InputSimple.java"), expected); } + + public void testInnerClass() + throws Exception + { + final DefaultConfiguration checkConfig = + createCheckConfig(LocalFinalVariableNameCheck.class); + final String[] expected = {}; + verify(checkConfig, getPath("InputInner.java"), expected); + } } diff --git a/src/tests/com/puppycrawl/tools/checkstyle/checks/LocalVariableNameCheckTest.java b/src/tests/com/puppycrawl/tools/checkstyle/checks/LocalVariableNameCheckTest.java index ed57fc0d9..2aaa7c2f1 100644 --- a/src/tests/com/puppycrawl/tools/checkstyle/checks/LocalVariableNameCheckTest.java +++ b/src/tests/com/puppycrawl/tools/checkstyle/checks/LocalVariableNameCheckTest.java @@ -18,5 +18,27 @@ public class LocalVariableNameCheckTest }; verify(checkConfig, getPath("InputSimple.java"), expected); } + + public void testInnerClass() + throws Exception + { + final DefaultConfiguration checkConfig = + createCheckConfig(LocalVariableNameCheck.class); + final String[] expected = {}; + verify(checkConfig, getPath("InputInner.java"), expected); + } + + public void testCatchParameter() + throws Exception + { + final DefaultConfiguration checkConfig = + createCheckConfig(LocalVariableNameCheck.class); + checkConfig.addAttribute("tokens", "PARAMETER_DEF"); + checkConfig.addAttribute("format", "^e$"); + final String[] expected = { + "74:24: Name 'ex' must match pattern '^e$'.", + }; + verify(checkConfig, getPath("InputEmptyStatement.java"), expected); + } } diff --git a/src/tests/com/puppycrawl/tools/checkstyle/checks/MemberNameCheckTest.java b/src/tests/com/puppycrawl/tools/checkstyle/checks/MemberNameCheckTest.java index e66813f03..5808efb04 100644 --- a/src/tests/com/puppycrawl/tools/checkstyle/checks/MemberNameCheckTest.java +++ b/src/tests/com/puppycrawl/tools/checkstyle/checks/MemberNameCheckTest.java @@ -17,5 +17,16 @@ public class MemberNameCheckTest }; verify(checkConfig, getPath("InputSimple.java"), expected); } + + public void testInnerClass() + throws Exception + { + final DefaultConfiguration checkConfig = + createCheckConfig(MemberNameCheck.class); + final String[] expected = { + "56:25: Name 'ABC' must match pattern '^[a-z][a-zA-Z0-9]*$'.", + }; + verify(checkConfig, getPath("InputInner.java"), expected); + } }