diff options
Diffstat (limited to 'plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style')
5 files changed, 67 insertions, 59 deletions
diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/SimplifiableAnnotationInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/SimplifiableAnnotationInspection.java index 794716ba0412..e45f06cac284 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/SimplifiableAnnotationInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/SimplifiableAnnotationInspection.java @@ -16,9 +16,10 @@ package com.siyeh.ig.style; import com.intellij.codeInspection.ProblemDescriptor; +import com.intellij.codeInspection.ProblemHighlightType; import com.intellij.openapi.project.Project; -import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.*; +import com.intellij.psi.util.PsiTreeUtil; import com.intellij.psi.util.PsiUtilCore; import com.intellij.psi.util.TypeConversionUtil; import com.intellij.util.IncorrectOperationException; @@ -46,30 +47,30 @@ public class SimplifiableAnnotationInspection extends BaseInspection { @NotNull @Override protected String buildErrorString(Object... infos) { - return InspectionGadgetsBundle.message("simplifiable.annotation.problem.descriptor"); + if (((Boolean)infos[0]).booleanValue()) { + return InspectionGadgetsBundle.message("simplifiable.annotation.whitespace.problem.descriptor"); + } + else { + return InspectionGadgetsBundle.message("simplifiable.annotation.problem.descriptor"); + } } @Override protected InspectionGadgetsFix buildFix(Object... infos) { - final PsiAnnotation annotation = (PsiAnnotation)infos[0]; - return new SimplifiableAnnotationFix(annotation); + return new SimplifiableAnnotationFix(); } private static class SimplifiableAnnotationFix extends InspectionGadgetsFix { - private final String replacement; - - public SimplifiableAnnotationFix(PsiAnnotation annotation) { - this.replacement = buildAnnotationText(annotation, new StringBuilder()).toString(); - } + public SimplifiableAnnotationFix() {} @Override @NotNull public String getName() { - return InspectionGadgetsBundle.message("simplifiable.annotation.quickfix", - StringUtil.shortenTextWithEllipsis(replacement, 50, 0, true)); + return InspectionGadgetsBundle.message("simplifiable.annotation.quickfix"); } - @Override + + @Override @NotNull public String getFamilyName() { return getName(); @@ -78,23 +79,25 @@ public class SimplifiableAnnotationInspection extends BaseInspection { @Override protected void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException { final PsiElement element = descriptor.getPsiElement(); - if (!(element instanceof PsiAnnotation)) { + final PsiAnnotation annotation = PsiTreeUtil.getParentOfType(element, PsiAnnotation.class); + if (annotation == null) { return; } final PsiElementFactory factory = JavaPsiFacade.getElementFactory(project); - final PsiAnnotation annotation = factory.createAnnotationFromText(replacement, element); - element.replace(annotation); + final String annotationText = buildAnnotationText(annotation); + final PsiAnnotation newAnnotation = factory.createAnnotationFromText(annotationText, element); + annotation.replace(newAnnotation); } - private static StringBuilder buildAnnotationText(PsiAnnotation annotation, StringBuilder out) { - out.append('@'); + private static String buildAnnotationText(PsiAnnotation annotation) { + final StringBuilder out = new StringBuilder("@"); final PsiJavaCodeReferenceElement nameReferenceElement = annotation.getNameReferenceElement(); assert nameReferenceElement != null; out.append(nameReferenceElement.getText()); final PsiAnnotationParameterList parameterList = annotation.getParameterList(); final PsiNameValuePair[] attributes = parameterList.getAttributes(); if (attributes.length == 0) { - return out; + return out.toString(); } out.append('('); if (attributes.length == 1) { @@ -116,7 +119,7 @@ public class SimplifiableAnnotationInspection extends BaseInspection { } } out.append(')'); - return out; + return out.toString(); } private static StringBuilder buildAttributeValueText(PsiAnnotationMemberValue value, StringBuilder out) { @@ -128,7 +131,7 @@ public class SimplifiableAnnotationInspection extends BaseInspection { } } else if (value instanceof PsiAnnotation) { - return buildAnnotationText((PsiAnnotation)value, out); + return out.append(buildAnnotationText((PsiAnnotation)value)); } return out.append(value.getText()); } @@ -151,36 +154,36 @@ public class SimplifiableAnnotationInspection extends BaseInspection { } final PsiNameValuePair[] attributes = parameterList.getAttributes(); final PsiElement[] annotationChildren = annotation.getChildren(); - if (annotationChildren.length >= 2 && annotationChildren[1] instanceof PsiWhiteSpace) { - if (!containsError(annotation)) { - registerError(annotation, annotation); - } + if (annotationChildren.length >= 2 && annotationChildren[1] instanceof PsiWhiteSpace && !containsError(annotation)) { + registerError(annotationChildren[1], Boolean.TRUE); } - else if (attributes.length == 0) { - final PsiElement[] children = parameterList.getChildren(); - if (children.length <= 0) { - return; - } - if (!containsError(annotation)) { - registerError(annotation, annotation); + if (attributes.length == 0) { + if (parameterList.getChildren().length > 0 && !containsError(annotation)) { + registerError(parameterList, ProblemHighlightType.LIKE_UNUSED_SYMBOL, Boolean.FALSE); } } else if (attributes.length == 1) { final PsiNameValuePair attribute = attributes[0]; - @NonNls final String name = attribute.getName(); + final PsiIdentifier identifier = attribute.getNameIdentifier(); final PsiAnnotationMemberValue attributeValue = attribute.getValue(); - if (!PsiAnnotation.DEFAULT_REFERENCED_METHOD_NAME.equals(name)) { - if (!(attributeValue instanceof PsiArrayInitializerMemberValue)) { - return; - } - final PsiArrayInitializerMemberValue arrayValue = (PsiArrayInitializerMemberValue)attributeValue; - final PsiAnnotationMemberValue[] initializers = arrayValue.getInitializers(); - if (initializers.length != 1) { - return; + if (identifier != null && attributeValue != null) { + @NonNls final String name = attribute.getName(); + if (PsiAnnotation.DEFAULT_REFERENCED_METHOD_NAME.equals(name) && !containsError(annotation)) { + registerErrorAtOffset(attribute, 0, attributeValue.getStartOffsetInParent(), ProblemHighlightType.LIKE_UNUSED_SYMBOL, + Boolean.FALSE); } } + if (!(attributeValue instanceof PsiArrayInitializerMemberValue)) { + return; + } + final PsiArrayInitializerMemberValue arrayValue = (PsiArrayInitializerMemberValue)attributeValue; + final PsiAnnotationMemberValue[] initializers = arrayValue.getInitializers(); + if (initializers.length != 1) { + return; + } if (!containsError(annotation)) { - registerError(annotation, annotation); + registerError(arrayValue.getFirstChild(), ProblemHighlightType.LIKE_UNUSED_SYMBOL, Boolean.FALSE); + registerError(arrayValue.getLastChild(), ProblemHighlightType.LIKE_UNUSED_SYMBOL, Boolean.FALSE); } } else if (attributes.length > 1) { @@ -189,15 +192,15 @@ public class SimplifiableAnnotationInspection extends BaseInspection { if (!(value instanceof PsiArrayInitializerMemberValue)) { continue; } - final PsiArrayInitializerMemberValue arrayInitializerMemberValue = (PsiArrayInitializerMemberValue)value; - final PsiAnnotationMemberValue[] initializers = arrayInitializerMemberValue.getInitializers(); + final PsiArrayInitializerMemberValue arrayValue = (PsiArrayInitializerMemberValue)value; + final PsiAnnotationMemberValue[] initializers = arrayValue.getInitializers(); if (initializers.length != 1) { continue; } if (!containsError(annotation)) { - registerError(annotation, annotation); + registerError(arrayValue.getFirstChild(), ProblemHighlightType.LIKE_UNUSED_SYMBOL, Boolean.FALSE); + registerError(arrayValue.getLastChild(), ProblemHighlightType.LIKE_UNUSED_SYMBOL, Boolean.FALSE); } - return; } } } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/StringBufferReplaceableByStringInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/StringBufferReplaceableByStringInspection.java index 4747e7426fd7..70b620f9434c 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/StringBufferReplaceableByStringInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/StringBufferReplaceableByStringInspection.java @@ -20,7 +20,6 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.*; import com.intellij.psi.util.PsiTreeUtil; -import com.intellij.util.IncorrectOperationException; import com.intellij.util.containers.ContainerUtil; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; @@ -86,7 +85,7 @@ public class StringBufferReplaceableByStringInspection extends BaseInspection { } @Override - protected void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException { + protected void doFix(Project project, ProblemDescriptor descriptor) { final PsiElement element = descriptor.getPsiElement(); final PsiElement parent = element.getParent(); if (!(parent instanceof PsiVariable)) { @@ -290,6 +289,9 @@ public class StringBufferReplaceableByStringInspection extends BaseInspection { methodCallExpression = (PsiMethodCallExpression)grandParent; parent = methodCallExpression.getParent(); grandParent = parent.getParent(); + if ("toString".equals(methodCallExpression.getMethodExpression().getReferenceName())) { + break; + } } if (buildStringExpression(methodCallExpression, myBuilder) == null) { myProblem = true; diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnnecessaryEnumModifierInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnnecessaryEnumModifierInspection.java index 2aa72fae7bbe..7d8d9558ef53 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnnecessaryEnumModifierInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnnecessaryEnumModifierInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2012 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2014 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. @@ -17,6 +17,7 @@ package com.siyeh.ig.style; import com.intellij.codeInspection.CleanupLocalInspectionTool; import com.intellij.codeInspection.ProblemDescriptor; +import com.intellij.codeInspection.ProblemHighlightType; import com.intellij.openapi.project.Project; import com.intellij.psi.*; import com.intellij.util.IncorrectOperationException; @@ -112,7 +113,7 @@ public class UnnecessaryEnumModifierInspection extends BaseInspection implements for (final PsiElement child : children) { final String text = child.getText(); if (PsiModifier.STATIC.equals(text)) { - registerError(child, child, aClass); + registerError(child, ProblemHighlightType.LIKE_UNUSED_SYMBOL, child, aClass); } } } @@ -131,7 +132,7 @@ public class UnnecessaryEnumModifierInspection extends BaseInspection implements for (final PsiElement child : children) { final String text = child.getText(); if (PsiModifier.PRIVATE.equals(text)) { - registerError(child, child, method); + registerError(child, ProblemHighlightType.LIKE_UNUSED_SYMBOL, child, method); } } } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnnecessaryInterfaceModifierInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnnecessaryInterfaceModifierInspection.java index 310cc20c30b6..a0718c07fa8f 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnnecessaryInterfaceModifierInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnnecessaryInterfaceModifierInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2012 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2014 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. @@ -17,6 +17,7 @@ package com.siyeh.ig.style; import com.intellij.codeInspection.CleanupLocalInspectionTool; import com.intellij.codeInspection.ProblemDescriptor; +import com.intellij.codeInspection.ProblemHighlightType; import com.intellij.openapi.project.Project; import com.intellij.psi.*; import com.intellij.psi.util.PsiUtil; @@ -214,7 +215,7 @@ public class UnnecessaryInterfaceModifierInspection extends BaseInspection imple } for (PsiElement child : children) { if (modifiers.contains(child.getText())) { - registerError(child, redundantModifiers.toString(), list); + registerError(child, ProblemHighlightType.LIKE_UNUSED_SYMBOL, redundantModifiers.toString(), list); } } } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnnecessarySemicolonInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnnecessarySemicolonInspection.java index c1a75887c6aa..36f5af9408df 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnnecessarySemicolonInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnnecessarySemicolonInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2009 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2014 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. @@ -17,6 +17,7 @@ package com.siyeh.ig.style; import com.intellij.codeInspection.CleanupLocalInspectionTool; import com.intellij.codeInspection.ProblemDescriptor; +import com.intellij.codeInspection.ProblemHighlightType; import com.intellij.openapi.project.Project; import com.intellij.psi.*; import com.intellij.psi.tree.IElementType; @@ -111,7 +112,7 @@ public class UnnecessarySemicolonInspection extends BaseInspection implements Cl private void findTopLevelSemicolons(PsiElement element) { for (PsiElement sibling = element.getFirstChild(); sibling != null; sibling = skipForwardWhiteSpacesAndComments(sibling)) { if (PsiUtil.isJavaToken(sibling, JavaTokenType.SEMICOLON)) { - registerError(sibling); + registerError(sibling, ProblemHighlightType.LIKE_UNUSED_SYMBOL); } } } @@ -149,7 +150,7 @@ public class UnnecessarySemicolonInspection extends BaseInspection implements Cl if (next == null || !next.equals(aClass.getRBrace())) { return; } - registerError(element); + registerError(element, ProblemHighlightType.LIKE_UNUSED_SYMBOL); } private void findUnnecessarySemicolonsAfterEnumConstants( @@ -171,11 +172,11 @@ public class UnnecessarySemicolonInspection extends BaseInspection implements Cl if (!JavaTokenType.COMMA.equals(prevTokenType) && !JavaTokenType.LBRACE.equals( prevTokenType)) { - registerError(child); + registerError(child, ProblemHighlightType.LIKE_UNUSED_SYMBOL); } } else { - registerError(child); + registerError(child, ProblemHighlightType.LIKE_UNUSED_SYMBOL); } } } @@ -207,7 +208,7 @@ public class UnnecessarySemicolonInspection extends BaseInspection implements Cl if (semicolon == null) { return; } - registerError(semicolon); + registerError(semicolon, ProblemHighlightType.LIKE_UNUSED_SYMBOL); } } @@ -218,7 +219,7 @@ public class UnnecessarySemicolonInspection extends BaseInspection implements Cl if (last instanceof PsiJavaToken && ((PsiJavaToken)last).getTokenType() == JavaTokenType.RPARENTH) { final PsiElement prev = skipBackwardWhiteSpacesAndComments(last); if (prev instanceof PsiJavaToken && ((PsiJavaToken)prev).getTokenType() == JavaTokenType.SEMICOLON) { - registerError(prev); + registerError(prev, ProblemHighlightType.LIKE_UNUSED_SYMBOL); } } } |