diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/InspectionGadgetsBundle.properties b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/InspectionGadgetsBundle.properties index 8eb966316faa..ea03a59930c2 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/InspectionGadgetsBundle.properties +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/InspectionGadgetsBundle.properties @@ -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=#ref() 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 diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/migration/MethodCanBeVariableArityMethodInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/migration/MethodCanBeVariableArityMethodInspection.java index 34bbdb67b0b8..e51ec9edbb60 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/migration/MethodCanBeVariableArityMethodInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/migration/MethodCanBeVariableArityMethodInspection.java @@ -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;