View Javadoc
1   ///////////////////////////////////////////////////////////////////////////////////////////////
2   // checkstyle: Checks Java source code and other text files for adherence to a set of rules.
3   // Copyright (C) 2001-2024 the original author or authors.
4   //
5   // This library is free software; you can redistribute it and/or
6   // modify it under the terms of the GNU Lesser General Public
7   // License as published by the Free Software Foundation; either
8   // version 2.1 of the License, or (at your option) any later version.
9   //
10  // This library is distributed in the hope that it will be useful,
11  // but WITHOUT ANY WARRANTY; without even the implied warranty of
12  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  // Lesser General Public License for more details.
14  //
15  // You should have received a copy of the GNU Lesser General Public
16  // License along with this library; if not, write to the Free Software
17  // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
18  ///////////////////////////////////////////////////////////////////////////////////////////////
19  
20  package com.puppycrawl.tools.checkstyle.checks.javadoc;
21  
22  import static com.google.common.truth.Truth.assertWithMessage;
23  import static com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocVariableCheck.MSG_JAVADOC_MISSING;
24  
25  import org.junit.jupiter.api.Test;
26  
27  import com.puppycrawl.tools.checkstyle.AbstractModuleTestSupport;
28  import com.puppycrawl.tools.checkstyle.api.TokenTypes;
29  import com.puppycrawl.tools.checkstyle.utils.CommonUtil;
30  
31  public class JavadocVariableCheckTest
32      extends AbstractModuleTestSupport {
33  
34      @Override
35      protected String getPackageLocation() {
36          return "com/puppycrawl/tools/checkstyle/checks/javadoc/javadocvariable";
37      }
38  
39      @Test
40      public void testGetRequiredTokens() {
41          final JavadocVariableCheck javadocVariableCheck = new JavadocVariableCheck();
42          final int[] actual = javadocVariableCheck.getRequiredTokens();
43          final int[] expected = {
44              TokenTypes.VARIABLE_DEF,
45          };
46          assertWithMessage("Default required tokens are invalid")
47              .that(actual)
48              .isEqualTo(expected);
49      }
50  
51      @Test
52      public void testGetAcceptableTokens() {
53          final JavadocVariableCheck javadocVariableCheck = new JavadocVariableCheck();
54  
55          final int[] actual = javadocVariableCheck.getAcceptableTokens();
56          final int[] expected = {
57              TokenTypes.VARIABLE_DEF,
58              TokenTypes.ENUM_CONSTANT_DEF,
59          };
60  
61          assertWithMessage("Default acceptable tokens are invalid")
62              .that(actual)
63              .isEqualTo(expected);
64      }
65  
66      @Test
67      public void testDefault()
68              throws Exception {
69          final String[] expected = {
70              "18:5: " + getCheckMessage(MSG_JAVADOC_MISSING),
71              "311:5: " + getCheckMessage(MSG_JAVADOC_MISSING),
72              "318:5: " + getCheckMessage(MSG_JAVADOC_MISSING),
73              "337:5: " + getCheckMessage(MSG_JAVADOC_MISSING),
74          };
75          verifyWithInlineConfigParser(
76                  getPath("InputJavadocVariableTags.java"), expected);
77      }
78  
79      @Test
80      public void testAnother()
81              throws Exception {
82          final String[] expected = {
83              "23:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
84              "30:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
85              "36:13: " + getCheckMessage(MSG_JAVADOC_MISSING),
86          };
87          verifyWithInlineConfigParser(
88                  getPath("InputJavadocVariableInner.java"), expected);
89      }
90  
91      @Test
92      public void testAnother2()
93              throws Exception {
94          final String[] expected = CommonUtil.EMPTY_STRING_ARRAY;
95          verifyWithInlineConfigParser(
96                  getPath("InputJavadocVariableInner2.java"), expected);
97      }
98  
99      @Test
100     public void testAnother3()
101             throws Exception {
102         final String[] expected = {
103             "17:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
104             "22:13: " + getCheckMessage(MSG_JAVADOC_MISSING),
105             "42:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
106             "49:5: " + getCheckMessage(MSG_JAVADOC_MISSING),
107             "50:5: " + getCheckMessage(MSG_JAVADOC_MISSING),
108             "51:5: " + getCheckMessage(MSG_JAVADOC_MISSING),
109             "52:5: " + getCheckMessage(MSG_JAVADOC_MISSING),
110         };
111         verifyWithInlineConfigParser(
112                 getPath("InputJavadocVariablePublicOnly.java"), expected);
113     }
114 
115     @Test
116     public void testAnother4()
117             throws Exception {
118         final String[] expected = {
119             "52:5: " + getCheckMessage(MSG_JAVADOC_MISSING),
120         };
121         verifyWithInlineConfigParser(
122                 getPath("InputJavadocVariablePublicOnly2.java"), expected);
123     }
124 
125     @Test
126     public void testJavadocVariableOnInnerClassFields() throws Exception {
127         final String[] expected = {
128             "15:5: " + getCheckMessage(MSG_JAVADOC_MISSING),
129             "16:5: " + getCheckMessage(MSG_JAVADOC_MISSING),
130             "17:5: " + getCheckMessage(MSG_JAVADOC_MISSING),
131             "18:5: " + getCheckMessage(MSG_JAVADOC_MISSING),
132             "26:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
133             "27:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
134             "28:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
135             "29:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
136             "38:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
137             "39:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
138             "40:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
139             "41:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
140             "50:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
141             "51:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
142             "52:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
143             "53:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
144         };
145         verifyWithInlineConfigParser(
146                 getPath("InputJavadocVariableOnInnerClassFields.java"),
147                expected);
148     }
149 
150     @Test
151     public void testJavadocVariableOnPublicInnerClassFields() throws Exception {
152         final String[] expected = {
153             "14:5: " + getCheckMessage(MSG_JAVADOC_MISSING),
154             "15:5: " + getCheckMessage(MSG_JAVADOC_MISSING),
155             "16:5: " + getCheckMessage(MSG_JAVADOC_MISSING),
156             "17:5: " + getCheckMessage(MSG_JAVADOC_MISSING),
157             "25:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
158             "26:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
159             "27:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
160             "28:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
161             "37:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
162             "38:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
163             "39:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
164             "40:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
165             "49:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
166             "50:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
167             "51:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
168             "52:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
169             "61:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
170             "62:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
171             "63:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
172             "64:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
173             "74:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
174         };
175         verifyWithInlineConfigParser(
176                 getPath("InputJavadocVariableOnPublicInnerClassFields.java"),
177                expected);
178     }
179 
180     @Test
181     public void testScopes2() throws Exception {
182         final String[] expected = {
183             "15:5: " + getCheckMessage(MSG_JAVADOC_MISSING),
184             "16:5: " + getCheckMessage(MSG_JAVADOC_MISSING),
185             "26:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
186             "27:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
187         };
188         verifyWithInlineConfigParser(
189                 getPath("InputJavadocVariableNoJavadoc2.java"),
190                expected);
191     }
192 
193     @Test
194     public void testExcludeScope() throws Exception {
195         final String[] expected = {
196             "17:5: " + getCheckMessage(MSG_JAVADOC_MISSING),
197             "18:5: " + getCheckMessage(MSG_JAVADOC_MISSING),
198             "28:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
199             "29:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
200             "38:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
201             "39:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
202             "40:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
203             "41:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
204             "50:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
205             "51:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
206             "52:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
207             "53:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
208             "63:5: " + getCheckMessage(MSG_JAVADOC_MISSING),
209             "64:5: " + getCheckMessage(MSG_JAVADOC_MISSING),
210             "65:5: " + getCheckMessage(MSG_JAVADOC_MISSING),
211             "66:5: " + getCheckMessage(MSG_JAVADOC_MISSING),
212             "74:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
213             "75:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
214             "76:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
215             "77:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
216             "86:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
217             "87:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
218             "88:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
219             "89:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
220             "98:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
221             "99:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
222             "100:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
223             "101:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
224             "110:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
225             "111:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
226             "112:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
227             "113:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
228             "123:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
229         };
230         verifyWithInlineConfigParser(
231                 getPath("InputJavadocVariableNoJavadoc3.java"),
232                expected);
233     }
234 
235     @Test
236     public void testIgnoredVariableNames()
237             throws Exception {
238         final String[] expected = {
239             "15:5: " + getCheckMessage(MSG_JAVADOC_MISSING),
240             "16:5: " + getCheckMessage(MSG_JAVADOC_MISSING),
241             "17:5: " + getCheckMessage(MSG_JAVADOC_MISSING),
242             "18:5: " + getCheckMessage(MSG_JAVADOC_MISSING),
243             "26:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
244             "27:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
245             "28:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
246             "29:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
247             "38:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
248             "39:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
249             "40:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
250             "41:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
251             "50:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
252             "51:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
253             "52:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
254             "53:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
255             "63:5: " + getCheckMessage(MSG_JAVADOC_MISSING),
256             "64:5: " + getCheckMessage(MSG_JAVADOC_MISSING),
257             "65:5: " + getCheckMessage(MSG_JAVADOC_MISSING),
258             "66:5: " + getCheckMessage(MSG_JAVADOC_MISSING),
259             "74:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
260             "75:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
261             "76:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
262             "77:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
263             "86:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
264             "87:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
265             "88:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
266             "89:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
267             "98:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
268             "99:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
269             "100:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
270             "101:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
271             "110:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
272             "111:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
273             "112:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
274             "113:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
275         };
276         verifyWithInlineConfigParser(
277                 getPath("InputJavadocVariableNoJavadoc4.java"),
278                 expected);
279     }
280 
281     @Test
282     public void testDoNotIgnoreAnythingWhenIgnoreNamePatternIsEmpty()
283             throws Exception {
284         final String[] expected = {
285             "15:5: " + getCheckMessage(MSG_JAVADOC_MISSING),
286             "16:5: " + getCheckMessage(MSG_JAVADOC_MISSING),
287             "17:5: " + getCheckMessage(MSG_JAVADOC_MISSING),
288             "18:5: " + getCheckMessage(MSG_JAVADOC_MISSING),
289             "26:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
290             "27:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
291             "28:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
292             "29:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
293             "38:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
294             "39:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
295             "40:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
296             "41:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
297             "50:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
298             "51:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
299             "52:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
300             "53:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
301             "63:5: " + getCheckMessage(MSG_JAVADOC_MISSING),
302             "64:5: " + getCheckMessage(MSG_JAVADOC_MISSING),
303             "65:5: " + getCheckMessage(MSG_JAVADOC_MISSING),
304             "66:5: " + getCheckMessage(MSG_JAVADOC_MISSING),
305             "74:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
306             "75:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
307             "76:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
308             "77:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
309             "86:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
310             "87:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
311             "88:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
312             "89:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
313             "98:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
314             "99:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
315             "100:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
316             "101:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
317             "110:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
318             "111:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
319             "112:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
320             "113:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
321             "123:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
322         };
323         verifyWithInlineConfigParser(
324                 getPath("InputJavadocVariableNoJavadoc5.java"),
325                 expected);
326     }
327 
328     @Test
329     public void testLambdaLocalVariablesDoNotNeedJavadoc() throws Exception {
330         final String[] expected = {
331             "16:5: " + getCheckMessage(MSG_JAVADOC_MISSING),
332         };
333         verifyWithInlineConfigParser(
334                 getPath("InputJavadocVariableNoJavadocNeededInLambda.java"),
335                 expected);
336     }
337 
338     @Test
339     public void testInterfaceMemberScopeIsPublic() throws Exception {
340         final String[] expected = {
341             "18:5: " + getCheckMessage(MSG_JAVADOC_MISSING),
342             "20:5: " + getCheckMessage(MSG_JAVADOC_MISSING),
343             "27:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
344         };
345         verifyWithInlineConfigParser(
346                 getPath("InputJavadocVariableInterfaceMemberScopeIsPublic.java"),
347                 expected);
348     }
349 
350 }