View Javadoc
1   /*
2   HiddenField
3   ignoreFormat = ^i.*$
4   ignoreConstructorParameter = (default)false
5   ignoreSetter = (default)false
6   setterCanReturnItsClass = (default)false
7   ignoreAbstractMethods = (default)false
8   tokens = (default)VARIABLE_DEF, PARAMETER_DEF, PATTERN_VARIABLE_DEF, LAMBDA, RECORD_COMPONENT_DEF
9   
10  
11  */
12  
13  package com.puppycrawl.tools.checkstyle.checks.coding.hiddenfield;
14  
15  ///////////////////////////////////////////////////////////////////////////////////////////////
16  // Test case file for checkstyle.
17  // Created: 2002
18  ///////////////////////////////////////////////////////////////////////////////////////////////
19  
20  /**
21   * Test case for hidden fields
22   * @author Rick Giles
23   **/
24  class InputHiddenField3
25  {
26      private int hidden = 0;
27  
28      public InputHiddenField3()
29      {
30          int hidden = 0; // violation, ''hidden' hides a field'
31      }
32  
33      public InputHiddenField3(int hidden) //parameter shadows field
34      // violation above, ''hidden' hides a field'
35      {
36      }
37  
38      public void shadow()
39      {
40          int hidden = 0; //shadows field // violation, ''hidden' hides a field'
41      }
42  
43      public void shadowFor()
44      {
45          for (int hidden = 0; hidden < 1; hidden++) { //shadows field
46          // violation above, ''hidden' hides a field'
47          }
48      }
49  
50      public void shadowParam(int hidden) //parameter shadows field
51      // violation above, ''hidden' hides a field'
52      {
53      }
54  
55      public class Inner
56      {
57          private int innerHidden = 0;
58  
59          public Inner()
60          {
61              int innerHidden = 0; //shadows field
62          }
63  
64          public Inner(int innerHidden) //shadows field
65          {
66          }
67  
68          private void innerShadow()
69          {
70              int innerHidden = 0; //shadows inner field
71              int hidden = 0; //shadows outer field // violation, ''hidden' hides a field'
72          }
73  
74          private void innerShadowFor()
75          {
76              for (int innerHidden = 0; innerHidden < 1; innerHidden++) {
77              }
78              //shadows outer field
79              for (int hidden = 0; hidden < 1; hidden++) { // violation, ''hidden' hides a field'
80              }
81          }
82  
83          private void shadowParam(
84              int innerHidden, //parameter shadows inner 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
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 NothingHidden3
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 PropertySetter13
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 PropertySetter23
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 StaticFields3
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 StaticMethods3
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 HiddenEnum13
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     HiddenEnum13(int hidden) // violation, ''hidden' hides a field'
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 InputHiddenFieldBug10845123 {
244     String x;
245     public abstract void methodA(String x); // violation, ''x' hides a field'
246 }
247 
248 class Bug33709463 {
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 PropertySetter33
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 PropertySetter33 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 PropertySetter43 {
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 PropertySetter43 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 OneLetterField3
302 {
303     int i;
304 
305     void setI(int i)
306     {
307         this.i = i;
308     }
309     enum Inner {}
310 }
311 
312 class DuplicateFieldFromPreviousClass3
313 {
314     public void method() {
315         int i = 0;
316     }
317 }
318 
319 class NestedEnum3 {
320     enum Test { A, B, C; int i; }
321 
322     void method(int i) {}
323 }