mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IG: improved and added quickfix to "Confusing primitive array argument to varargs method" inspection
This commit is contained in:
+2
-1
@@ -319,7 +319,8 @@
|
||||
<localInspection groupPath="Java" language="JAVA" shortName="ObjectToString" bundle="com.siyeh.InspectionGadgetsBundle" key="default.tostring.call.display.name"
|
||||
groupBundle="messages.InspectionsBundle" groupKey="group.names.probable.bugs" enabledByDefault="false" level="WARNING"
|
||||
implementationClass="com.siyeh.ig.bugs.ObjectToStringInspection"/>
|
||||
<localInspection groupPath="Java" language="JAVA" shortName="PrimitiveArrayArgumentToVariableArgMethod" bundle="com.siyeh.InspectionGadgetsBundle"
|
||||
<localInspection groupPath="Java" language="JAVA" suppressId="PrimitiveArrayArgumentToVarargsMethod" alternativeId="PrimitiveArrayArgumentToVariableArgMethod"
|
||||
shortName="PrimitiveArrayArgumentToVariableArgMethod" bundle="com.siyeh.InspectionGadgetsBundle"
|
||||
key="primitive.array.argument.to.var.arg.method.display.name" groupBundle="messages.InspectionsBundle"
|
||||
groupKey="group.names.probable.bugs" enabledByDefault="true" level="WARNING"
|
||||
implementationClass="com.siyeh.ig.bugs.PrimitiveArrayArgumentToVariableArgMethodInspection"/>
|
||||
|
||||
+2
-2
@@ -130,8 +130,8 @@ non.short.circuit.boolean.expression.problem.descriptor=Non-short-circuit boolea
|
||||
non.short.circuit.boolean.expression.replace.quickfix=Replace with short circuit expression
|
||||
null.argument.to.var.arg.method.display.name=Confusing argument to varargs method
|
||||
null.argument.to.var.arg.method.problem.descriptor=Confusing argument <code>#ref</code>, unclear if a varargs or non-varargs call is desired #loc
|
||||
primitive.array.argument.to.var.arg.method.display.name=Confusing primitive array argument to var-arg method
|
||||
primitive.array.argument.to.var.arg.method.problem.descriptor=Confusing primitive array argument to var-arg method #loc
|
||||
primitive.array.argument.to.var.arg.method.display.name=Confusing primitive array argument to varargs method
|
||||
primitive.array.argument.to.var.arg.method.problem.descriptor=Confusing primitive array argument to varargs method #loc
|
||||
object.comparison.display.name=Object comparison using '==', instead of 'equals()'
|
||||
object.comparison.enumerated.ignore.option=Ignore '==' between enumerated types
|
||||
object.comparison.klass.ignore.option=Ignore '==' on 'java.lang.Class' objects
|
||||
|
||||
+27
-3
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2006-2014 Dave Griffith, Bas Leijdekkers
|
||||
* Copyright 2006-2015 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.
|
||||
@@ -16,18 +16,34 @@
|
||||
package com.siyeh.ig.bugs;
|
||||
|
||||
import com.intellij.codeInsight.AnnotationUtil;
|
||||
import com.intellij.codeInsight.daemon.impl.quickfix.AddTypeCastFix;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
import com.intellij.psi.util.TypeConversionUtil;
|
||||
import com.siyeh.InspectionGadgetsBundle;
|
||||
import com.siyeh.ig.BaseInspection;
|
||||
import com.siyeh.ig.BaseInspectionVisitor;
|
||||
import com.siyeh.ig.DelegatingFix;
|
||||
import com.siyeh.ig.InspectionGadgetsFix;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
public class PrimitiveArrayArgumentToVariableArgMethodInspection extends BaseInspection {
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public String getID() {
|
||||
return "PrimitiveArrayArgumentToVarargsMethod";
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public String getAlternativeID() {
|
||||
return "PrimitiveArrayArgumentToVariableArgMethod"; // keep old suppression working
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public String getDisplayName() {
|
||||
@@ -50,6 +66,14 @@ public class PrimitiveArrayArgumentToVariableArgMethodInspection extends BaseIns
|
||||
return PsiUtil.isLanguageLevel5OrHigher(file);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
protected InspectionGadgetsFix buildFix(Object... infos) {
|
||||
final PsiExpression argument = (PsiExpression)infos[0];
|
||||
final PsiType type = (PsiType)infos[1];
|
||||
return new DelegatingFix(new AddTypeCastFix(type, argument));
|
||||
}
|
||||
|
||||
@Override
|
||||
public BaseInspectionVisitor buildVisitor() {
|
||||
return new PrimitiveArrayArgumentToVariableArgVisitor();
|
||||
@@ -84,11 +108,11 @@ public class PrimitiveArrayArgumentToVariableArgMethodInspection extends BaseIns
|
||||
if (!lastParameter.isVarArgs()) {
|
||||
return;
|
||||
}
|
||||
final PsiType parameterType = lastParameter.getType();
|
||||
final PsiEllipsisType parameterType = (PsiEllipsisType)lastParameter.getType();
|
||||
if (isDeepPrimitiveArrayType(parameterType, result.getSubstitutor())) {
|
||||
return;
|
||||
}
|
||||
registerError(lastArgument);
|
||||
registerError(lastArgument, lastArgument, parameterType.getComponentType());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+3
-3
@@ -6,7 +6,7 @@ public class PrimitiveArrayArgumentToVariableArgMethod
|
||||
{
|
||||
public static void main(String[] arg) throws Throwable
|
||||
{
|
||||
methodVarArgObject(<warning descr="Confusing primitive array argument to var-arg method">new byte[3]</warning>);
|
||||
methodVarArgObject(<warning descr="Confusing primitive array argument to varargs method">new byte[3]</warning>);
|
||||
methodVarArgByteArray(new byte[3]);
|
||||
MethodHandle meh = null;
|
||||
meh.invokeExact(new int[] { });
|
||||
@@ -31,7 +31,7 @@ public class PrimitiveArrayArgumentToVariableArgMethod
|
||||
}
|
||||
|
||||
void m() {
|
||||
String.format("%s", <warning descr="Confusing primitive array argument to var-arg method">new int[]{1, 2, 3}</warning>);
|
||||
String.format("%s", <warning descr="Confusing primitive array argument to varargs method">new int[]{1, 2, 3}</warning>);
|
||||
}
|
||||
|
||||
static void bar1(java.lang.Object... objects) {
|
||||
@@ -48,7 +48,7 @@ public class PrimitiveArrayArgumentToVariableArgMethod
|
||||
|
||||
public static void invoke() {
|
||||
int[] ints = {1, 2, 3};
|
||||
bar1(<warning descr="Confusing primitive array argument to var-arg method">ints</warning>); // warn here
|
||||
bar1(<warning descr="Confusing primitive array argument to varargs method">ints</warning>); // warn here
|
||||
bar2(ints); // no warning needed here
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user