aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/java/com/puppycrawl/tools/checkstyle/checks/naming/ParameterNameCheck.java17
-rw-r--r--src/test/java/com/puppycrawl/tools/checkstyle/checks/naming/ParameterNameCheckTest.java10
-rw-r--r--src/test/resources/com/puppycrawl/tools/checkstyle/checks/naming/InputOverrideAnnotationNoNPE.java27
3 files changed, 47 insertions, 7 deletions
diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/naming/ParameterNameCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/naming/ParameterNameCheck.java
index b5cf4a753..6e54b90f6 100644
--- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/naming/ParameterNameCheck.java
+++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/naming/ParameterNameCheck.java
@@ -19,6 +19,7 @@
package com.puppycrawl.tools.checkstyle.checks.naming;
+import com.google.common.base.Optional;
import com.puppycrawl.tools.checkstyle.api.DetailAST;
import com.puppycrawl.tools.checkstyle.api.TokenTypes;
@@ -117,14 +118,16 @@ public class ParameterNameCheck
*/
private static boolean isOverriddenMethod(DetailAST ast) {
boolean overridden = false;
+
final DetailAST parent = ast.getParent().getParent();
- if (parent.getFirstChild().getFirstChild() != null) {
- final DetailAST annotation = parent.getFirstChild().getFirstChild();
- if (annotation.getType() == TokenTypes.ANNOTATION) {
- final DetailAST overrideToken = annotation.findFirstToken(TokenTypes.IDENT);
- if ("Override".equals(overrideToken.getText())) {
- overridden = true;
- }
+ final Optional<DetailAST> annotation =
+ Optional.fromNullable(parent.getFirstChild().getFirstChild());
+
+ if (annotation.isPresent() && annotation.get().getType() == TokenTypes.ANNOTATION) {
+ final Optional<DetailAST> overrideToken =
+ Optional.fromNullable(annotation.get().findFirstToken(TokenTypes.IDENT));
+ if (overrideToken.isPresent() && "Override".equals(overrideToken.get().getText())) {
+ overridden = true;
}
}
return overridden;
diff --git a/src/test/java/com/puppycrawl/tools/checkstyle/checks/naming/ParameterNameCheckTest.java b/src/test/java/com/puppycrawl/tools/checkstyle/checks/naming/ParameterNameCheckTest.java
index 1c35fd32e..28b363d87 100644
--- a/src/test/java/com/puppycrawl/tools/checkstyle/checks/naming/ParameterNameCheckTest.java
+++ b/src/test/java/com/puppycrawl/tools/checkstyle/checks/naming/ParameterNameCheckTest.java
@@ -137,4 +137,14 @@ public class ParameterNameCheckTest
};
verify(checkConfig, getPath("InputOverrideAnnotation.java"), expected);
}
+
+ @Test
+ public void testIsOverriddenNoNullPointerException()
+ throws Exception {
+ final DefaultConfiguration checkConfig = createCheckConfig(ParameterNameCheck.class);
+ checkConfig.addAttribute("format", "^[a-z][a-zA-Z0-9]*$");
+ checkConfig.addAttribute("ignoreOverridden", "true");
+ final String[] expected = ArrayUtils.EMPTY_STRING_ARRAY;
+ verify(checkConfig, getPath("InputOverrideAnnotationNoNPE.java"), expected);
+ }
}
diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/checks/naming/InputOverrideAnnotationNoNPE.java b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/naming/InputOverrideAnnotationNoNPE.java
new file mode 100644
index 000000000..8295a120e
--- /dev/null
+++ b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/naming/InputOverrideAnnotationNoNPE.java
@@ -0,0 +1,27 @@
+package com.puppycrawl.tools.checkstyle.checks.naming;
+
+class InputOverrideAnnotationNoNPE
+{
+ // method with many parameters
+ void myMethod(int a, int b) {
+
+ }
+
+ // method with many parameters
+ void myMethod2(int a, int b) {
+
+ }
+}
+
+class Test extends InputOverrideAnnotationNoNPE
+{
+ @Override
+ void myMethod(int a, int b) {
+
+ }
+
+ @java.lang.Override
+ void myMethod2(int a, int b) {
+
+ }
+}