View Javadoc
1   /*
2   HiddenField
3   ignoreFormat = (default)null
4   ignoreConstructorParameter = (default)false
5   ignoreSetter = (default)false
6   setterCanReturnItsClass = (default)false
7   ignoreAbstractMethods = true
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 InputHiddenField7
25  {
26      private int hidden = 0;
27  
28      public InputHiddenField7()
29      {
30          int hidden = 0; // violation, ''hidden' hides a field'
31      }
32  
33      public InputHiddenField7(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 // violation, ''innerHidden' hides a field'
62          }
63  
64          public Inner(int innerHidden) //shadows field // violation, ''innerHidden' hides a field'
65          {
66          }
67  
68          private void innerShadow()
69          {
70              int innerHidden = 0; //shadows inner field // violation, ''innerHidden' hides a 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              // violation above, ''innerHidden' hides a field'
78              }
79              //shadows outer field
80              for (int hidden = 0; hidden < 1; hidden++) { // violation, ''hidden' hides a field'
81              }
82          }
83  
84          private void shadowParam(
85              int innerHidden, //parameter shadows inner field
86              // violation above, ''innerHidden' hides a field'
87              int hidden //parameter shadows outer field // violation, ''hidden' hides a field'
88          )
89          {
90          }
91  
92          {
93              int innerHidden = 0;//shadows inner field // violation, ''innerHidden' hides a field'
94              int hidden = 0; //shadows outer field // violation, ''hidden' hides a field'
95          }
96      }
97  
98      {
99          int hidden = 0;//shadows field // violation, ''hidden' hides a field'
100     }
101 }
102 
103 interface NothingHidden7
104 {
105     public static int notHidden = 0;
106 
107     // not a violation
108     public void noShadow(int notHidden);
109 }
110 
111 /** tests ignoring the parameter of a property setter method */
112 class PropertySetter17
113 {
114     private int prop;
115 
116     /** setter */
117     public void setProp(int prop) // violation, ''prop' hides a field'
118     {
119         this.prop = prop;
120     }
121 
122     /** violation - incorrect method name */
123     public void setprop(int prop) // violation, ''prop' hides a field'
124     {
125         this.prop = prop;
126     }
127 
128     /** violation - more than one parameter */
129     public void setProp(int prop, int extra) // violation, ''prop' hides a field'
130     {
131         this.prop = prop;
132     }
133 }
134 
135 /** tests a non-void method */
136 class PropertySetter27
137 {
138     private int prop;
139 
140     /** violation - not a void method */
141     public int setProp(int prop) // violation, ''prop' hides a field'
142     {
143         this.prop = prop;
144         return 0;
145     }
146 }
147 
148 /** tests for static fields */
149 class StaticFields7
150 {
151     private static int hidden;
152 
153     public static void staticMethod()
154     {
155         int hidden; // violation, ''hidden' hides a field'
156     }
157 
158     public void method()
159     {
160         int hidden; // violation, ''hidden' hides a field'
161     }
162 
163     static
164     {
165         int hidden; // violation, ''hidden' hides a field'
166     }
167 
168     {
169         int hidden; // violation, ''hidden' hides a field'
170     }
171 }
172 
173 /** tests static methods & initializers */
174 class StaticMethods7
175 {
176     private int notHidden;
177 
178     public static void method()
179     {
180         // local variables of static methods don't hide instance fields.
181         int notHidden;
182     }
183 
184     static
185     {
186         // local variables of static initializers don't hide instance fields.
187         int notHidden;
188     }
189 
190     private int x;
191     private static int y;
192     static class Inner {
193         void useX(int x) {
194             x++;
195         }
196         void useY(int y) { // violation, ''y' hides a field'
197             y++;
198         }
199     }
200 }
201 
202 enum HiddenEnum17
203 {
204     A(129),
205     B(283),
206     C(1212)
207     {
208         /**
209          * Should not be flagged as violation as we don't check
210          * hidden class level fields
211          */
212         int hidden;
213 
214         public void doSomething()
215         {
216             //Should be flagged as hiding enum constant member
217             int hidden = 0; // violation, ''hidden' hides a field'
218         }
219     };
220 
221     int hidden;
222     static int hiddenStatic;
223 
224     /**
225      * ctor parameter hides member
226      */
227     HiddenEnum17(int hidden) // violation, ''hidden' hides a field'
228     {
229     }
230 
231     public void doSomething()
232     {
233         //Should be flagged as hiding static member
234         int hidden = 0; // violation, ''hidden' hides a field'
235     }
236 
237     public static void doSomethingStatic()
238     {
239         //Should be flagged as hiding static member
240         int hiddenStatic = 0; // violation, ''hiddenStatic' hides a field'
241     }
242 }
243 
244 // we should ignore this if user wants (ignoreAbstractMethods is true)
245 abstract class InputHiddenFieldBug10845127 {
246     String x;
247     public abstract void methodA(String x);
248 }
249 
250 class Bug33709467 {
251     private int xAxis;
252 
253     public void setxAxis(int xAxis) { // violation, ''xAxis' hides a field'
254         this.xAxis = xAxis;
255     }
256 }
257 
258 /** tests chain-setter */
259 class PropertySetter37
260 {
261     private int prop;
262 
263     /**
264      * if setterCanReturnItsClass == false then
265      *     violation - not a void method
266      *
267      * if setterCanReturnItsClass == true then
268      *     success as it is then considered to be a setter
269      */
270     public PropertySetter37 setProp(int prop) // violation, ''prop' hides a field'
271     {
272         this.prop = prop;
273         return this;
274     }
275 }
276 
277 /** tests setters (both regular and the chain one) on the enum */
278 enum PropertySetter47 {
279     INSTANCE;
280 
281     private int prop;
282     private int prop2;
283 
284     public void setProp(int prop) { // violation, ''prop' hides a field'
285         this.prop = prop;
286     }
287 
288     /**
289      * if setterCanReturnItsClass == false then
290      *     violation - not a void method
291      *
292      * if setterCanReturnItsClass == true then
293      *     success as it is then considered to be a setter
294      */
295     public PropertySetter47 setProp2(int prop2) // violation, ''prop2' hides a field'
296     {
297         this.prop2 = prop2;
298         return this;
299     }
300 }
301 
302 /** Tests setter for one letter field (issue #730). */
303 class OneLetterField7
304 {
305     int i;
306 
307     void setI(int i) // violation, ''i' hides a field'
308     {
309         this.i = i;
310     }
311     enum Inner {}
312 }
313 
314 class DuplicateFieldFromPreviousClass7
315 {
316     public void method() {
317         int i = 0;
318     }
319 }
320 
321 class NestedEnum7 {
322     enum Test { A, B, C; int i; }
323 
324     void method(int i) {}
325 }