From a6471e8a2608cbe29b26da7c442aff2ebe4de236 Mon Sep 17 00:00:00 2001 From: Oliver Burn Date: Wed, 16 Jul 2008 08:23:02 +0000 Subject: [PATCH] fix a bug found with inner definitions. --- build.xml | 1 + .../checkstyle/checks/naming/MethodNameCheck.java | 10 +++++++++- .../checkstyle/naming/InputMethodNameExtra.java | 14 ++++++++++++++ .../checks/naming/MethodNameCheckTest.java | 12 ++++++++++++ src/xdocs/releasenotes.xml | 2 +- 5 files changed, 37 insertions(+), 2 deletions(-) create mode 100644 src/testinputs/com/puppycrawl/tools/checkstyle/naming/InputMethodNameExtra.java diff --git a/build.xml b/build.xml index 371ac38c1..607d440a2 100644 --- a/build.xml +++ b/build.xml @@ -204,6 +204,7 @@ + diff --git a/src/checkstyle/com/puppycrawl/tools/checkstyle/checks/naming/MethodNameCheck.java b/src/checkstyle/com/puppycrawl/tools/checkstyle/checks/naming/MethodNameCheck.java index 5618669f8..8f9e4ea81 100644 --- a/src/checkstyle/com/puppycrawl/tools/checkstyle/checks/naming/MethodNameCheck.java +++ b/src/checkstyle/com/puppycrawl/tools/checkstyle/checks/naming/MethodNameCheck.java @@ -98,7 +98,15 @@ public class MethodNameCheck extends AbstractNameCheck final DetailAST classDefOrNew = aAst.getParent().getParent(); final DetailAST classIdent = classDefOrNew.findFirstToken(TokenTypes.IDENT); - if (method.getText().equals(classIdent.getText())) { + // Following logic is to handle when a classIdent can not be + // found. This is when you have a Literal_New keyword followed + // a DOT, which is when you have: + // new Outclass.InnerInterface(x) { ... } + // Such a rare case, will not have the logic to handle parsing + // down the tree looking for the first ident. + if ((null != classIdent) + && method.getText().equals(classIdent.getText())) + { log(method.getLineNo(), method.getColumnNo(), "method.name.equals.class.name", method.getText()); } diff --git a/src/testinputs/com/puppycrawl/tools/checkstyle/naming/InputMethodNameExtra.java b/src/testinputs/com/puppycrawl/tools/checkstyle/naming/InputMethodNameExtra.java new file mode 100644 index 000000000..b202bdffb --- /dev/null +++ b/src/testinputs/com/puppycrawl/tools/checkstyle/naming/InputMethodNameExtra.java @@ -0,0 +1,14 @@ +public class InputMethodNameExtra +{ + public void doit() + { + createNameHistoryDetails(historyDetails, previousNameService, entityId, + new More.ViewChangeHistoryBaseAction.ChangeHistoryDisplayName(agencyName) + { + String getDisplayName() + { + return getPreviousName(TypeOfName.AGENCY_NAME); + } + }); + } +} diff --git a/src/tests/com/puppycrawl/tools/checkstyle/checks/naming/MethodNameCheckTest.java b/src/tests/com/puppycrawl/tools/checkstyle/checks/naming/MethodNameCheckTest.java index 46ac90881..f400a91cf 100644 --- a/src/tests/com/puppycrawl/tools/checkstyle/checks/naming/MethodNameCheckTest.java +++ b/src/tests/com/puppycrawl/tools/checkstyle/checks/naming/MethodNameCheckTest.java @@ -60,4 +60,16 @@ public class MethodNameCheckTest verify(checkConfig, getPath("InputMethNameEqualClsName.java"), expected); } + + @Test + public void testForNpe() throws Exception + { + final DefaultConfiguration checkConfig = + createCheckConfig(MethodNameCheck.class); + + final String[] expected = { + }; + + verify(checkConfig, getPath("naming/InputMethodNameExtra.java"), expected); + } } diff --git a/src/xdocs/releasenotes.xml b/src/xdocs/releasenotes.xml index 3ed667d8a..075c6fd66 100755 --- a/src/xdocs/releasenotes.xml +++ b/src/xdocs/releasenotes.xml @@ -9,7 +9,7 @@ -
+

The 5.x release is developed using Java 5 and requires a Java 5 platform to run. If you need run a Java 1.4 or earlier, then use