IG: add option to ignore all primitive arrays (IDEA-170812)

This commit is contained in:
Bas Leijdekkers
2017-04-06 20:55:29 +02:00
parent c4d259f0de
commit 8a39fee959
2 changed files with 17 additions and 12 deletions
@@ -1855,6 +1855,7 @@ arrays.hash.code.quickfix=Replace with 'Arrays.hashCode()'
method.can.be.variable.arity.method.display.name=Method can be varargs method
method.can.be.variable.arity.method.problem.descriptor=<code>#ref()</code> can be converted to varargs method #loc
method.can.be.variable.arity.method.ignore.byte.short.option=Ignore parameters with type byte[] or short[]
method.can.be.variable.arity.method.ignore.all.primitive.arrays.option=Ignore all primitive array types
method.can.be.variable.arity.method.ignore.multiple.arrays.option=Ignore methods with multiple array parameters
method.can.be.variable.arity.method.ignore.multidimensional.arrays.option=Ignore multidimensional array parameters
convert.to.variable.arity.method.quickfix=Convert to varargs method
@@ -1,5 +1,5 @@
/*
* Copyright 2011-2016 Bas Leijdekkers
* Copyright 2011-2017 Bas Leijdekkers
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -19,7 +19,6 @@ import com.intellij.codeInsight.NullableNotNullManager;
import com.intellij.codeInspection.ui.MultipleCheckboxOptionsPanel;
import com.intellij.psi.*;
import com.intellij.psi.util.PsiUtil;
import com.siyeh.InspectionGadgetsBundle;
import com.siyeh.ig.BaseInspection;
import com.siyeh.ig.BaseInspectionVisitor;
import com.siyeh.ig.InspectionGadgetsFix;
@@ -31,11 +30,15 @@ import org.jetbrains.annotations.NotNull;
import javax.swing.*;
import static com.siyeh.InspectionGadgetsBundle.message;
public class MethodCanBeVariableArityMethodInspection extends BaseInspection {
@SuppressWarnings({"PublicField"})
public boolean ignoreByteAndShortArrayParameters = false;
public boolean ignoreAllPrimitiveArrayParameters = false;
@SuppressWarnings("PublicField")
public boolean ignoreOverridingMethods = false;
@@ -52,26 +55,24 @@ public class MethodCanBeVariableArityMethodInspection extends BaseInspection {
@NotNull
@Override
public String getDisplayName() {
return InspectionGadgetsBundle.message("method.can.be.variable.arity.method.display.name");
return message("method.can.be.variable.arity.method.display.name");
}
@NotNull
@Override
protected String buildErrorString(Object... infos) {
return InspectionGadgetsBundle.message("method.can.be.variable.arity.method.problem.descriptor");
return message("method.can.be.variable.arity.method.problem.descriptor");
}
@Override
public JComponent createOptionsPanel() {
final MultipleCheckboxOptionsPanel panel = new MultipleCheckboxOptionsPanel(this);
panel.addCheckbox(InspectionGadgetsBundle.message("method.can.be.variable.arity.method.ignore.byte.short.option"),
"ignoreByteAndShortArrayParameters");
panel.addCheckbox(InspectionGadgetsBundle.message("ignore.methods.overriding.super.method"), "ignoreOverridingMethods");
panel.addCheckbox(InspectionGadgetsBundle.message("only.report.public.methods.option"), "onlyReportPublicMethods");
panel.addCheckbox(InspectionGadgetsBundle.message("method.can.be.variable.arity.method.ignore.multiple.arrays.option"),
"ignoreMultipleArrayParameters");
panel.addCheckbox(InspectionGadgetsBundle.message("method.can.be.variable.arity.method.ignore.multidimensional.arrays.option"),
"ignoreMultiDimensionalArrayParameters");
final JCheckBox box = panel.addCheckboxEx(message("method.can.be.variable.arity.method.ignore.byte.short.option"), "ignoreByteAndShortArrayParameters");
panel.addDependentCheckBox(message("method.can.be.variable.arity.method.ignore.all.primitive.arrays.option"), "ignoreAllPrimitiveArrayParameters", box);
panel.addCheckbox(message("ignore.methods.overriding.super.method"), "ignoreOverridingMethods");
panel.addCheckbox(message("only.report.public.methods.option"), "onlyReportPublicMethods");
panel.addCheckbox(message("method.can.be.variable.arity.method.ignore.multiple.arrays.option"), "ignoreMultipleArrayParameters");
panel.addCheckbox(message("method.can.be.variable.arity.method.ignore.multidimensional.arrays.option"), "ignoreMultiDimensionalArrayParameters");
return panel;
}
@@ -121,6 +122,9 @@ public class MethodCanBeVariableArityMethodInspection extends BaseInspection {
if (PsiType.BYTE.equals(componentType) || PsiType.SHORT.equals(componentType)) {
return;
}
if (ignoreAllPrimitiveArrayParameters && componentType instanceof PsiPrimitiveType) {
return;
}
}
if (LibraryUtil.isOverrideOfLibraryMethod(method)) {
return;