mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
unused parameters: compare parameter's visibility settings (IDEA-160113);
unused declaration: show all unused instance methods and fields if class is not instantiated (IDEA-160011)
This commit is contained in:
@@ -155,10 +155,10 @@ public class RefFieldImpl extends RefJavaElementImpl implements RefField {
|
||||
|
||||
@Nullable
|
||||
public static PsiField findPsiField(PsiManager manager, String externalName) {
|
||||
int classNameDelimeter = externalName.lastIndexOf(' ');
|
||||
if (classNameDelimeter > 0 && classNameDelimeter < externalName.length() - 1) {
|
||||
final String className = externalName.substring(0, classNameDelimeter);
|
||||
final String fieldName = externalName.substring(classNameDelimeter + 1);
|
||||
int classNameDelimiter = externalName.lastIndexOf(' ');
|
||||
if (classNameDelimiter > 0 && classNameDelimiter < externalName.length() - 1) {
|
||||
final String className = externalName.substring(0, classNameDelimiter);
|
||||
final String fieldName = externalName.substring(classNameDelimiter + 1);
|
||||
final PsiClass psiClass = ClassUtil.findPsiClass(manager, className);
|
||||
if (psiClass != null) {
|
||||
return psiClass.findFieldByName(fieldName, false);
|
||||
|
||||
@@ -402,8 +402,6 @@ public class RefMethodImpl extends RefJavaElementImpl implements RefMethod {
|
||||
|
||||
// Class isn't instantiated. Most probably we have problem with class, not method.
|
||||
if (!isStatic() && !isConstructor()) {
|
||||
if (((RefClassImpl)getOwnerClass()).isSuspicious()) return true;
|
||||
|
||||
// Is an override. Probably called via reference to base class.
|
||||
for (RefMethod refSuper : getSuperMethods()) {
|
||||
if (((RefMethodImpl)refSuper).isSuspicious()) return true;
|
||||
|
||||
+1
-1
@@ -61,7 +61,7 @@ public class UnusedDeclarationInspection extends UnusedDeclarationInspectionBase
|
||||
@Override public void visitElement(@NotNull RefEntity refEntity) {
|
||||
if (!(refEntity instanceof RefMethod) ||
|
||||
!globalContext.shouldCheck(refEntity, UnusedDeclarationInspection.this) ||
|
||||
!UnusedDeclarationPresentation.compareVisibilities((RefMethod)refEntity, myLocalInspectionBase)) {
|
||||
!UnusedDeclarationPresentation.compareVisibilities((RefMethod)refEntity, myLocalInspectionBase.getParameterVisibility())) {
|
||||
return;
|
||||
}
|
||||
CommonProblemDescriptor[] descriptors = myUnusedParameters.checkElement(refEntity, scope, manager, globalContext, problemDescriptionsProcessor);
|
||||
|
||||
+8
-6
@@ -49,8 +49,6 @@ import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.util.VisibilityUtil;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.containers.HashMap;
|
||||
import com.intellij.util.containers.HashSet;
|
||||
import com.intellij.util.text.CharArrayUtil;
|
||||
import com.intellij.util.text.DateFormatUtil;
|
||||
import com.intellij.util.ui.JBUI;
|
||||
@@ -465,11 +463,15 @@ public class UnusedDeclarationPresentation extends DefaultInspectionToolPresenta
|
||||
return PsiModifier.PUBLIC;
|
||||
}
|
||||
|
||||
protected static boolean compareVisibilities(RefJavaElement listOwner, UnusedSymbolLocalInspectionBase localInspectionTool) {
|
||||
final String visibility = getAcceptedVisibility(localInspectionTool, listOwner);
|
||||
if (visibility != null) {
|
||||
protected static boolean compareVisibilities(RefJavaElement listOwner,
|
||||
UnusedSymbolLocalInspectionBase localInspectionTool) {
|
||||
return compareVisibilities(listOwner, getAcceptedVisibility(localInspectionTool, listOwner));
|
||||
}
|
||||
|
||||
protected static boolean compareVisibilities(RefJavaElement listOwner, final String acceptedVisibility) {
|
||||
if (acceptedVisibility != null) {
|
||||
while (listOwner != null) {
|
||||
if (VisibilityUtil.compare(listOwner.getAccessModifier(), visibility) >= 0) {
|
||||
if (VisibilityUtil.compare(listOwner.getAccessModifier(), acceptedVisibility) >= 0) {
|
||||
return true;
|
||||
}
|
||||
final RefEntity parent = listOwner.getOwner();
|
||||
|
||||
@@ -6,5 +6,12 @@
|
||||
<problem_class>unused declaration</problem_class>
|
||||
<description>Class is not instantiated.</description>
|
||||
</problem>
|
||||
<problem>
|
||||
<file>A.java</file>
|
||||
<line>4</line>
|
||||
<package><default></package>
|
||||
<description><ul><li>Method owner class is never instantiated OR</li><li>An instantiation is not reachable from entry points.</li></ul></description>
|
||||
</problem>
|
||||
|
||||
</problems>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user