mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Java: Improved highlighting mode in the inspection "Replace with Objects.equals()" (IDEA-193783)
This commit is contained in:
+1
-1
@@ -2091,7 +2091,7 @@ dangling.javadoc.delete.quickfix=Remove dangling comment
|
||||
equals.replaceable.by.objects.call.display.name='equals()' expression replaceable by 'Objects.equals()' expression
|
||||
equals.replaceable.by.objects.call.problem.descriptor=<code>#ref</code> replaceable by 'Objects.equals()' expression #loc
|
||||
equals.replaceable.by.objects.call.quickfix=Replace with 'Objects.equals()' expression
|
||||
equals.replaceable.by.objects.check.not.null.option=Report only null safe 'equals' calls
|
||||
equals.replaceable.by.objects.check.not.null.option=Highlight expressions like 'a != null \\&\\& a.equals(b)'
|
||||
array.objects.equals.display.name='Objects.equals()' called on arrays
|
||||
array.objects.equals.problem.descriptor=<code>Objects.#ref()</code> on arrays should probably be 'Arrays.equals()' #loc
|
||||
array.objects.deep.equals.problem.descriptor=<code>Objects.#ref()</code> on arrays should probably be 'Arrays.deepEquals()' #loc
|
||||
|
||||
+13
-11
@@ -16,6 +16,7 @@
|
||||
package com.siyeh.ig.migration;
|
||||
|
||||
import com.intellij.codeInspection.ProblemDescriptor;
|
||||
import com.intellij.codeInspection.ProblemHighlightType;
|
||||
import com.intellij.codeInspection.ui.SingleCheckboxOptionsPanel;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.*;
|
||||
@@ -42,7 +43,7 @@ import javax.swing.*;
|
||||
* @author Bas Leijdekkers
|
||||
*/
|
||||
public class EqualsReplaceableByObjectsCallInspection extends BaseInspection {
|
||||
public boolean checkNotNull = true;
|
||||
public boolean checkNotNull;
|
||||
|
||||
private static final EquivalenceChecker EQUIVALENCE = new NoSideEffectExpressionEquivalenceChecker();
|
||||
|
||||
@@ -141,16 +142,14 @@ public class EqualsReplaceableByObjectsCallInspection extends BaseInspection {
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (!checkNotNull) {
|
||||
if (qualifierExpression == null) {
|
||||
return;
|
||||
}
|
||||
final PsiExpression argumentExpression = getArgumentExpression(expression);
|
||||
if (argumentExpression == null) {
|
||||
return;
|
||||
}
|
||||
registerError(expression, qualifierExpression.getText(), argumentExpression.getText(), true);
|
||||
if (qualifierExpression == null) {
|
||||
return;
|
||||
}
|
||||
final PsiExpression argumentExpression = getArgumentExpression(expression);
|
||||
if (argumentExpression == null) {
|
||||
return;
|
||||
}
|
||||
registerError(expression, ProblemHighlightType.INFORMATION, qualifierExpression.getText(), argumentExpression.getText(), true);
|
||||
}
|
||||
|
||||
private boolean processNotNullCheck(PsiBinaryExpression expression) {
|
||||
@@ -219,7 +218,10 @@ public class EqualsReplaceableByObjectsCallInspection extends BaseInspection {
|
||||
final PsiExpression argumentExpression = getArgumentExpression(methodCallExpression);
|
||||
if (argumentExpression != null) {
|
||||
final PsiExpression expressionToReplace = checkEqualityBefore(expression, equal, qualifierExpression, argumentExpression);
|
||||
registerError(expressionToReplace, nullCheckedExpression.getText(), argumentExpression.getText(), Boolean.valueOf(equal));
|
||||
ProblemHighlightType highlightType = checkNotNull || expression != expressionToReplace ?
|
||||
ProblemHighlightType.GENERIC_ERROR_OR_WARNING : ProblemHighlightType.INFORMATION;
|
||||
registerError(expressionToReplace, highlightType,
|
||||
nullCheckedExpression.getText(), argumentExpression.getText(), Boolean.valueOf(equal));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
+8
-4
@@ -2,12 +2,16 @@
|
||||
<body>
|
||||
Reports expressions that can be replaced with a call to <code>java.util.Objects.equals()</code>, which is available since JDK 1.7.
|
||||
For example:
|
||||
<code><pre>a != <b>null</b> <b>&&</b> a.equals(b)</pre></code>
|
||||
<p>
|
||||
<code><pre>a == b || a != <b>null</b> && a.equals(b)</pre></code>
|
||||
<br>
|
||||
<code><pre>a != <b>null</b> ? a.equals(b) : b == <b>null</b></pre></code>
|
||||
</p>
|
||||
<!-- tooltip end -->
|
||||
<p>
|
||||
If <code>a.equals(b)</code> isn't preceded with <code>a != <b>null</b></code>, replacing it with <code>Objects.equals(a, b)</code>
|
||||
still makes sense, but slightly changes the semantics. For the cases where only equivalent replacement is needed, there's
|
||||
the check box <i>Report only null safe 'equals' calls</i> to enforce that.
|
||||
Replacing expressions like <code><pre>a != null && a.equals(b)</pre></code> with
|
||||
<code><pre>Objects.equals(a, b)</pre></code> slightly changes the semantics,
|
||||
but if that's what you need there's a check box for that in the inspection settings.
|
||||
<p>
|
||||
This inspection only applies to projects and modules configured to use a language level of 7 or higher.
|
||||
</body>
|
||||
|
||||
+31
-31
@@ -1,41 +1,41 @@
|
||||
class EqualsReplaceableByObjectsCall {
|
||||
void yyy(Object a, Object b) {
|
||||
boolean c = <warning descr="'(a != null) && a.equals(b)' replaceable by 'Objects.equals()' expression">(a != null) && a.equals(b)</warning>;
|
||||
boolean c = <info descr="'(a != null) && a.equals(b)' replaceable by 'Objects.equals()' expression">(a != null) && a.equals(b)</info>;
|
||||
boolean d = <warning descr="'(a != b) && (a == null || !a.equals(b))' replaceable by 'Objects.equals()' expression">(a != b) && (a == null || !a.equals(b))</warning>;
|
||||
boolean e = <warning descr="'((a) == (b)) || ((a) != (null) && (a).equals((b)))' replaceable by 'Objects.equals()' expression">((a) == (b)) || ((a) != (null) && (a).equals((b)))</warning>;
|
||||
}
|
||||
|
||||
void ignoreNullityCheck(Object a, Object b) {
|
||||
boolean c = <warning descr="'a.equals(b)' replaceable by 'Objects.equals()' expression">a.equals(b)</warning>;
|
||||
boolean c = <info descr="'a.equals(b)' replaceable by 'Objects.equals()' expression">a.equals(b)</info>;
|
||||
}
|
||||
|
||||
void bar(T x, T y, T z) {
|
||||
boolean b = !<warning descr="'x.s.equals(y.s)' replaceable by 'Objects.equals()' expression">x.s.equals(y.s)</warning>;
|
||||
boolean c = <warning descr="'x.s != null && x.s.equals(y.s)' replaceable by 'Objects.equals()' expression">x.s != null && x.s.equals(y.s)</warning>;
|
||||
boolean d = y.s != null && <warning descr="'x.s.equals(y.s)' replaceable by 'Objects.equals()' expression">x.s.equals(y.s)</warning>;
|
||||
boolean e = <warning descr="'x.s == null || !x.s.equals(y.s)' replaceable by 'Objects.equals()' expression">x.s == null || !x.s.equals(y.s)</warning>;
|
||||
boolean b = !<info descr="'x.s.equals(y.s)' replaceable by 'Objects.equals()' expression">x.s.equals(y.s)</info>;
|
||||
boolean c = <info descr="'x.s != null && x.s.equals(y.s)' replaceable by 'Objects.equals()' expression">x.s != null && x.s.equals(y.s)</info>;
|
||||
boolean d = y.s != null && <info descr="'x.s.equals(y.s)' replaceable by 'Objects.equals()' expression">x.s.equals(y.s)</info>;
|
||||
boolean e = <info descr="'x.s == null || !x.s.equals(y.s)' replaceable by 'Objects.equals()' expression">x.s == null || !x.s.equals(y.s)</info>;
|
||||
boolean f = <warning descr="'x.s != y.s && (x.s == null || !x.s.equals(y.s))' replaceable by 'Objects.equals()' expression">x.s != y.s && (x.s == null || !x.s.equals(y.s))</warning>;
|
||||
boolean g = x.s != y.s || (<warning descr="'x.s == null || !x.s.equals(y.s)' replaceable by 'Objects.equals()' expression">x.s == null || !x.s.equals(y.s)</warning>);
|
||||
boolean h = x.s != y.s && (z.s == null || !<warning descr="'x.s.equals(y.s)' replaceable by 'Objects.equals()' expression">x.s.equals(y.s)</warning>);
|
||||
boolean g = x.s != y.s || (<info descr="'x.s == null || !x.s.equals(y.s)' replaceable by 'Objects.equals()' expression">x.s == null || !x.s.equals(y.s)</info>);
|
||||
boolean h = x.s != y.s && (z.s == null || !<info descr="'x.s.equals(y.s)' replaceable by 'Objects.equals()' expression">x.s.equals(y.s)</info>);
|
||||
}
|
||||
|
||||
void baz(T x, T y) {
|
||||
boolean b = <warning descr="'x.copy().equals(y.copy())' replaceable by 'Objects.equals()' expression">x.copy().equals(y.copy())</warning>;
|
||||
boolean c = <warning descr="'x != null && x.equals(y.copy())' replaceable by 'Objects.equals()' expression">x != null && x.equals(y.copy())</warning>;
|
||||
boolean d = <warning descr="'x == null || !x.equals(y.copy())' replaceable by 'Objects.equals()' expression">x == null || !x.equals(y.copy())</warning>;
|
||||
boolean e = x.copy() != null && <warning descr="'x.copy().equals(y)' replaceable by 'Objects.equals()' expression">x.copy().equals(y)</warning>;
|
||||
boolean f = x.copy() == null || !<warning descr="'x.copy().equals(y)' replaceable by 'Objects.equals()' expression">x.copy().equals(y)</warning>;
|
||||
boolean g = x.copy().s != null && <warning descr="'x.copy().s.equals(y.s)' replaceable by 'Objects.equals()' expression">x.copy().s.equals(y.s)</warning>;
|
||||
boolean h = x.copy().s == null || !<warning descr="'x.copy().s.equals(y.s)' replaceable by 'Objects.equals()' expression">x.copy().s.equals(y.s)</warning>;
|
||||
boolean i = x.s == y.copy().s || <warning descr="'(x).s != null && (x.s).equals(y.copy().s)' replaceable by 'Objects.equals()' expression">(x).s != null && (x.s).equals(y.copy().s)</warning>;
|
||||
boolean j = x.s != y.copy().s && (<warning descr="'(x).s == null || !(x.s).equals(y.copy().s)' replaceable by 'Objects.equals()' expression">(x).s == null || !(x.s).equals(y.copy().s)</warning>);
|
||||
boolean b = <info descr="'x.copy().equals(y.copy())' replaceable by 'Objects.equals()' expression">x.copy().equals(y.copy())</info>;
|
||||
boolean c = <info descr="'x != null && x.equals(y.copy())' replaceable by 'Objects.equals()' expression">x != null && x.equals(y.copy())</info>;
|
||||
boolean d = <info descr="'x == null || !x.equals(y.copy())' replaceable by 'Objects.equals()' expression">x == null || !x.equals(y.copy())</info>;
|
||||
boolean e = x.copy() != null && <info descr="'x.copy().equals(y)' replaceable by 'Objects.equals()' expression">x.copy().equals(y)</info>;
|
||||
boolean f = x.copy() == null || !<info descr="'x.copy().equals(y)' replaceable by 'Objects.equals()' expression">x.copy().equals(y)</info>;
|
||||
boolean g = x.copy().s != null && <info descr="'x.copy().s.equals(y.s)' replaceable by 'Objects.equals()' expression">x.copy().s.equals(y.s)</info>;
|
||||
boolean h = x.copy().s == null || !<info descr="'x.copy().s.equals(y.s)' replaceable by 'Objects.equals()' expression">x.copy().s.equals(y.s)</info>;
|
||||
boolean i = x.s == y.copy().s || <info descr="'(x).s != null && (x.s).equals(y.copy().s)' replaceable by 'Objects.equals()' expression">(x).s != null && (x.s).equals(y.copy().s)</info>;
|
||||
boolean j = x.s != y.copy().s && (<info descr="'(x).s == null || !(x.s).equals(y.copy().s)' replaceable by 'Objects.equals()' expression">(x).s == null || !(x.s).equals(y.copy().s)</info>);
|
||||
}
|
||||
|
||||
void arr(T[] a, T[] b, int i) {
|
||||
boolean c = <warning descr="'a[i] != null && a[i].equals(b[i])' replaceable by 'Objects.equals()' expression">a[i] != null && a[i].equals(b[i])</warning>;
|
||||
boolean c = <info descr="'a[i] != null && a[i].equals(b[i])' replaceable by 'Objects.equals()' expression">a[i] != null && a[i].equals(b[i])</info>;
|
||||
boolean d = <warning descr="'a[i] == null ? b[i] == null : a[i].equals(b[i])' replaceable by 'Objects.equals()' expression">a[i] == null ? b[i] == null : a[i].equals(b[i])</warning>;
|
||||
boolean e = a[i++] != null && <warning descr="'a[i++].equals(b[i++])' replaceable by 'Objects.equals()' expression">a[i++].equals(b[i++])</warning>;
|
||||
boolean f = a[--i] != null && <warning descr="'a[--i].equals(b[--i])' replaceable by 'Objects.equals()' expression">a[--i].equals(b[--i])</warning>;
|
||||
boolean e = a[i++] != null && <info descr="'a[i++].equals(b[i++])' replaceable by 'Objects.equals()' expression">a[i++].equals(b[i++])</info>;
|
||||
boolean f = a[--i] != null && <info descr="'a[--i].equals(b[--i])' replaceable by 'Objects.equals()' expression">a[--i].equals(b[--i])</info>;
|
||||
}
|
||||
|
||||
static class T {
|
||||
@@ -64,10 +64,10 @@ class EqualsReplaceableByObjectsCall {
|
||||
}
|
||||
}
|
||||
static boolean ab1(String s) {
|
||||
return <warning descr="'A.b.equals(s)' replaceable by 'Objects.equals()' expression">A.b.equals(s)</warning>;
|
||||
return <info descr="'A.b.equals(s)' replaceable by 'Objects.equals()' expression">A.b.equals(s)</info>;
|
||||
}
|
||||
static boolean ab2(String s) {
|
||||
return <warning descr="'A.b != null && A.b.equals(s)' replaceable by 'Objects.equals()' expression">A.b != null && A.b.equals(s)</warning>;
|
||||
return <info descr="'A.b != null && A.b.equals(s)' replaceable by 'Objects.equals()' expression">A.b != null && A.b.equals(s)</info>;
|
||||
}
|
||||
static boolean ab3(String s) {
|
||||
return <warning descr="'A.b == s || A.b != null && A.b.equals(s)' replaceable by 'Objects.equals()' expression">A.b == s || A.b != null && A.b.equals(s)</warning>;
|
||||
@@ -101,7 +101,7 @@ class EqualsReplaceableByObjectsCall {
|
||||
|
||||
static final String NULL_CONSTANT = null;
|
||||
boolean nullConstant(Object o) {
|
||||
return <warning descr="'NULL_CONSTANT.equals(o)' replaceable by 'Objects.equals()' expression">NULL_CONSTANT.equals(o)</warning>;
|
||||
return <info descr="'NULL_CONSTANT.equals(o)' replaceable by 'Objects.equals()' expression">NULL_CONSTANT.equals(o)</info>;
|
||||
}
|
||||
|
||||
static final Object NEW_CONSTANT = new Object();
|
||||
@@ -139,28 +139,28 @@ class EqualsReplaceableByObjectsCall {
|
||||
return <warning descr="'(s != null) ? (!s.equals(t.s)) : !(t.s == null)' replaceable by 'Objects.equals()' expression">(s != null) ? (!s.equals(t.s)) : !(t.s == null)</warning>;
|
||||
}
|
||||
boolean notMatches1(Ternary t) {
|
||||
return s == null ? t.s != null : <warning descr="'s.equals(t.s)' replaceable by 'Objects.equals()' expression">s.equals(t.s)</warning>;
|
||||
return s == null ? t.s != null : <info descr="'s.equals(t.s)' replaceable by 'Objects.equals()' expression">s.equals(t.s)</info>;
|
||||
}
|
||||
boolean notMatches2(Ternary t) {
|
||||
return s != null ? t.s != null : <warning descr="'s.equals(t.s)' replaceable by 'Objects.equals()' expression">s.equals(t.s)</warning>;
|
||||
return s != null ? t.s != null : <info descr="'s.equals(t.s)' replaceable by 'Objects.equals()' expression">s.equals(t.s)</info>;
|
||||
}
|
||||
boolean notMatches3(Ternary t) {
|
||||
return ((s != null) ? !(<warning descr="'s.equals(t.s)' replaceable by 'Objects.equals()' expression">s.equals(t.s)</warning>) : (t.s == null));
|
||||
return ((s != null) ? !(<info descr="'s.equals(t.s)' replaceable by 'Objects.equals()' expression">s.equals(t.s)</info>) : (t.s == null));
|
||||
}
|
||||
boolean notMatches4(Ternary t) {
|
||||
return s == null ? t.s == null : !<warning descr="'s.equals(t.s)' replaceable by 'Objects.equals()' expression">s.equals(t.s)</warning>;
|
||||
return s == null ? t.s == null : !<info descr="'s.equals(t.s)' replaceable by 'Objects.equals()' expression">s.equals(t.s)</info>;
|
||||
}
|
||||
boolean notMatches5(Ternary t) {
|
||||
return s != null ? <warning descr="'s.equals(t.s)' replaceable by 'Objects.equals()' expression">s.equals(t.s)</warning> : t.s != null;
|
||||
return s != null ? <info descr="'s.equals(t.s)' replaceable by 'Objects.equals()' expression">s.equals(t.s)</info> : t.s != null;
|
||||
}
|
||||
boolean notMatches6(Ternary t) {
|
||||
return s == null ? !<warning descr="'s.equals(t.s)' replaceable by 'Objects.equals()' expression">s.equals(t.s)</warning> : t.s != null;
|
||||
return s == null ? !<info descr="'s.equals(t.s)' replaceable by 'Objects.equals()' expression">s.equals(t.s)</info> : t.s != null;
|
||||
}
|
||||
boolean notMatches7(Ternary t) {
|
||||
return s == null ? t.s == null : <warning descr="'t.s.equals(s)' replaceable by 'Objects.equals()' expression">t.s.equals(s)</warning>;
|
||||
return s == null ? t.s == null : <info descr="'t.s.equals(s)' replaceable by 'Objects.equals()' expression">t.s.equals(s)</info>;
|
||||
}
|
||||
boolean notMatches8(Ternary t) {
|
||||
return (s != null) ? (<warning descr="'t.s.equals(s)' replaceable by 'Objects.equals()' expression">t.s.equals(s)</warning>) : (t.s == null);
|
||||
return (s != null) ? (<info descr="'t.s.equals(s)' replaceable by 'Objects.equals()' expression">t.s.equals(s)</info>) : (t.s == null);
|
||||
}
|
||||
}
|
||||
}
|
||||
+20
-20
@@ -6,27 +6,27 @@ class EqualsReplaceableByObjectsCall {
|
||||
}
|
||||
|
||||
void ignoreNullityCheck(Object a, Object b) {
|
||||
boolean c = a.equals(b);
|
||||
boolean c = <info descr="'a.equals(b)' replaceable by 'Objects.equals()' expression">a.equals(b)</info>;
|
||||
}
|
||||
|
||||
void bar(T x, T y, T z) {
|
||||
boolean b = !x.s.equals(y.s);
|
||||
boolean b = !<info descr="'x.s.equals(y.s)' replaceable by 'Objects.equals()' expression">x.s.equals(y.s)</info>;
|
||||
boolean c = <warning descr="'x.s != null && x.s.equals(y.s)' replaceable by 'Objects.equals()' expression">x.s != null && x.s.equals(y.s)</warning>;
|
||||
boolean d = y.s != null && x.s.equals(y.s);
|
||||
boolean d = y.s != null && <info descr="'x.s.equals(y.s)' replaceable by 'Objects.equals()' expression">x.s.equals(y.s)</info>;
|
||||
boolean e = <warning descr="'x.s == null || !x.s.equals(y.s)' replaceable by 'Objects.equals()' expression">x.s == null || !x.s.equals(y.s)</warning>;
|
||||
boolean f = <warning descr="'x.s != y.s && (x.s == null || !x.s.equals(y.s))' replaceable by 'Objects.equals()' expression">x.s != y.s && (x.s == null || !x.s.equals(y.s))</warning>;
|
||||
boolean g = x.s != y.s || (<warning descr="'x.s == null || !x.s.equals(y.s)' replaceable by 'Objects.equals()' expression">x.s == null || !x.s.equals(y.s)</warning>);
|
||||
boolean h = x.s != y.s && (z.s == null || !x.s.equals(y.s));
|
||||
boolean h = x.s != y.s && (z.s == null || !<info descr="'x.s.equals(y.s)' replaceable by 'Objects.equals()' expression">x.s.equals(y.s)</info>);
|
||||
}
|
||||
|
||||
void baz(T x, T y) {
|
||||
boolean b = x.copy().equals(y.copy());
|
||||
boolean b = <info descr="'x.copy().equals(y.copy())' replaceable by 'Objects.equals()' expression">x.copy().equals(y.copy())</info>;
|
||||
boolean c = <warning descr="'x != null && x.equals(y.copy())' replaceable by 'Objects.equals()' expression">x != null && x.equals(y.copy())</warning>;
|
||||
boolean d = <warning descr="'x == null || !x.equals(y.copy())' replaceable by 'Objects.equals()' expression">x == null || !x.equals(y.copy())</warning>;
|
||||
boolean e = x.copy() != null && x.copy().equals(y);
|
||||
boolean f = x.copy() == null || !x.copy().equals(y);
|
||||
boolean g = x.copy().s != null && x.copy().s.equals(y.s);
|
||||
boolean h = x.copy().s == null || !x.copy().s.equals(y.s);
|
||||
boolean e = x.copy() != null && <info descr="'x.copy().equals(y)' replaceable by 'Objects.equals()' expression">x.copy().equals(y)</info>;
|
||||
boolean f = x.copy() == null || !<info descr="'x.copy().equals(y)' replaceable by 'Objects.equals()' expression">x.copy().equals(y)</info>;
|
||||
boolean g = x.copy().s != null && <info descr="'x.copy().s.equals(y.s)' replaceable by 'Objects.equals()' expression">x.copy().s.equals(y.s)</info>;
|
||||
boolean h = x.copy().s == null || !<info descr="'x.copy().s.equals(y.s)' replaceable by 'Objects.equals()' expression">x.copy().s.equals(y.s)</info>;
|
||||
boolean i = x.s == y.copy().s || <warning descr="'(x).s != null && (x.s).equals(y.copy().s)' replaceable by 'Objects.equals()' expression">(x).s != null && (x.s).equals(y.copy().s)</warning>;
|
||||
boolean j = x.s != y.copy().s && (<warning descr="'(x).s == null || !(x.s).equals(y.copy().s)' replaceable by 'Objects.equals()' expression">(x).s == null || !(x.s).equals(y.copy().s)</warning>);
|
||||
}
|
||||
@@ -34,8 +34,8 @@ class EqualsReplaceableByObjectsCall {
|
||||
void arr(T[] a, T[] b, int i) {
|
||||
boolean c = <warning descr="'a[i] != null && a[i].equals(b[i])' replaceable by 'Objects.equals()' expression">a[i] != null && a[i].equals(b[i])</warning>;
|
||||
boolean d = <warning descr="'a[i] == null ? b[i] == null : a[i].equals(b[i])' replaceable by 'Objects.equals()' expression">a[i] == null ? b[i] == null : a[i].equals(b[i])</warning>;
|
||||
boolean e = a[i++] != null && a[i++].equals(b[i++]);
|
||||
boolean f = a[--i] != null && a[--i].equals(b[--i]);
|
||||
boolean e = a[i++] != null && <info descr="'a[i++].equals(b[i++])' replaceable by 'Objects.equals()' expression">a[i++].equals(b[i++])</info>;
|
||||
boolean f = a[--i] != null && <info descr="'a[--i].equals(b[--i])' replaceable by 'Objects.equals()' expression">a[--i].equals(b[--i])</info>;
|
||||
}
|
||||
|
||||
static class T {
|
||||
@@ -64,7 +64,7 @@ class EqualsReplaceableByObjectsCall {
|
||||
}
|
||||
}
|
||||
static boolean ab1(String s) {
|
||||
return A.b.equals(s);
|
||||
return <info descr="'A.b.equals(s)' replaceable by 'Objects.equals()' expression">A.b.equals(s)</info>;
|
||||
}
|
||||
static boolean ab2(String s) {
|
||||
return <warning descr="'A.b != null && A.b.equals(s)' replaceable by 'Objects.equals()' expression">A.b != null && A.b.equals(s)</warning>;
|
||||
@@ -91,28 +91,28 @@ class EqualsReplaceableByObjectsCall {
|
||||
return <warning descr="'(s != null) ? (!s.equals(t.s)) : !(t.s == null)' replaceable by 'Objects.equals()' expression">(s != null) ? (!s.equals(t.s)) : !(t.s == null)</warning>;
|
||||
}
|
||||
boolean notMatches1(Ternary t) {
|
||||
return s == null ? t.s != null : s.equals(t.s);
|
||||
return s == null ? t.s != null : <info descr="'s.equals(t.s)' replaceable by 'Objects.equals()' expression">s.equals(t.s)</info>;
|
||||
}
|
||||
boolean notMatches2(Ternary t) {
|
||||
return s != null ? t.s != null : s.equals(t.s);
|
||||
return s != null ? t.s != null : <info descr="'s.equals(t.s)' replaceable by 'Objects.equals()' expression">s.equals(t.s)</info>;
|
||||
}
|
||||
boolean notMatches3(Ternary t) {
|
||||
return ((s != null) ? !(s.equals(t.s)) : (t.s == null));
|
||||
return ((s != null) ? !(<info descr="'s.equals(t.s)' replaceable by 'Objects.equals()' expression">s.equals(t.s)</info>) : (t.s == null));
|
||||
}
|
||||
boolean notMatches4(Ternary t) {
|
||||
return s == null ? t.s == null : !s.equals(t.s);
|
||||
return s == null ? t.s == null : !<info descr="'s.equals(t.s)' replaceable by 'Objects.equals()' expression">s.equals(t.s)</info>;
|
||||
}
|
||||
boolean notMatches5(Ternary t) {
|
||||
return s != null ? s.equals(t.s) : t.s != null;
|
||||
return s != null ? <info descr="'s.equals(t.s)' replaceable by 'Objects.equals()' expression">s.equals(t.s)</info> : t.s != null;
|
||||
}
|
||||
boolean notMatches6(Ternary t) {
|
||||
return s == null ? !s.equals(t.s) : t.s != null;
|
||||
return s == null ? !<info descr="'s.equals(t.s)' replaceable by 'Objects.equals()' expression">s.equals(t.s)</info> : t.s != null;
|
||||
}
|
||||
boolean notMatches7(Ternary t) {
|
||||
return s == null ? t.s == null : t.s.equals(s);
|
||||
return s == null ? t.s == null : <info descr="'t.s.equals(s)' replaceable by 'Objects.equals()' expression">t.s.equals(s)</info>;
|
||||
}
|
||||
boolean notMatches8(Ternary t) {
|
||||
return (s != null) ? (t.s.equals(s)) : (t.s == null);
|
||||
return (s != null) ? (<info descr="'t.s.equals(s)' replaceable by 'Objects.equals()' expression">t.s.equals(s)</info>) : (t.s == null);
|
||||
}
|
||||
}
|
||||
}
|
||||
+8
-16
@@ -27,16 +27,14 @@ import com.siyeh.ig.migration.EqualsReplaceableByObjectsCallInspection;
|
||||
*/
|
||||
public class EqualsReplaceableByObjectsCallFixTest extends IGQuickFixesTestCase {
|
||||
|
||||
private EqualsReplaceableByObjectsCallInspection myInspection;
|
||||
public void testSimpleEquals() { doTest(); }
|
||||
public void testSimpleNotEquals() { doTest(); }
|
||||
|
||||
public void testSimpleEquals() { doTestNoNullCheck(); }
|
||||
public void testSimpleNotEquals() { doTestNoNullCheck(); }
|
||||
|
||||
public void testQualifiedArgument() { doTestNoNullCheck(); }
|
||||
public void testQualifiedArgument() { doTest(); }
|
||||
public void testQualifiedReciever() { doTest(); }
|
||||
|
||||
public void testExpressionReciever() { doTestNoNullCheck(); }
|
||||
public void testExpressionArgument() { doTestNoNullCheck(); }
|
||||
public void testExpressionReciever() { doTest(); }
|
||||
public void testExpressionArgument() { doTest(); }
|
||||
public void testExpressionArgument2() { doTest(); }
|
||||
|
||||
public void testLongEquals() { doTest(); }
|
||||
@@ -44,8 +42,8 @@ public class EqualsReplaceableByObjectsCallFixTest extends IGQuickFixesTestCase
|
||||
public void testShortEquals() { doTest(); }
|
||||
public void testShortNotEquals() { doTest(); }
|
||||
|
||||
public void testSuperEquals() { doTestNoNullCheck(); }
|
||||
public void testThisEquals() { doTestNoNullCheck(); }
|
||||
public void testSuperEquals() { doTest(); }
|
||||
public void testThisEquals() { doTest(); }
|
||||
|
||||
public void testQualifiedThisNotEqual() { doTest(); }
|
||||
public void testQualifiedSuperEqual() { doTest(); }
|
||||
@@ -68,14 +66,8 @@ public class EqualsReplaceableByObjectsCallFixTest extends IGQuickFixesTestCase
|
||||
@Override
|
||||
public void setUp() throws Exception {
|
||||
super.setUp();
|
||||
myInspection = new EqualsReplaceableByObjectsCallInspection();
|
||||
myFixture.enableInspections(myInspection);
|
||||
myFixture.enableInspections(new EqualsReplaceableByObjectsCallInspection());
|
||||
myRelativePath = "migration/equals_replaceable_by_objects_call";
|
||||
myDefaultHint = InspectionGadgetsBundle.message("equals.replaceable.by.objects.call.quickfix");
|
||||
}
|
||||
|
||||
private void doTestNoNullCheck() {
|
||||
myInspection.checkNotNull = false;
|
||||
doTest();
|
||||
}
|
||||
}
|
||||
|
||||
+3
-1
@@ -54,7 +54,9 @@ public class EqualsReplaceableByObjectsCallInspectionTest extends LightInspectio
|
||||
boolean oldNotNull = myInspection.checkNotNull;
|
||||
try {
|
||||
myInspection.checkNotNull = checkNotNull;
|
||||
doTest();
|
||||
|
||||
myFixture.configureByFile(getTestName(false) + ".java");
|
||||
myFixture.testHighlighting(true, true, false);
|
||||
}
|
||||
finally {
|
||||
myInspection.checkNotNull = oldNotNull;
|
||||
|
||||
Reference in New Issue
Block a user