diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/ReflectionForUnavailableAnnotationInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/ReflectionForUnavailableAnnotationInspection.java index dff665fbe5e8..f13ac0f4fd8d 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/ReflectionForUnavailableAnnotationInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/ReflectionForUnavailableAnnotationInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2006-2010 Dave Griffith, Bas Leijdekkers + * Copyright 2006-2012 Dave Griffith, Bas Leijdekkers * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,21 +23,18 @@ import com.siyeh.ig.psiutils.TypeUtils; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; -public class ReflectionForUnavailableAnnotationInspection - extends BaseInspection { +public class ReflectionForUnavailableAnnotationInspection extends BaseInspection { @Override @NotNull public String getDisplayName() { - return InspectionGadgetsBundle.message( - "reflection.for.unavailable.annotation.display.name"); + return InspectionGadgetsBundle.message("reflection.for.unavailable.annotation.display.name"); } @Override @NotNull public String buildErrorString(Object... infos) { - return InspectionGadgetsBundle.message( - "reflection.for.unavailable.annotation.problem.descriptor"); + return InspectionGadgetsBundle.message("reflection.for.unavailable.annotation.problem.descriptor"); } @Override @@ -50,19 +47,14 @@ public class ReflectionForUnavailableAnnotationInspection return new ReflectionForUnavailableAnnotationVisitor(); } - private static class ReflectionForUnavailableAnnotationVisitor - extends BaseInspectionVisitor { + private static class ReflectionForUnavailableAnnotationVisitor extends BaseInspectionVisitor { @Override - public void visitMethodCallExpression( - @NotNull PsiMethodCallExpression expression) { + public void visitMethodCallExpression(@NotNull PsiMethodCallExpression expression) { super.visitMethodCallExpression(expression); - final PsiReferenceExpression methodExpression = - expression.getMethodExpression(); - @NonNls final String methodName = - methodExpression.getReferenceName(); - if (!"isAnnotationPresent".equals(methodName) && - !"getAnnotation".equals(methodName)) { + final PsiReferenceExpression methodExpression = expression.getMethodExpression(); + @NonNls final String methodName = methodExpression.getReferenceName(); + if (!"isAnnotationPresent".equals(methodName) && !"getAnnotation".equals(methodName)) { return; } final PsiExpressionList argumentList = expression.getArgumentList(); @@ -77,36 +69,28 @@ public class ReflectionForUnavailableAnnotationInspection if (!(arg instanceof PsiClassObjectAccessExpression)) { return; } - final PsiExpression qualifier = - methodExpression.getQualifierExpression(); - if (!TypeUtils.expressionHasTypeOrSubtype(qualifier, - "java.lang.reflect.AnnotatedElement")) { + final PsiExpression qualifier = methodExpression.getQualifierExpression(); + if (!TypeUtils.expressionHasTypeOrSubtype(qualifier, "java.lang.reflect.AnnotatedElement")) { return; } - final PsiClassObjectAccessExpression classObjectAccessExpression = - (PsiClassObjectAccessExpression)arg; - final PsiTypeElement operand = - classObjectAccessExpression.getOperand(); + final PsiClassObjectAccessExpression classObjectAccessExpression = (PsiClassObjectAccessExpression)arg; + final PsiTypeElement operand = classObjectAccessExpression.getOperand(); - final PsiClassType annotationClassType = - (PsiClassType)operand.getType(); + final PsiClassType annotationClassType = (PsiClassType)operand.getType(); final PsiClass annotationClass = annotationClassType.resolve(); if (annotationClass == null) { return; } - final PsiModifierList modifierList = - annotationClass.getModifierList(); + final PsiModifierList modifierList = annotationClass.getModifierList(); if (modifierList == null) { return; } - final PsiAnnotation retentionAnnotation = - modifierList.findAnnotation("java.lang.annotation.Retention"); + final PsiAnnotation retentionAnnotation = modifierList.findAnnotation("java.lang.annotation.Retention"); if (retentionAnnotation == null) { registerError(arg); return; } - final PsiAnnotationParameterList parameters = - retentionAnnotation.getParameterList(); + final PsiAnnotationParameterList parameters = retentionAnnotation.getParameterList(); final PsiNameValuePair[] attributes = parameters.getAttributes(); for (PsiNameValuePair attribute : attributes) { @NonNls final String name = attribute.getName(); @@ -114,6 +98,9 @@ public class ReflectionForUnavailableAnnotationInspection continue; } final PsiAnnotationMemberValue value = attribute.getValue(); + if (value == null) { + continue; + } @NonNls final String text = value.getText(); if (!text.contains("RUNTIME")) { registerError(arg);