1
2
3
4
5
6
7
8 package com.puppycrawl.tools.checkstyle.checks.coding.equalsavoidnull;
9 import java.util.Map;
10 public class InputEqualsAvoidNull {
11
12 public boolean equals(Object o) {
13 return false;
14 }
15
16
17
18
19
20 public void flagForEquals() {
21
22 Object o = new Object();
23 String s = "pizza";
24
25 o.equals("hot pizza");
26
27 o.equals(s = "cold pizza");
28
29 o.equals(((s = "cold pizza")));
30
31 o.equals("cheese" + "ham" + "sauce");
32
33 o.equals(("cheese" + "ham") + "sauce");
34
35 o.equals((("cheese" + "ham")) + "sauce");
36 }
37
38
39
40
41 public void flagForEqualsIgnoreCase() {
42 String s = "pizza";
43
44 s.equalsIgnoreCase("hot pizza");
45
46 s.equalsIgnoreCase(s = "cold pizza");
47
48 s.equalsIgnoreCase(((s = "cold pizza")));
49
50 s.equalsIgnoreCase("cheese"+"ham"+"sauce");
51
52 s.equalsIgnoreCase(("cheese"+"ham")+"sauce");
53
54 s.equalsIgnoreCase((("cheese"+"ham"))+"sauce");
55 }
56
57
58
59
60 public void flagForBoth() {
61 Object o = new Object();
62 String s = "pizza";
63
64 o.equals("hot pizza");
65
66 o.equals(s = "cold pizza");
67
68 o.equals(((s = "cold pizza")));
69
70 o.equals("cheese" + "ham" + "sauce");
71
72 o.equals(("cheese" + "ham") + "sauce");
73
74 o.equals((("cheese" + "ham")) + "sauce");
75
76 s.equalsIgnoreCase("hot pizza");
77
78 s.equalsIgnoreCase(s = "cold pizza");
79
80 s.equalsIgnoreCase(((s = "cold pizza")));
81
82 s.equalsIgnoreCase("cheese"+"ham"+"sauce");
83
84 s.equalsIgnoreCase(("cheese"+"ham")+"sauce");
85
86 s.equalsIgnoreCase((("cheese"+"ham"))+"sauce");
87 }
88
89
90
91
92
93
94
95 public void noFlagForEquals() {
96 Object o = new Object();
97 String s = "peperoni";
98
99 o.equals(s += "mushrooms");
100
101 (s = "thin crust").equals("thick crust");
102
103 (s += "garlic").equals("basil");
104
105 ("Chicago Style" + "NY Style").equals("California Style" + "Any Style");
106
107 equals("peppers");
108
109 "onions".equals(o);
110
111 o.equals(new Object());
112
113 o.equals(equals(o));
114
115 equals("yummy");
116
117 new Object().equals("more cheese");
118
119 InputEqualsAvoidNullOutter outter = new InputEqualsAvoidNullOutter();
120
121 outter.new InputEqualsAvoidNullInner().equals("eat pizza and enjoy inner classes");
122 }
123
124
125
126
127 public void noFlagForEqualsIgnoreCase() {
128 String s = "peperoni";
129 String s1 = "tasty";
130
131 s.equalsIgnoreCase(s += "mushrooms");
132
133 s1.equalsIgnoreCase(s += "mushrooms");
134
135 (s = "thin crust").equalsIgnoreCase("thick crust");
136
137 (s += "garlic").equalsIgnoreCase("basil");
138
139 ("Chicago Style" + "NY Style").equalsIgnoreCase("California Style" + "Any Style");
140
141 "onions".equalsIgnoreCase(s);
142
143 s.equalsIgnoreCase(new String());
144
145 s.equals(s1);
146
147 new String().equalsIgnoreCase("more cheese");
148
149 }
150
151 public void noFlagForBoth() {
152 Object o = new Object();
153 String s = "peperoni";
154 String s1 = "tasty";
155
156 o.equals(s += "mushrooms");
157
158 (s = "thin crust").equals("thick crust");
159
160 (s += "garlic").equals("basil");
161
162 ("Chicago Style" + "NY Style").equals("California Style" + "Any Style");
163
164 equals("peppers");
165
166 "onions".equals(o);
167
168 o.equals(new Object());
169
170 o.equals(equals(o));
171
172 equals("yummy");
173
174 new Object().equals("more cheese");
175
176 InputEqualsAvoidNullOutter outter = new InputEqualsAvoidNullOutter();
177
178 outter.new InputEqualsAvoidNullInner().equals("eat pizza and enjoy inner classes");
179
180 s.equalsIgnoreCase(s += "mushrooms");
181
182 s1.equalsIgnoreCase(s += "mushrooms");
183
184 (s = "thin crust").equalsIgnoreCase("thick crust");
185
186 (s += "garlic").equalsIgnoreCase("basil");
187
188 ("Chicago Style"+"NY Style").equalsIgnoreCase("California Style"+"Any Style");
189
190 "onions".equalsIgnoreCase(s);
191
192 s.equalsIgnoreCase(new String());
193
194 s.equals(s1);
195
196 new String().equalsIgnoreCase("more cheese");
197
198 }
199
200 }
201
202 class InputEqualsAvoidNullOutter {
203 public class InputEqualsAvoidNullInner {
204 public boolean equals(Object o) {
205 return true;
206 }
207 }
208 }
209
210 class MyString {
211 public boolean equals() {
212 return true;
213 }
214
215 public boolean equals(String s1) {
216 return true;
217 }
218
219 public boolean equalsIgnoreCase() {
220 return true;
221 }
222
223 public boolean equalsIgnoreCase(String s1) {
224 return true;
225 }
226
227 private String pizza;
228
229 public void main() {
230 MyString myString = new MyString();
231 myString.equals();
232 myString.equals("what");
233 myString.equalsIgnoreCase();
234 myString.equalsIgnoreCase("what");
235 myString.equals(this.pizza = "cold pizza");
236 }
237 }
238
239 class NewTest {
240 static String classVar;
241 String instanceVar;
242 NewTest testObj = new NewTest("");
243
244 NewTest(String param) {
245 param.equals("");
246 }
247
248 public void method(String param) {
249 final String localVar = "";
250
251 localVar.equals("");
252 param.equals("");
253
254 classVar.equals("");
255 instanceVar.equals("");
256 NewTest.classVar.equals("");
257 this.classVar.equals("");
258 this.instanceVar.equals("");
259
260 NewTest testObj = new NewTest("");
261 this.testObj.instanceVar.equals("");
262 testObj.classVar.equals("");
263
264 for (Nested instanceVar = new Nested(); instanceVar != null; ) {
265 instanceVar.equals(1);
266 if (instanceVar.equals("")) {
267 instanceVar.equals("");
268 }
269 }
270
271 class Inner {
272 String instanceVarInner;
273
274 public void main() {
275 classVar.equals("");
276 instanceVar.equals("");
277 NewTest.classVar.equals("");
278
279 instanceVarInner.equals("");
280 this.instanceVarInner.equals("");
281 localVar.equals("");
282
283 NewTest testObj = new NewTest("");
284 testObj.instanceVar.equals("");
285 testObj.classVar.equals("");
286
287 Inner testInnerObj = new Inner();
288 testInnerObj.instanceVarInner.equals("");
289 }
290 }
291
292 Inner testInnerObj = new Inner();
293 testInnerObj.instanceVarInner.equals("");
294
295 Nested.nestedClassVar.equals("");
296 Nested Nested = new Nested();
297 Nested.nestedInstanceVar.equals("");
298 Nested.nestedClassVar.equals("");
299 }
300 static {
301 final String s = "";
302 s.equals("");
303 {
304 final String x = "";
305 class A {
306 void foo() {
307 s.equals("");
308 x.equals("");
309 }
310 }
311 }
312 }
313 void foo(String param) {
314 try {
315 param.equals("");
316 do {
317 String s = "";
318 s.equals("");
319 } while (param.equals(""));
320 } catch (Exception e) {
321 while (param.equals("")) {
322 for (String s = ""; s.equals(""); ){
323 if (s.equals("")) {
324 synchronized (this) {
325 switch (s) {
326 case "1": String str = "";
327 str.equals("");
328 case "2": s.equals(""); str = "";
329 str.equals("");
330 case "3": param.equals("");
331 break;
332 }
333 }
334 }
335 }
336 }
337 }
338 }
339 static class Nested {
340 static String nestedClassVar;
341 String nestedInstanceVar;
342 public void method() {
343 classVar.equals("");
344 NewTest.classVar.equals("");
345 this.nestedInstanceVar.equals("");
346 nestedClassVar.equals("");
347 nestedInstanceVar.equals("");
348
349 class Inner {
350 public void method() {
351 classVar.equals("");
352 NewTest.classVar.equals("");
353 nestedClassVar.equals("");
354 nestedInstanceVar.equals("");
355 }
356 }
357 }
358 }
359 enum EmbeddedEnum {
360 A(129),
361 B(283),
362 C(1212) {
363 String constDefVar;
364 public void doSomething() {
365 constDefVar.equals("");
366 }
367 };
368
369 Map.Entry<String,Long> enumInstance;
370
371 EmbeddedEnum(int i) {
372 enumInstance.equals("");
373 }
374
375 public static void doSomethingStatic() {
376 enumStatic.equals("");
377 enumStatic.equals(null);
378 }
379 static String enumStatic;
380 }
381
382 private String foo() {return "";}
383 private Object foo(int i) {return i;}
384
385 Object o2 = new Object();
386 Object o3 = new Object();
387 private void bar() {
388 foo().equals("");
389 foo(0).equals("");
390 this.foo().equals("");
391 Object o1 = new Object(); o1.equals("");
392 o2.equals(""); String o2 = "";
393 o3.equals("");
394 String o3 = "";
395 }
396 }
397 class Anonymous {
398 public static void main(String[] args) {
399 Runnable anonym = new Runnable() {
400 String nullableStr = null;
401 public void run() {
402 nullableStr.equals("Null");
403 };
404 };
405 Object nullableStr = new Object();
406 nullableStr.equals("");
407 }
408 {}
409 }
410
411 enum TestEnum {
412 ONE;
413 public void foo() {
414 TestEnum.ONE.equals(this);
415 this.ONE.equals(this);
416 }
417 }
418
419 class TestConcatenations {
420 String s = null;
421
422 void foo() {
423 s.equals(s + s);
424 s.equals("a" + "b");
425 s.equals(getInt() + s);
426 s.equals(getInt() + getInt());
427 s.endsWith("a");
428 String s = "";
429 if (!s.equals("Hi[EOL]"+System.getProperty("line.separator")))
430 foo();
431 }
432
433 int getInt() {
434 return (Integer) null;
435 }
436 }
437
438 class TestThisWithNotStringInstance {
439
440 MyString notString;
441
442 void foo() {
443 this.notString.equals("");
444 }
445
446 }