View Javadoc
1   /*
2   HiddenField
3   ignoreFormat = (default)null
4   ignoreConstructorParameter = true
5   setterCanReturnItsClass = (default)false
6   ignoreAbstractMethods = (default)false
7   tokens = (default)VARIABLE_DEF, PARAMETER_DEF, PATTERN_VARIABLE_DEF, LAMBDA, RECORD_COMPONENT_DEF
8   
9   
10  */
11  
12  package com.puppycrawl.tools.checkstyle.checks.coding.hiddenfield;
13  
14  ///////////////////////////////////////////////////////////////////////////////////////////////
15  // Test case file for checkstyle.
16  // Created: 2002
17  ///////////////////////////////////////////////////////////////////////////////////////////////
18  
19  /**
20   * Test case for hidden fields
21   * @author Rick Giles
22   **/
23  class InputHiddenField6
24  {
25      private int hidden = 0;
26  
27      public InputHiddenField6()
28      {
29          int hidden = 0; // violation, ''hidden' hides a field'
30      }
31  
32      public InputHiddenField6(int hidden) //parameter shadows field
33      {
34      }
35  
36      public void shadow()
37      {
38          int hidden = 0; //shadows field // violation, ''hidden' hides a field'
39      }
40  
41      public void shadowFor()
42      {
43          for (int hidden = 0; hidden < 1; hidden++) { //shadows field
44          // violation above, ''hidden' hides a field'
45          }
46      }
47  
48      public void shadowParam(int hidden) //parameter shadows field
49      // violation above, ''hidden' hides a field'
50      {
51      }
52  
53      public class Inner
54      {
55          private int innerHidden = 0;
56  
57          public Inner()
58          {
59              int innerHidden = 0; //shadows field // violation, ''innerHidden' hides a field'
60          }
61  
62          public Inner(int innerHidden) //shadows field
63          {
64          }
65  
66          private void innerShadow()
67          {
68              int innerHidden = 0; //shadows inner field // violation, ''innerHidden' hides a field'
69              int hidden = 0; //shadows outer field // violation, ''hidden' hides a field'
70          }
71  
72          private void innerShadowFor()
73          {
74              for (int innerHidden = 0; innerHidden < 1; innerHidden++) {
75              // violation above, ''innerHidden' hides a field'
76              }
77              //shadows outer field
78              for (int hidden = 0; hidden < 1; hidden++) { // violation, ''hidden' hides a field'
79              }
80          }
81  
82          private void shadowParam(
83              int innerHidden, //parameter shadows inner field
84              // violation above, ''innerHidden' hides a field'
85              int hidden //parameter shadows outer field // violation, ''hidden' hides a field'
86          )
87          {
88          }
89  
90          {
91              int innerHidden = 0;//shadows inner field // violation, ''innerHidden' hides a field'
92              int hidden = 0; //shadows outer field // violation, ''hidden' hides a field'
93          }
94      }
95  
96      {
97          int hidden = 0;//shadows field // violation, ''hidden' hides a field'
98      }
99  }
100 
101 interface NothingHidden6
102 {
103     public static int notHidden = 0;
104 
105     // not a violation
106     public void noShadow(int notHidden);
107 }
108 
109 /** tests ignoring the parameter of a property setter method */
110 class PropertySetter16
111 {
112     private int prop;
113 
114     /** setter */
115     public void setProp(int prop) // violation, ''prop' hides a field'
116     {
117         this.prop = prop;
118     }
119 
120     /** violation - incorrect method name */
121     public void setprop(int prop) // violation, ''prop' hides a field'
122     {
123         this.prop = prop;
124     }
125 
126     /** violation - more than one parameter */
127     public void setProp(int prop, int extra) // violation, ''prop' hides a field'
128     {
129         this.prop = prop;
130     }
131 }
132 
133 /** tests a non-void method */
134 class PropertySetter26
135 {
136     private int prop;
137 
138     /** violation - not a void method */
139     public int setProp(int prop) // violation, ''prop' hides a field'
140     {
141         this.prop = prop;
142         return 0;
143     }
144 }
145 
146 /** tests for static fields */
147 class StaticFields6
148 {
149     private static int hidden;
150 
151     public static void staticMethod()
152     {
153         int hidden; // violation, ''hidden' hides a field'
154     }
155 
156     public void method()
157     {
158         int hidden; // violation, ''hidden' hides a field'
159     }
160 
161     static
162     {
163         int hidden; // violation, ''hidden' hides a field'
164     }
165 
166     {
167         int hidden; // violation, ''hidden' hides a field'
168     }
169 }
170 
171 /** tests static methods & initializers */
172 class StaticMethods6
173 {
174     private int notHidden;
175 
176     public static void method()
177     {
178         // local variables of static methods don't hide instance fields.
179         int notHidden;
180     }
181 
182     static
183     {
184         // local variables of static initializers don't hide instance fields.
185         int notHidden;
186     }
187 
188     private int x;
189     private static int y;
190     static class Inner {
191         void useX(int x) {
192             x++;
193         }
194         void useY(int y) { // violation, ''y' hides a field'
195             y++;
196         }
197     }
198 }
199 
200 enum HiddenEnum16
201 {
202     A(129),
203     B(283),
204     C(1212)
205     {
206         /**
207          * Should not be flagged as violation as we don't check
208          * hidden class level fields
209          */
210         int hidden;
211 
212         public void doSomething()
213         {
214             //Should be flagged as hiding enum constant member
215             int hidden = 0; // violation, ''hidden' hides a field'
216         }
217     };
218 
219     int hidden;
220     static int hiddenStatic;
221 
222     /**
223      * ctor parameter hides member
224      */
225     HiddenEnum16(int hidden)
226     {
227     }
228 
229     public void doSomething()
230     {
231         //Should be flagged as hiding static member
232         int hidden = 0; // violation, ''hidden' hides a field'
233     }
234 
235     public static void doSomethingStatic()
236     {
237         //Should be flagged as hiding static member
238         int hiddenStatic = 0; // violation, ''hiddenStatic' hides a field'
239     }
240 }
241 
242 // we should ignore this if user wants (ignoreAbstractMethods is true)
243 abstract class InputHiddenFieldBug10845126 {
244     String x;
245     public abstract void methodA(String x); // violation, ''x' hides a field'
246 }
247 
248 class Bug33709466 {
249     private int xAxis;
250 
251     public void setxAxis(int xAxis) { // violation, ''xAxis' hides a field'
252         this.xAxis = xAxis;
253     }
254 }
255 
256 /** tests chain-setter */
257 class PropertySetter36
258 {
259     private int prop;
260 
261     /**
262      * if setterCanReturnItsClass == false then
263      *     violation - not a void method
264      *
265      * if setterCanReturnItsClass == true then
266      *     success as it is then considered to be a setter
267      */
268     public PropertySetter36 setProp(int prop) // violation, ''prop' hides a field'
269     {
270         this.prop = prop;
271         return this;
272     }
273 }
274 
275 /** tests setters (both regular and the chain one) on the enum */
276 enum PropertySetter46 {
277     INSTANCE;
278 
279     private int prop;
280     private int prop2;
281 
282     public void setProp(int prop) { // violation, ''prop' hides a field'
283         this.prop = prop;
284     }
285 
286     /**
287      * if setterCanReturnItsClass == false then
288      *     violation - not a void method
289      *
290      * if setterCanReturnItsClass == true then
291      *     success as it is then considered to be a setter
292      */
293     public PropertySetter46 setProp2(int prop2) // violation, ''prop2' hides a field'
294     {
295         this.prop2 = prop2;
296         return this;
297     }
298 }
299 
300 /** Tests setter for one letter field (issue #730). */
301 class OneLetterField6
302 {
303     int i;
304 
305     void setI(int i) // violation, ''i' hides a field'
306     {
307         this.i = i;
308     }
309     enum Inner {}
310 }
311 
312 class DuplicateFieldFromPreviousClass6
313 {
314     public void method() {
315         int i = 0;
316     }
317 }
318 
319 class NestedEnum6 {
320     enum Test { A, B, C; int i; }
321 
322     void method(int i) {}
323 }