View Javadoc
1   ///////////////////////////////////////////////////////////////////////////////////////////////
2   // checkstyle: Checks Java source code and other text files for adherence to a set of rules.
3   // Copyright (C) 2001-2026 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;
21  
22  import java.io.IOException;
23  import java.util.Collections;
24  import java.util.HashMap;
25  import java.util.HashSet;
26  import java.util.LinkedHashSet;
27  import java.util.List;
28  import java.util.Map;
29  import java.util.Map.Entry;
30  import java.util.Set;
31  import java.util.function.Supplier;
32  import java.util.stream.Collectors;
33  import java.util.stream.Stream;
34  
35  import com.puppycrawl.tools.checkstyle.api.CheckstyleException;
36  import com.puppycrawl.tools.checkstyle.utils.ModuleReflectionUtil;
37  
38  /**
39   * A factory for creating objects from package names and names.
40   * Consider the below example for better understanding.
41   * <ul>
42   *     <li>module name - name of java class that represents module;</li>
43   *     <li>module full name - fully qualifies name of java class that represents module;</li>
44   *     <li>check module short name - name of Check without 'Check' suffix;</li>
45   *     <li>check module name - name of java class that represents Check (with 'Check' suffix);</li>
46   *     <li>
47   *         check module full name - fully qualifies name of java class
48   *         that represents Check (with 'Check' suffix).
49   *     </li>
50   * </ul>
51   */
52  public class PackageObjectFactory implements ModuleFactory {
53  
54      /**
55       * Enum class to define loading options.
56       */
57      public enum ModuleLoadOption {
58  
59          /**
60           * Searching from registered checkstyle modules and from packages given in constructor.
61           **/
62          SEARCH_REGISTERED_PACKAGES,
63          /**
64           * As SEARCH_REGISTERED_PACKAGES and also try to load class from all of packages given in
65           * constructor.
66           * Required for eclipse-cs plugin.
67           **/
68          TRY_IN_ALL_REGISTERED_PACKAGES,
69  
70      }
71  
72      /** Base package of checkstyle modules checks. */
73      public static final String BASE_PACKAGE = "com.puppycrawl.tools.checkstyle";
74  
75      /** Exception message when it is unable to create a class instance. */
76      public static final String UNABLE_TO_INSTANTIATE_EXCEPTION_MESSAGE =
77              "PackageObjectFactory.unableToInstantiateExceptionMessage";
78  
79      /** Exception message when there is ambiguous module name in config file. */
80      public static final String AMBIGUOUS_MODULE_NAME_EXCEPTION_MESSAGE =
81              "PackageObjectFactory.ambiguousModuleNameExceptionMessage";
82  
83      /** Suffix of checks. */
84      public static final String CHECK_SUFFIX = "Check";
85  
86      /** Character separate package names in qualified name of java class. */
87      public static final String PACKAGE_SEPARATOR = ".";
88  
89      /** Exception message when null class loader is given. */
90      public static final String NULL_LOADER_MESSAGE = "moduleClassLoader must not be null";
91  
92      /** Exception message when null package name is given. */
93      public static final String NULL_PACKAGE_MESSAGE = "package name must not be null";
94  
95      /** Separator to use in strings. */
96      public static final String STRING_SEPARATOR = ", ";
97  
98      /** Map of Checkstyle module names to their fully qualified names. */
99      private static final Map<String, String> NAME_TO_FULL_MODULE_NAME = new HashMap<>();
100 
101     /** Package names to prepend to class names. */
102     private final Set<String> packages;
103 
104     /** The class loader used to load Checkstyle core and custom modules. */
105     private final ClassLoader moduleClassLoader;
106 
107     /** Map of third party Checkstyle module names to the set of their fully qualified names. */
108     private Map<String, Set<String>> thirdPartyNameToFullModuleNames;
109 
110     /** Module load option which defines class search type. */
111     private ModuleLoadOption moduleLoadOption;
112 
113     static {
114         fillShortToFullModuleNamesMap();
115     }
116 
117     /**
118      * Creates a new {@code PackageObjectFactory} instance.
119      *
120      * @param packageNames package names to use
121      * @param moduleClassLoader class loader used to load Checkstyle
122      *          core and custom modules
123      */
124     public PackageObjectFactory(Set<String> packageNames, ClassLoader moduleClassLoader) {
125         this(packageNames, moduleClassLoader, ModuleLoadOption.SEARCH_REGISTERED_PACKAGES);
126     }
127 
128     /**
129      * Creates a new {@code PackageObjectFactory} instance.
130      *
131      * @param packageNames package names to use
132      * @param moduleClassLoader class loader used to load Checkstyle
133      *          core and custom modules
134      * @param moduleLoadOption loading option
135      * @throws IllegalArgumentException if moduleClassLoader is null or packageNames contains null
136      */
137     public PackageObjectFactory(Set<String> packageNames, ClassLoader moduleClassLoader,
138             ModuleLoadOption moduleLoadOption) {
139         if (moduleClassLoader == null) {
140             throw new IllegalArgumentException(NULL_LOADER_MESSAGE);
141         }
142         if (packageNames.contains(null)) {
143             throw new IllegalArgumentException(NULL_PACKAGE_MESSAGE);
144         }
145 
146         // create a copy of the given set, but retain ordering
147         packages = new LinkedHashSet<>(packageNames);
148         this.moduleClassLoader = moduleClassLoader;
149         this.moduleLoadOption = moduleLoadOption;
150     }
151 
152     /**
153      * Creates a new {@code PackageObjectFactory} instance.
154      *
155      * @param packageName The package name to use
156      * @param moduleClassLoader class loader used to load Checkstyle
157      *          core and custom modules
158      * @throws IllegalArgumentException if moduleClassLoader is null or packageNames is null
159      */
160     public PackageObjectFactory(String packageName, ClassLoader moduleClassLoader) {
161         if (moduleClassLoader == null) {
162             throw new IllegalArgumentException(NULL_LOADER_MESSAGE);
163         }
164         if (packageName == null) {
165             throw new IllegalArgumentException(NULL_PACKAGE_MESSAGE);
166         }
167 
168         packages = Collections.singleton(packageName);
169         this.moduleClassLoader = moduleClassLoader;
170     }
171 
172     /**
173      * Creates a new instance of a class from a given name, or that name
174      * concatenated with &quot;Check&quot;. If the name is
175      * a class name, creates an instance of the named class. Otherwise, creates
176      * an instance of a class name obtained by concatenating the given name
177      * to a package name from a given list of package names.
178      *
179      * @param name the name of a class.
180      * @return the {@code Object} created by loader.
181      * @throws CheckstyleException if an error occurs.
182      */
183     @Override
184     public Object createModule(String name) throws CheckstyleException {
185         Object instance = null;
186         // if the name is a simple class name, try to find it in maps at first
187         if (!name.contains(PACKAGE_SEPARATOR)) {
188             instance = createFromStandardCheckSet(name);
189             // find the name in third party map
190             if (instance == null) {
191                 instance = createObjectFromClassPath(name);
192             }
193         }
194         if (instance == null) {
195             instance = createObject(name);
196         }
197         if (instance == null
198                 && moduleLoadOption == ModuleLoadOption.TRY_IN_ALL_REGISTERED_PACKAGES) {
199             instance = createModuleByTryInEachPackage(name);
200         }
201         if (instance == null) {
202             String attemptedNames = null;
203             if (!name.contains(PACKAGE_SEPARATOR)) {
204                 final String nameCheck = name + CHECK_SUFFIX;
205                 attemptedNames = joinPackageNamesWithClassName(name, packages)
206                         + STRING_SEPARATOR + nameCheck + STRING_SEPARATOR
207                         + joinPackageNamesWithClassName(nameCheck, packages);
208             }
209             final LocalizedMessage exceptionMessage = new LocalizedMessage(
210                 Definitions.CHECKSTYLE_BUNDLE, getClass(),
211                 UNABLE_TO_INSTANTIATE_EXCEPTION_MESSAGE, name, attemptedNames);
212             throw new CheckstyleException(exceptionMessage.getMessage());
213         }
214         return instance;
215     }
216 
217     /**
218      * Create object from one of Checkstyle module names.
219      *
220      * @param name name of module.
221      * @return instance of module.
222      * @throws CheckstyleException if the class fails to instantiate or there are ambiguous classes.
223      */
224     private Object createFromStandardCheckSet(String name) throws CheckstyleException {
225         final String fullModuleName = NAME_TO_FULL_MODULE_NAME.get(name);
226         Object instance = null;
227         if (fullModuleName == null) {
228             final String fullCheckModuleName =
229                     NAME_TO_FULL_MODULE_NAME.get(name + CHECK_SUFFIX);
230             if (fullCheckModuleName != null) {
231                 instance = createObject(fullCheckModuleName);
232             }
233         }
234         else {
235             instance = createObject(fullModuleName);
236         }
237         return instance;
238     }
239 
240     /**
241      * Create object with the help of the classpath.
242      *
243      * @param name name of module.
244      * @return instance of module if it is found in modules map and no ambiguous classes exist.
245      * @throws CheckstyleException if the class fails to instantiate or there are ambiguous classes.
246      */
247     private Object createObjectFromClassPath(String name)
248             throws CheckstyleException {
249         thirdPartyNameToFullModuleNames = lazyLoad(
250                 thirdPartyNameToFullModuleNames,
251                 () -> generateThirdPartyNameToFullModuleName(moduleClassLoader)
252         );
253         final Set<String> fullModuleNames = thirdPartyNameToFullModuleNames.get(name);
254         Object instance = null;
255         if (fullModuleNames == null) {
256             final Set<String> fullCheckModuleNames =
257                     thirdPartyNameToFullModuleNames.get(name + CHECK_SUFFIX);
258             if (fullCheckModuleNames != null) {
259                 instance = createObjectFromFullModuleNames(name, fullCheckModuleNames);
260             }
261         }
262         else {
263             instance = createObjectFromFullModuleNames(name, fullModuleNames);
264         }
265         return instance;
266     }
267 
268     /**
269      * Create Object from optional full module names.
270      * In most case, there should be only one element in {@code fullModuleNames}, otherwise
271      * an exception would be thrown.
272      *
273      * @param name name of module
274      * @param fullModuleNames the supplied full module names set
275      * @return instance of module if there is only one element in {@code fullModuleNames}
276      * @throws CheckstyleException if the class fails to instantiate or there are more than one
277      *      element in {@code fullModuleNames}
278      */
279     private Object createObjectFromFullModuleNames(String name, Set<String> fullModuleNames)
280             throws CheckstyleException {
281         final Object returnValue;
282         if (fullModuleNames.size() == 1) {
283             returnValue = createObject(fullModuleNames.iterator().next());
284         }
285         else {
286             final String optionalNames = fullModuleNames.stream()
287                     .sorted()
288                     .collect(Collectors.joining(STRING_SEPARATOR));
289             final LocalizedMessage exceptionMessage = new LocalizedMessage(
290                     Definitions.CHECKSTYLE_BUNDLE, getClass(),
291                     AMBIGUOUS_MODULE_NAME_EXCEPTION_MESSAGE, name, optionalNames);
292             throw new CheckstyleException(exceptionMessage.getMessage());
293         }
294         return returnValue;
295     }
296 
297     /**
298      * Generate the map of third party Checkstyle module names to the set of their fully qualified
299      * names.
300      *
301      * @param loader the class loader used to load Checkstyle package names
302      * @return the map of third party Checkstyle module names to the set of their fully qualified
303      *      names
304      */
305     private Map<String, Set<String>> generateThirdPartyNameToFullModuleName(ClassLoader loader) {
306         Map<String, Set<String>> returnValue;
307         try {
308             returnValue = ModuleReflectionUtil.getCheckstyleModules(packages, loader).stream()
309                 .collect(Collectors.groupingBy(Class::getSimpleName,
310                     Collectors.mapping(
311                         Class::getCanonicalName,
312                         Collectors.toCollection(HashSet::new))));
313         }
314         catch (IOException ignore) {
315             returnValue = Collections.emptyMap();
316         }
317         return returnValue;
318     }
319 
320     /**
321      * Returns simple check name from full modules names map.
322      *
323      * @param fullName name of the class for joining.
324      * @return simple check name.
325      */
326     public static String getShortFromFullModuleNames(String fullName) {
327         return NAME_TO_FULL_MODULE_NAME
328                 .entrySet()
329                 .stream()
330                 .filter(entry -> entry.getValue().equals(fullName))
331                 .findFirst()
332                 .map(Entry::getKey)
333                 .orElse(fullName);
334     }
335 
336     /**
337      * Creates a string by joining package names with a class name.
338      *
339      * @param className name of the class for joining.
340      * @param packages packages names.
341      * @return a string which is obtained by joining package names with a class name.
342      */
343     private static String joinPackageNamesWithClassName(String className, Set<String> packages) {
344         return packages.stream().collect(
345             Collectors.joining(PACKAGE_SEPARATOR + className + STRING_SEPARATOR, "",
346                     PACKAGE_SEPARATOR + className));
347     }
348 
349     /**
350      * Creates a new instance of a named class.
351      *
352      * @param className the name of the class to instantiate.
353      * @return the {@code Object} created by loader or null.
354      * @throws CheckstyleException if the class fails to instantiate.
355      */
356     private Object createObject(String className) throws CheckstyleException {
357         Class<?> clazz = null;
358 
359         try {
360             clazz = Class.forName(className, true, moduleClassLoader);
361         }
362         catch (final ReflectiveOperationException | NoClassDefFoundError ignored) {
363             // ignore the exception
364         }
365 
366         Object instance = null;
367 
368         if (clazz != null) {
369             try {
370                 instance = clazz.getDeclaredConstructor().newInstance();
371             }
372             catch (final ReflectiveOperationException exc) {
373                 throw new CheckstyleException("Unable to instantiate " + className, exc);
374             }
375         }
376 
377         return instance;
378     }
379 
380     /**
381      * Searching to class with given name (or name concatenated with &quot;Check&quot;) in existing
382      * packages. Returns instance if class found or, otherwise, null.
383      *
384      * @param name the name of a class.
385      * @return the {@code Object} created by loader.
386      * @throws CheckstyleException if an error occurs.
387      */
388     private Object createModuleByTryInEachPackage(String name) throws CheckstyleException {
389         final List<String> possibleNames = packages.stream()
390             .map(packageName -> packageName + PACKAGE_SEPARATOR + name)
391             .flatMap(className -> Stream.of(className, className + CHECK_SUFFIX))
392             .toList();
393         Object instance = null;
394         for (String possibleName : possibleNames) {
395             instance = createObject(possibleName);
396             if (instance != null) {
397                 break;
398             }
399         }
400         return instance;
401     }
402 
403     /**
404      * Initialize object by supplier if object is null.
405      *
406      * @param <T> type of object
407      * @param object object to initialize
408      * @param supplier function to initialize if object is null
409      * @return object as it was provided in method or initialized
410      */
411     private static <T> T lazyLoad(T object, Supplier<T> supplier) {
412         final T result;
413         if (object == null) {
414             result = supplier.get();
415         }
416         else {
417             result = object;
418         }
419         return result;
420     }
421 
422     /**
423      * Fill short-to-full module names map.
424      */
425     private static void fillShortToFullModuleNamesMap() {
426         fillChecksFromAnnotationPackage();
427         fillChecksFromBlocksPackage();
428         fillChecksFromCodingPackage();
429         fillChecksFromDesignPackage();
430         fillChecksFromHeaderPackage();
431         fillChecksFromImportsPackage();
432         fillChecksFromIndentationPackage();
433         fillChecksFromJavadocPackage();
434         fillChecksFromMetricsPackage();
435         fillChecksFromModifierPackage();
436         fillChecksFromNamingPackage();
437         fillChecksFromRegexpPackage();
438         fillChecksFromSizesPackage();
439         fillChecksFromWhitespacePackage();
440         fillModulesFromChecksPackage();
441         fillModulesFromFilefiltersPackage();
442         fillModulesFromFiltersPackage();
443         fillModulesFromCheckstylePackage();
444     }
445 
446     /**
447      * Fill short-to-full module names map with Checks from annotation package.
448      */
449     private static void fillChecksFromAnnotationPackage() {
450         NAME_TO_FULL_MODULE_NAME.put("AnnotationLocationCheck",
451                 BASE_PACKAGE + ".checks.annotation.AnnotationLocationCheck");
452         NAME_TO_FULL_MODULE_NAME.put("AnnotationOnSameLineCheck",
453                 BASE_PACKAGE + ".checks.annotation.AnnotationOnSameLineCheck");
454         NAME_TO_FULL_MODULE_NAME.put("AnnotationUseStyleCheck",
455                 BASE_PACKAGE + ".checks.annotation.AnnotationUseStyleCheck");
456         NAME_TO_FULL_MODULE_NAME.put("MissingDeprecatedCheck",
457                 BASE_PACKAGE + ".checks.annotation.MissingDeprecatedCheck");
458         NAME_TO_FULL_MODULE_NAME.put("MissingOverrideCheck",
459                 BASE_PACKAGE + ".checks.annotation.MissingOverrideCheck");
460         NAME_TO_FULL_MODULE_NAME.put("MissingOverrideOnRecordAccessorCheck",
461                 BASE_PACKAGE + ".checks.annotation.MissingOverrideOnRecordAccessorCheck");
462         NAME_TO_FULL_MODULE_NAME.put("PackageAnnotationCheck",
463                 BASE_PACKAGE + ".checks.annotation.PackageAnnotationCheck");
464         NAME_TO_FULL_MODULE_NAME.put("SuppressWarningsCheck",
465                 BASE_PACKAGE + ".checks.annotation.SuppressWarningsCheck");
466     }
467 
468     /**
469      * Fill short-to-full module names map with Checks from blocks package.
470      */
471     private static void fillChecksFromBlocksPackage() {
472         NAME_TO_FULL_MODULE_NAME.put("AvoidNestedBlocksCheck",
473                 BASE_PACKAGE + ".checks.blocks.AvoidNestedBlocksCheck");
474         NAME_TO_FULL_MODULE_NAME.put("EmptyBlockCheck",
475                 BASE_PACKAGE + ".checks.blocks.EmptyBlockCheck");
476         NAME_TO_FULL_MODULE_NAME.put("EmptyCatchBlockCheck",
477                 BASE_PACKAGE + ".checks.blocks.EmptyCatchBlockCheck");
478         NAME_TO_FULL_MODULE_NAME.put("LeftCurlyCheck",
479                 BASE_PACKAGE + ".checks.blocks.LeftCurlyCheck");
480         NAME_TO_FULL_MODULE_NAME.put("NeedBracesCheck",
481                 BASE_PACKAGE + ".checks.blocks.NeedBracesCheck");
482         NAME_TO_FULL_MODULE_NAME.put("RightCurlyCheck",
483                 BASE_PACKAGE + ".checks.blocks.RightCurlyCheck");
484     }
485 
486     /**
487      * Fill short-to-full module names map with Checks from coding package.
488      */
489     // -@cs[ExecutableStatementCount] splitting this method is not reasonable.
490     // -@cs[JavaNCSS] splitting this method is not reasonable.
491     private static void fillChecksFromCodingPackage() {
492         NAME_TO_FULL_MODULE_NAME.put("ArrayTrailingCommaCheck",
493                 BASE_PACKAGE + ".checks.coding.ArrayTrailingCommaCheck");
494         NAME_TO_FULL_MODULE_NAME.put("AvoidDoubleBraceInitializationCheck",
495                 BASE_PACKAGE + ".checks.coding.AvoidDoubleBraceInitializationCheck");
496         NAME_TO_FULL_MODULE_NAME.put("AvoidInlineConditionalsCheck",
497                 BASE_PACKAGE + ".checks.coding.AvoidInlineConditionalsCheck");
498         NAME_TO_FULL_MODULE_NAME.put("AvoidNoArgumentSuperConstructorCallCheck",
499                 BASE_PACKAGE + ".checks.coding.AvoidNoArgumentSuperConstructorCallCheck");
500         NAME_TO_FULL_MODULE_NAME.put("ConstructorsDeclarationGroupingCheck",
501                 BASE_PACKAGE + ".checks.coding.ConstructorsDeclarationGroupingCheck");
502         NAME_TO_FULL_MODULE_NAME.put("CovariantEqualsCheck",
503                 BASE_PACKAGE + ".checks.coding.CovariantEqualsCheck");
504         NAME_TO_FULL_MODULE_NAME.put("DeclarationOrderCheck",
505                 BASE_PACKAGE + ".checks.coding.DeclarationOrderCheck");
506         NAME_TO_FULL_MODULE_NAME.put("DefaultComesLastCheck",
507                 BASE_PACKAGE + ".checks.coding.DefaultComesLastCheck");
508         NAME_TO_FULL_MODULE_NAME.put("EmptyStatementCheck",
509                 BASE_PACKAGE + ".checks.coding.EmptyStatementCheck");
510         NAME_TO_FULL_MODULE_NAME.put("EqualsAvoidNullCheck",
511                 BASE_PACKAGE + ".checks.coding.EqualsAvoidNullCheck");
512         NAME_TO_FULL_MODULE_NAME.put("EqualsHashCodeCheck",
513                 BASE_PACKAGE + ".checks.coding.EqualsHashCodeCheck");
514         NAME_TO_FULL_MODULE_NAME.put("ExplicitInitializationCheck",
515                 BASE_PACKAGE + ".checks.coding.ExplicitInitializationCheck");
516         NAME_TO_FULL_MODULE_NAME.put("FallThroughCheck",
517                 BASE_PACKAGE + ".checks.coding.FallThroughCheck");
518         NAME_TO_FULL_MODULE_NAME.put("FinalLocalVariableCheck",
519                 BASE_PACKAGE + ".checks.coding.FinalLocalVariableCheck");
520         NAME_TO_FULL_MODULE_NAME.put("HiddenFieldCheck",
521                 BASE_PACKAGE + ".checks.coding.HiddenFieldCheck");
522         NAME_TO_FULL_MODULE_NAME.put("IllegalCatchCheck",
523                 BASE_PACKAGE + ".checks.coding.IllegalCatchCheck");
524         NAME_TO_FULL_MODULE_NAME.put("IllegalInstantiationCheck",
525                 BASE_PACKAGE + ".checks.coding.IllegalInstantiationCheck");
526         NAME_TO_FULL_MODULE_NAME.put("IllegalSymbolCheck",
527                 BASE_PACKAGE + ".checks.coding.IllegalSymbolCheck");
528         NAME_TO_FULL_MODULE_NAME.put("IllegalThrowsCheck",
529                 BASE_PACKAGE + ".checks.coding.IllegalThrowsCheck");
530         NAME_TO_FULL_MODULE_NAME.put("IllegalTokenCheck",
531                 BASE_PACKAGE + ".checks.coding.IllegalTokenCheck");
532         NAME_TO_FULL_MODULE_NAME.put("IllegalTokenTextCheck",
533                 BASE_PACKAGE + ".checks.coding.IllegalTokenTextCheck");
534         NAME_TO_FULL_MODULE_NAME.put("IllegalTypeCheck",
535                 BASE_PACKAGE + ".checks.coding.IllegalTypeCheck");
536         NAME_TO_FULL_MODULE_NAME.put("InnerAssignmentCheck",
537                 BASE_PACKAGE + ".checks.coding.InnerAssignmentCheck");
538         NAME_TO_FULL_MODULE_NAME.put("MagicNumberCheck",
539                 BASE_PACKAGE + ".checks.coding.MagicNumberCheck");
540         NAME_TO_FULL_MODULE_NAME.put("MissingCtorCheck",
541                 BASE_PACKAGE + ".checks.coding.MissingCtorCheck");
542         NAME_TO_FULL_MODULE_NAME.put("MissingNullCaseInSwitchCheck",
543                 BASE_PACKAGE + ".checks.coding.MissingNullCaseInSwitchCheck");
544         NAME_TO_FULL_MODULE_NAME.put("MissingSwitchDefaultCheck",
545                 BASE_PACKAGE + ".checks.coding.MissingSwitchDefaultCheck");
546         NAME_TO_FULL_MODULE_NAME.put("ModifiedControlVariableCheck",
547                 BASE_PACKAGE + ".checks.coding.ModifiedControlVariableCheck");
548         NAME_TO_FULL_MODULE_NAME.put("MultipleStringLiteralsCheck",
549                 BASE_PACKAGE + ".checks.coding.MultipleStringLiteralsCheck");
550         NAME_TO_FULL_MODULE_NAME.put("MultipleVariableDeclarationsCheck",
551                 BASE_PACKAGE + ".checks.coding.MultipleVariableDeclarationsCheck");
552         NAME_TO_FULL_MODULE_NAME.put("NestedForDepthCheck",
553                 BASE_PACKAGE + ".checks.coding.NestedForDepthCheck");
554         NAME_TO_FULL_MODULE_NAME.put("NestedIfDepthCheck",
555                 BASE_PACKAGE + ".checks.coding.NestedIfDepthCheck");
556         NAME_TO_FULL_MODULE_NAME.put("NestedTryDepthCheck",
557                 BASE_PACKAGE + ".checks.coding.NestedTryDepthCheck");
558         NAME_TO_FULL_MODULE_NAME.put("NoCloneCheck",
559                 BASE_PACKAGE + ".checks.coding.NoCloneCheck");
560         NAME_TO_FULL_MODULE_NAME.put("NoEnumTrailingCommaCheck",
561                 BASE_PACKAGE + ".checks.coding.NoEnumTrailingCommaCheck");
562         NAME_TO_FULL_MODULE_NAME.put("NoFinalizerCheck",
563                 BASE_PACKAGE + ".checks.coding.NoFinalizerCheck");
564         NAME_TO_FULL_MODULE_NAME.put("OneStatementPerLineCheck",
565                 BASE_PACKAGE + ".checks.coding.OneStatementPerLineCheck");
566         NAME_TO_FULL_MODULE_NAME.put("OverloadMethodsDeclarationOrderCheck",
567                 BASE_PACKAGE + ".checks.coding.OverloadMethodsDeclarationOrderCheck");
568         NAME_TO_FULL_MODULE_NAME.put("PackageDeclarationCheck",
569                 BASE_PACKAGE + ".checks.coding.PackageDeclarationCheck");
570         NAME_TO_FULL_MODULE_NAME.put("PatternVariableAssignmentCheck",
571                 BASE_PACKAGE + ".checks.coding.PatternVariableAssignmentCheck");
572         NAME_TO_FULL_MODULE_NAME.put("ParameterAssignmentCheck",
573                 BASE_PACKAGE + ".checks.coding.ParameterAssignmentCheck");
574         NAME_TO_FULL_MODULE_NAME.put("RequireThisCheck",
575                 BASE_PACKAGE + ".checks.coding.RequireThisCheck");
576         NAME_TO_FULL_MODULE_NAME.put("ReturnCountCheck",
577                 BASE_PACKAGE + ".checks.coding.ReturnCountCheck");
578         NAME_TO_FULL_MODULE_NAME.put("SimplifyBooleanExpressionCheck",
579                 BASE_PACKAGE + ".checks.coding.SimplifyBooleanExpressionCheck");
580         NAME_TO_FULL_MODULE_NAME.put("SimplifyBooleanReturnCheck",
581                 BASE_PACKAGE + ".checks.coding.SimplifyBooleanReturnCheck");
582         NAME_TO_FULL_MODULE_NAME.put("StringLiteralEqualityCheck",
583                 BASE_PACKAGE + ".checks.coding.StringLiteralEqualityCheck");
584         NAME_TO_FULL_MODULE_NAME.put("SuperCloneCheck",
585                 BASE_PACKAGE + ".checks.coding.SuperCloneCheck");
586         NAME_TO_FULL_MODULE_NAME.put("SuperFinalizeCheck",
587                 BASE_PACKAGE + ".checks.coding.SuperFinalizeCheck");
588         NAME_TO_FULL_MODULE_NAME.put("UnnecessaryParenthesesCheck",
589                 BASE_PACKAGE + ".checks.coding.UnnecessaryParenthesesCheck");
590         NAME_TO_FULL_MODULE_NAME.put("UnnecessarySemicolonAfterOuterTypeDeclarationCheck",
591                 BASE_PACKAGE
592                         + ".checks.coding.UnnecessarySemicolonAfterOuterTypeDeclarationCheck");
593         NAME_TO_FULL_MODULE_NAME.put("UnnecessarySemicolonAfterTypeMemberDeclarationCheck",
594                 BASE_PACKAGE
595                     + ".checks.coding.UnnecessarySemicolonAfterTypeMemberDeclarationCheck");
596         NAME_TO_FULL_MODULE_NAME.put("UnnecessarySemicolonInEnumerationCheck",
597                 BASE_PACKAGE + ".checks.coding.UnnecessarySemicolonInEnumerationCheck");
598         NAME_TO_FULL_MODULE_NAME.put("UnnecessarySemicolonInTryWithResourcesCheck",
599                 BASE_PACKAGE + ".checks.coding.UnnecessarySemicolonInTryWithResourcesCheck");
600         NAME_TO_FULL_MODULE_NAME.put("UseEnhancedSwitchCheck",
601             BASE_PACKAGE + ".checks.coding.UseEnhancedSwitchCheck");
602         NAME_TO_FULL_MODULE_NAME.put("VariableDeclarationUsageDistanceCheck",
603                 BASE_PACKAGE + ".checks.coding.VariableDeclarationUsageDistanceCheck");
604         NAME_TO_FULL_MODULE_NAME.put("WhenShouldBeUsedCheck",
605                 BASE_PACKAGE + ".checks.coding.WhenShouldBeUsedCheck");
606         NAME_TO_FULL_MODULE_NAME.put("NoArrayTrailingCommaCheck",
607                 BASE_PACKAGE + ".checks.coding.NoArrayTrailingCommaCheck");
608         NAME_TO_FULL_MODULE_NAME.put("MatchXpathCheck",
609                 BASE_PACKAGE + ".checks.coding.MatchXpathCheck");
610         NAME_TO_FULL_MODULE_NAME.put("TextBlockGoogleStyleFormattingCheck",
611                 BASE_PACKAGE + ".checks.coding.TextBlockGoogleStyleFormattingCheck");
612         NAME_TO_FULL_MODULE_NAME.put("UnusedLocalVariableCheck",
613                 BASE_PACKAGE + ".checks.coding.UnusedLocalVariableCheck");
614         NAME_TO_FULL_MODULE_NAME.put("UnusedCatchParameterShouldBeUnnamedCheck",
615                 BASE_PACKAGE + ".checks.coding.UnusedCatchParameterShouldBeUnnamedCheck");
616         NAME_TO_FULL_MODULE_NAME.put("UnusedLambdaParameterShouldBeUnnamedCheck",
617                 BASE_PACKAGE + ".checks.coding.UnusedLambdaParameterShouldBeUnnamedCheck");
618         NAME_TO_FULL_MODULE_NAME.put("UnnecessaryNullCheckWithInstanceOfCheck",
619                 BASE_PACKAGE + ".checks.coding.UnnecessaryNullCheckWithInstanceOfCheck");
620     }
621 
622     /**
623      * Fill short-to-full module names map with Checks from design package.
624      */
625     private static void fillChecksFromDesignPackage() {
626         NAME_TO_FULL_MODULE_NAME.put("DesignForExtensionCheck",
627                 BASE_PACKAGE + ".checks.design.DesignForExtensionCheck");
628         NAME_TO_FULL_MODULE_NAME.put("FinalClassCheck",
629                 BASE_PACKAGE + ".checks.design.FinalClassCheck");
630         NAME_TO_FULL_MODULE_NAME.put("HideUtilityClassConstructorCheck",
631                 BASE_PACKAGE + ".checks.design.HideUtilityClassConstructorCheck");
632         NAME_TO_FULL_MODULE_NAME.put("InnerTypeLastCheck",
633                 BASE_PACKAGE + ".checks.design.InnerTypeLastCheck");
634         NAME_TO_FULL_MODULE_NAME.put("InterfaceIsTypeCheck",
635                 BASE_PACKAGE + ".checks.design.InterfaceIsTypeCheck");
636         NAME_TO_FULL_MODULE_NAME.put("MutableExceptionCheck",
637                 BASE_PACKAGE + ".checks.design.MutableExceptionCheck");
638         NAME_TO_FULL_MODULE_NAME.put("OneTopLevelClassCheck",
639                 BASE_PACKAGE + ".checks.design.OneTopLevelClassCheck");
640         NAME_TO_FULL_MODULE_NAME.put("SealedShouldHavePermitsListCheck",
641                 BASE_PACKAGE + ".checks.design.SealedShouldHavePermitsListCheck");
642         NAME_TO_FULL_MODULE_NAME.put("ThrowsCountCheck",
643                 BASE_PACKAGE + ".checks.design.ThrowsCountCheck");
644         NAME_TO_FULL_MODULE_NAME.put("VisibilityModifierCheck",
645                 BASE_PACKAGE + ".checks.design.VisibilityModifierCheck");
646     }
647 
648     /**
649      * Fill short-to-full module names map with Checks from header package.
650      */
651     private static void fillChecksFromHeaderPackage() {
652         NAME_TO_FULL_MODULE_NAME.put("HeaderCheck",
653                 BASE_PACKAGE + ".checks.header.HeaderCheck");
654         NAME_TO_FULL_MODULE_NAME.put("RegexpHeaderCheck",
655                 BASE_PACKAGE + ".checks.header.RegexpHeaderCheck");
656         NAME_TO_FULL_MODULE_NAME.put("MultiFileRegexpHeaderCheck",
657                 BASE_PACKAGE + ".checks.header.MultiFileRegexpHeaderCheck");
658     }
659 
660     /**
661      * Fill short-to-full module names map with Checks from imports package.
662      */
663     private static void fillChecksFromImportsPackage() {
664         NAME_TO_FULL_MODULE_NAME.put("AvoidStarImportCheck",
665                 BASE_PACKAGE + ".checks.imports.AvoidStarImportCheck");
666         NAME_TO_FULL_MODULE_NAME.put("AvoidStaticImportCheck",
667                 BASE_PACKAGE + ".checks.imports.AvoidStaticImportCheck");
668         NAME_TO_FULL_MODULE_NAME.put("CustomImportOrderCheck",
669                 BASE_PACKAGE + ".checks.imports.CustomImportOrderCheck");
670         NAME_TO_FULL_MODULE_NAME.put("IllegalImportCheck",
671                 BASE_PACKAGE + ".checks.imports.IllegalImportCheck");
672         NAME_TO_FULL_MODULE_NAME.put("ImportControlCheck",
673                 BASE_PACKAGE + ".checks.imports.ImportControlCheck");
674         NAME_TO_FULL_MODULE_NAME.put("ImportOrderCheck",
675                 BASE_PACKAGE + ".checks.imports.ImportOrderCheck");
676         NAME_TO_FULL_MODULE_NAME.put("RedundantImportCheck",
677                 BASE_PACKAGE + ".checks.imports.RedundantImportCheck");
678         NAME_TO_FULL_MODULE_NAME.put("UnusedImportsCheck",
679                 BASE_PACKAGE + ".checks.imports.UnusedImportsCheck");
680     }
681 
682     /**
683      * Fill short-to-full module names map with Checks from indentation package.
684      */
685     private static void fillChecksFromIndentationPackage() {
686         NAME_TO_FULL_MODULE_NAME.put("CommentsIndentationCheck",
687                 BASE_PACKAGE + ".checks.indentation.CommentsIndentationCheck");
688         NAME_TO_FULL_MODULE_NAME.put("IndentationCheck",
689                 BASE_PACKAGE + ".checks.indentation.IndentationCheck");
690     }
691 
692     /**
693      * Fill short-to-full module names map with Checks from javadoc package.
694      */
695     private static void fillChecksFromJavadocPackage() {
696         NAME_TO_FULL_MODULE_NAME.put("AtclauseOrderCheck",
697                 BASE_PACKAGE + ".checks.javadoc.AtclauseOrderCheck");
698         NAME_TO_FULL_MODULE_NAME.put("InvalidJavadocPositionCheck",
699                 BASE_PACKAGE + ".checks.javadoc.InvalidJavadocPositionCheck");
700         NAME_TO_FULL_MODULE_NAME.put("JavadocBlockTagLocationCheck",
701                 BASE_PACKAGE + ".checks.javadoc.JavadocBlockTagLocationCheck");
702         NAME_TO_FULL_MODULE_NAME.put("JavadocContentLocationCheck",
703                 BASE_PACKAGE + ".checks.javadoc.JavadocContentLocationCheck");
704         NAME_TO_FULL_MODULE_NAME.put("JavadocLeadingAsteriskAlignCheck",
705                 BASE_PACKAGE + ".checks.javadoc.JavadocLeadingAsteriskAlignCheck");
706         NAME_TO_FULL_MODULE_NAME.put("JavadocMethodCheck",
707                 BASE_PACKAGE + ".checks.javadoc.JavadocMethodCheck");
708         NAME_TO_FULL_MODULE_NAME.put("JavadocMissingLeadingAsteriskCheck",
709                 BASE_PACKAGE + ".checks.javadoc.JavadocMissingLeadingAsteriskCheck");
710         NAME_TO_FULL_MODULE_NAME.put("JavadocMissingWhitespaceAfterAsteriskCheck",
711                 BASE_PACKAGE + ".checks.javadoc.JavadocMissingWhitespaceAfterAsteriskCheck");
712         NAME_TO_FULL_MODULE_NAME.put("JavadocPackageCheck",
713                 BASE_PACKAGE + ".checks.javadoc.JavadocPackageCheck");
714         NAME_TO_FULL_MODULE_NAME.put("JavadocParagraphCheck",
715                 BASE_PACKAGE + ".checks.javadoc.JavadocParagraphCheck");
716         NAME_TO_FULL_MODULE_NAME.put("JavadocStyleCheck",
717                 BASE_PACKAGE + ".checks.javadoc.JavadocStyleCheck");
718         NAME_TO_FULL_MODULE_NAME.put("JavadocTagContinuationIndentationCheck",
719                 BASE_PACKAGE + ".checks.javadoc.JavadocTagContinuationIndentationCheck");
720         NAME_TO_FULL_MODULE_NAME.put("JavadocTypeCheck",
721                 BASE_PACKAGE + ".checks.javadoc.JavadocTypeCheck");
722         NAME_TO_FULL_MODULE_NAME.put("JavadocVariableCheck",
723                 BASE_PACKAGE + ".checks.javadoc.JavadocVariableCheck");
724         NAME_TO_FULL_MODULE_NAME.put("MissingJavadocMethodCheck",
725                 BASE_PACKAGE + ".checks.javadoc.MissingJavadocMethodCheck");
726         NAME_TO_FULL_MODULE_NAME.put("MissingJavadocPackageCheck",
727                 BASE_PACKAGE + ".checks.javadoc.MissingJavadocPackageCheck");
728         NAME_TO_FULL_MODULE_NAME.put("MissingJavadocTypeCheck",
729                 BASE_PACKAGE + ".checks.javadoc.MissingJavadocTypeCheck");
730         NAME_TO_FULL_MODULE_NAME.put("NonEmptyAtclauseDescriptionCheck",
731                 BASE_PACKAGE + ".checks.javadoc.NonEmptyAtclauseDescriptionCheck");
732         NAME_TO_FULL_MODULE_NAME.put("RequireEmptyLineBeforeBlockTagGroupCheck",
733                 BASE_PACKAGE + ".checks.javadoc.RequireEmptyLineBeforeBlockTagGroupCheck");
734         NAME_TO_FULL_MODULE_NAME.put("SingleLineJavadocCheck",
735                 BASE_PACKAGE + ".checks.javadoc.SingleLineJavadocCheck");
736         NAME_TO_FULL_MODULE_NAME.put("SummaryJavadocCheck",
737                 BASE_PACKAGE + ".checks.javadoc.SummaryJavadocCheck");
738         NAME_TO_FULL_MODULE_NAME.put("WriteTagCheck",
739                 BASE_PACKAGE + ".checks.javadoc.WriteTagCheck");
740     }
741 
742     /**
743      * Fill short-to-full module names map with Checks from metrics package.
744      */
745     private static void fillChecksFromMetricsPackage() {
746         NAME_TO_FULL_MODULE_NAME.put("BooleanExpressionComplexityCheck",
747                 BASE_PACKAGE + ".checks.metrics.BooleanExpressionComplexityCheck");
748         NAME_TO_FULL_MODULE_NAME.put("ClassDataAbstractionCouplingCheck",
749                 BASE_PACKAGE + ".checks.metrics.ClassDataAbstractionCouplingCheck");
750         NAME_TO_FULL_MODULE_NAME.put("ClassFanOutComplexityCheck",
751                 BASE_PACKAGE + ".checks.metrics.ClassFanOutComplexityCheck");
752         NAME_TO_FULL_MODULE_NAME.put("CyclomaticComplexityCheck",
753                 BASE_PACKAGE + ".checks.metrics.CyclomaticComplexityCheck");
754         NAME_TO_FULL_MODULE_NAME.put("JavaNCSSCheck",
755                 BASE_PACKAGE + ".checks.metrics.JavaNCSSCheck");
756         NAME_TO_FULL_MODULE_NAME.put("NPathComplexityCheck",
757                 BASE_PACKAGE + ".checks.metrics.NPathComplexityCheck");
758     }
759 
760     /**
761      * Fill short-to-full module names map with Checks from modifier package.
762      */
763     private static void fillChecksFromModifierPackage() {
764         NAME_TO_FULL_MODULE_NAME.put("ClassMemberImpliedModifierCheck",
765             BASE_PACKAGE + ".checks.modifier.ClassMemberImpliedModifierCheck");
766         NAME_TO_FULL_MODULE_NAME.put("InterfaceMemberImpliedModifierCheck",
767             BASE_PACKAGE + ".checks.modifier.InterfaceMemberImpliedModifierCheck");
768         NAME_TO_FULL_MODULE_NAME.put("ModifierOrderCheck",
769                 BASE_PACKAGE + ".checks.modifier.ModifierOrderCheck");
770         NAME_TO_FULL_MODULE_NAME.put("RedundantModifierCheck",
771                 BASE_PACKAGE + ".checks.modifier.RedundantModifierCheck");
772     }
773 
774     /**
775      * Fill short-to-full module names map with Checks from naming package.
776      */
777     private static void fillChecksFromNamingPackage() {
778         NAME_TO_FULL_MODULE_NAME.put("AbbreviationAsWordInNameCheck",
779                 BASE_PACKAGE + ".checks.naming.AbbreviationAsWordInNameCheck");
780         NAME_TO_FULL_MODULE_NAME.put("AbstractClassNameCheck",
781                 BASE_PACKAGE + ".checks.naming.AbstractClassNameCheck");
782         NAME_TO_FULL_MODULE_NAME.put("CatchParameterNameCheck",
783                 BASE_PACKAGE + ".checks.naming.CatchParameterNameCheck");
784         NAME_TO_FULL_MODULE_NAME.put("ClassTypeParameterNameCheck",
785                 BASE_PACKAGE + ".checks.naming.ClassTypeParameterNameCheck");
786         NAME_TO_FULL_MODULE_NAME.put("ConstantNameCheck",
787                 BASE_PACKAGE + ".checks.naming.ConstantNameCheck");
788         NAME_TO_FULL_MODULE_NAME.put("InterfaceTypeParameterNameCheck",
789                 BASE_PACKAGE + ".checks.naming.InterfaceTypeParameterNameCheck");
790         NAME_TO_FULL_MODULE_NAME.put("LambdaParameterNameCheck",
791                 BASE_PACKAGE + ".checks.naming.LambdaParameterNameCheck");
792         NAME_TO_FULL_MODULE_NAME.put("LocalFinalVariableNameCheck",
793                 BASE_PACKAGE + ".checks.naming.LocalFinalVariableNameCheck");
794         NAME_TO_FULL_MODULE_NAME.put("LocalVariableNameCheck",
795                 BASE_PACKAGE + ".checks.naming.LocalVariableNameCheck");
796         NAME_TO_FULL_MODULE_NAME.put("MemberNameCheck",
797                 BASE_PACKAGE + ".checks.naming.MemberNameCheck");
798         NAME_TO_FULL_MODULE_NAME.put("GoogleNonConstantFieldNameCheck",
799                 BASE_PACKAGE + ".checks.naming.GoogleNonConstantFieldNameCheck");
800         NAME_TO_FULL_MODULE_NAME.put("MethodNameCheck",
801                 BASE_PACKAGE + ".checks.naming.MethodNameCheck");
802         NAME_TO_FULL_MODULE_NAME.put("MethodTypeParameterNameCheck",
803                 BASE_PACKAGE + ".checks.naming.MethodTypeParameterNameCheck");
804         NAME_TO_FULL_MODULE_NAME.put("PackageNameCheck",
805                 BASE_PACKAGE + ".checks.naming.PackageNameCheck");
806         NAME_TO_FULL_MODULE_NAME.put("ParameterNameCheck",
807                 BASE_PACKAGE + ".checks.naming.ParameterNameCheck");
808         NAME_TO_FULL_MODULE_NAME.put("RecordComponentNameCheck",
809                 BASE_PACKAGE + ".checks.naming.RecordComponentNameCheck");
810         NAME_TO_FULL_MODULE_NAME.put("RecordTypeParameterNameCheck",
811                 BASE_PACKAGE + ".checks.naming.RecordTypeParameterNameCheck");
812         NAME_TO_FULL_MODULE_NAME.put("StaticVariableNameCheck",
813                 BASE_PACKAGE + ".checks.naming.StaticVariableNameCheck");
814         NAME_TO_FULL_MODULE_NAME.put("TypeNameCheck",
815                 BASE_PACKAGE + ".checks.naming.TypeNameCheck");
816         NAME_TO_FULL_MODULE_NAME.put("PatternVariableNameCheck",
817                 BASE_PACKAGE + ".checks.naming.PatternVariableNameCheck");
818         NAME_TO_FULL_MODULE_NAME.put("IllegalIdentifierNameCheck",
819             BASE_PACKAGE + ".checks.naming.IllegalIdentifierNameCheck");
820     }
821 
822     /**
823      * Fill short-to-full module names map with Checks from regexp package.
824      */
825     private static void fillChecksFromRegexpPackage() {
826         NAME_TO_FULL_MODULE_NAME.put("RegexpCheck",
827                 BASE_PACKAGE + ".checks.regexp.RegexpCheck");
828         NAME_TO_FULL_MODULE_NAME.put("RegexpMultilineCheck",
829                 BASE_PACKAGE + ".checks.regexp.RegexpMultilineCheck");
830         NAME_TO_FULL_MODULE_NAME.put("RegexpOnFilenameCheck",
831                 BASE_PACKAGE + ".checks.regexp.RegexpOnFilenameCheck");
832         NAME_TO_FULL_MODULE_NAME.put("RegexpSinglelineCheck",
833                 BASE_PACKAGE + ".checks.regexp.RegexpSinglelineCheck");
834         NAME_TO_FULL_MODULE_NAME.put("RegexpSinglelineJavaCheck",
835                 BASE_PACKAGE + ".checks.regexp.RegexpSinglelineJavaCheck");
836     }
837 
838     /**
839      * Fill short-to-full module names map with Checks from sizes package.
840      */
841     private static void fillChecksFromSizesPackage() {
842         NAME_TO_FULL_MODULE_NAME.put("AnonInnerLengthCheck",
843                 BASE_PACKAGE + ".checks.sizes.AnonInnerLengthCheck");
844         NAME_TO_FULL_MODULE_NAME.put("ExecutableStatementCountCheck",
845                 BASE_PACKAGE + ".checks.sizes.ExecutableStatementCountCheck");
846         NAME_TO_FULL_MODULE_NAME.put("FileLengthCheck",
847                 BASE_PACKAGE + ".checks.sizes.FileLengthCheck");
848         NAME_TO_FULL_MODULE_NAME.put("LambdaBodyLengthCheck",
849                 BASE_PACKAGE + ".checks.sizes.LambdaBodyLengthCheck");
850         NAME_TO_FULL_MODULE_NAME.put("LineLengthCheck",
851                 BASE_PACKAGE + ".checks.sizes.LineLengthCheck");
852         NAME_TO_FULL_MODULE_NAME.put("MethodCountCheck",
853                 BASE_PACKAGE + ".checks.sizes.MethodCountCheck");
854         NAME_TO_FULL_MODULE_NAME.put("MethodLengthCheck",
855                 BASE_PACKAGE + ".checks.sizes.MethodLengthCheck");
856         NAME_TO_FULL_MODULE_NAME.put("OuterTypeNumberCheck",
857                 BASE_PACKAGE + ".checks.sizes.OuterTypeNumberCheck");
858         NAME_TO_FULL_MODULE_NAME.put("ParameterNumberCheck",
859                 BASE_PACKAGE + ".checks.sizes.ParameterNumberCheck");
860         NAME_TO_FULL_MODULE_NAME.put("RecordComponentNumberCheck",
861                 BASE_PACKAGE + ".checks.sizes.RecordComponentNumberCheck");
862     }
863 
864     /**
865      * Fill short-to-full module names map with Checks from whitespace package.
866      */
867     private static void fillChecksFromWhitespacePackage() {
868         NAME_TO_FULL_MODULE_NAME.put("EmptyForInitializerPadCheck",
869                 BASE_PACKAGE + ".checks.whitespace.EmptyForInitializerPadCheck");
870         NAME_TO_FULL_MODULE_NAME.put("EmptyForIteratorPadCheck",
871                 BASE_PACKAGE + ".checks.whitespace.EmptyForIteratorPadCheck");
872         NAME_TO_FULL_MODULE_NAME.put("EmptyLineSeparatorCheck",
873                 BASE_PACKAGE + ".checks.whitespace.EmptyLineSeparatorCheck");
874         NAME_TO_FULL_MODULE_NAME.put("FileTabCharacterCheck",
875                 BASE_PACKAGE + ".checks.whitespace.FileTabCharacterCheck");
876         NAME_TO_FULL_MODULE_NAME.put("GenericWhitespaceCheck",
877                 BASE_PACKAGE + ".checks.whitespace.GenericWhitespaceCheck");
878         NAME_TO_FULL_MODULE_NAME.put("MethodParamPadCheck",
879                 BASE_PACKAGE + ".checks.whitespace.MethodParamPadCheck");
880         NAME_TO_FULL_MODULE_NAME.put("NoLineWrapCheck",
881                 BASE_PACKAGE + ".checks.whitespace.NoLineWrapCheck");
882         NAME_TO_FULL_MODULE_NAME.put("NoWhitespaceAfterCheck",
883                 BASE_PACKAGE + ".checks.whitespace.NoWhitespaceAfterCheck");
884         NAME_TO_FULL_MODULE_NAME.put("NoWhitespaceBeforeCheck",
885                 BASE_PACKAGE + ".checks.whitespace.NoWhitespaceBeforeCheck");
886         NAME_TO_FULL_MODULE_NAME.put("NoWhitespaceBeforeCaseDefaultColonCheck",
887                 BASE_PACKAGE + ".checks.whitespace.NoWhitespaceBeforeCaseDefaultColonCheck");
888         NAME_TO_FULL_MODULE_NAME.put("OperatorWrapCheck",
889                 BASE_PACKAGE + ".checks.whitespace.OperatorWrapCheck");
890         NAME_TO_FULL_MODULE_NAME.put("ParenPadCheck",
891                 BASE_PACKAGE + ".checks.whitespace.ParenPadCheck");
892         NAME_TO_FULL_MODULE_NAME.put("SeparatorWrapCheck",
893                 BASE_PACKAGE + ".checks.whitespace.SeparatorWrapCheck");
894         NAME_TO_FULL_MODULE_NAME.put("SingleSpaceSeparatorCheck",
895                 BASE_PACKAGE + ".checks.whitespace.SingleSpaceSeparatorCheck");
896         NAME_TO_FULL_MODULE_NAME.put("TypecastParenPadCheck",
897                 BASE_PACKAGE + ".checks.whitespace.TypecastParenPadCheck");
898         NAME_TO_FULL_MODULE_NAME.put("WhitespaceAfterCheck",
899                 BASE_PACKAGE + ".checks.whitespace.WhitespaceAfterCheck");
900         NAME_TO_FULL_MODULE_NAME.put("WhitespaceAroundCheck",
901                 BASE_PACKAGE + ".checks.whitespace.WhitespaceAroundCheck");
902     }
903 
904     /**
905      * Fill short-to-full module names map with modules from checks package.
906      */
907     private static void fillModulesFromChecksPackage() {
908         NAME_TO_FULL_MODULE_NAME.put("ArrayTypeStyleCheck",
909                 BASE_PACKAGE + ".checks.ArrayTypeStyleCheck");
910         NAME_TO_FULL_MODULE_NAME.put("AvoidEscapedUnicodeCharactersCheck",
911                 BASE_PACKAGE + ".checks.AvoidEscapedUnicodeCharactersCheck");
912         NAME_TO_FULL_MODULE_NAME.put("DescendantTokenCheck",
913                 BASE_PACKAGE + ".checks.DescendantTokenCheck");
914         NAME_TO_FULL_MODULE_NAME.put("FinalParametersCheck",
915                 BASE_PACKAGE + ".checks.FinalParametersCheck");
916         NAME_TO_FULL_MODULE_NAME.put("NewlineAtEndOfFileCheck",
917                 BASE_PACKAGE + ".checks.NewlineAtEndOfFileCheck");
918         NAME_TO_FULL_MODULE_NAME.put("LineEndingCheck",
919                 BASE_PACKAGE + ".checks.LineEndingCheck");
920         NAME_TO_FULL_MODULE_NAME.put("NoCodeInFileCheck",
921                 BASE_PACKAGE + ".checks.NoCodeInFileCheck");
922         NAME_TO_FULL_MODULE_NAME.put("OuterTypeFilenameCheck",
923                 BASE_PACKAGE + ".checks.OuterTypeFilenameCheck");
924         NAME_TO_FULL_MODULE_NAME.put("OrderedPropertiesCheck",
925                 BASE_PACKAGE + ".checks.OrderedPropertiesCheck");
926         NAME_TO_FULL_MODULE_NAME.put("SuppressWarningsHolder",
927                 BASE_PACKAGE + ".checks.SuppressWarningsHolder");
928         NAME_TO_FULL_MODULE_NAME.put("TodoCommentCheck",
929                 BASE_PACKAGE + ".checks.TodoCommentCheck");
930         NAME_TO_FULL_MODULE_NAME.put("TrailingCommentCheck",
931                 BASE_PACKAGE + ".checks.TrailingCommentCheck");
932         NAME_TO_FULL_MODULE_NAME.put("TranslationCheck",
933                 BASE_PACKAGE + ".checks.TranslationCheck");
934         NAME_TO_FULL_MODULE_NAME.put("UncommentedMainCheck",
935                 BASE_PACKAGE + ".checks.UncommentedMainCheck");
936         NAME_TO_FULL_MODULE_NAME.put("UniquePropertiesCheck",
937                 BASE_PACKAGE + ".checks.UniquePropertiesCheck");
938         NAME_TO_FULL_MODULE_NAME.put("UpperEllCheck",
939                 BASE_PACKAGE + ".checks.UpperEllCheck");
940         NAME_TO_FULL_MODULE_NAME.put("HexLiteralCaseCheck",
941                 BASE_PACKAGE + ".checks.HexLiteralCaseCheck");
942         NAME_TO_FULL_MODULE_NAME.put("NumericalPrefixesInfixesSuffixesCharacterCaseCheck",
943                 BASE_PACKAGE + ".checks.NumericalPrefixesInfixesSuffixesCharacterCaseCheck");
944     }
945 
946     /**
947      * Fill short-to-full module names map with modules from filefilters package.
948      */
949     private static void fillModulesFromFilefiltersPackage() {
950         NAME_TO_FULL_MODULE_NAME.put("BeforeExecutionExclusionFileFilter",
951                 BASE_PACKAGE + ".filefilters.BeforeExecutionExclusionFileFilter");
952     }
953 
954     /**
955      * Fill short-to-full module names map with modules from filters package.
956      */
957     private static void fillModulesFromFiltersPackage() {
958         NAME_TO_FULL_MODULE_NAME.put("SeverityMatchFilter",
959                 BASE_PACKAGE + ".filters.SeverityMatchFilter");
960         NAME_TO_FULL_MODULE_NAME.put("SuppressWithPlainTextCommentFilter",
961             BASE_PACKAGE + ".filters.SuppressWithPlainTextCommentFilter");
962         NAME_TO_FULL_MODULE_NAME.put("SuppressionCommentFilter",
963                 BASE_PACKAGE + ".filters.SuppressionCommentFilter");
964         NAME_TO_FULL_MODULE_NAME.put("SuppressionFilter",
965                 BASE_PACKAGE + ".filters.SuppressionFilter");
966         NAME_TO_FULL_MODULE_NAME.put("SuppressionSingleFilter",
967                 BASE_PACKAGE + ".filters.SuppressionSingleFilter");
968         NAME_TO_FULL_MODULE_NAME.put("SuppressionXpathFilter",
969                 BASE_PACKAGE + ".filters.SuppressionXpathFilter");
970         NAME_TO_FULL_MODULE_NAME.put("SuppressionXpathSingleFilter",
971                 BASE_PACKAGE + ".filters.SuppressionXpathSingleFilter");
972         NAME_TO_FULL_MODULE_NAME.put("SuppressWarningsFilter",
973                 BASE_PACKAGE + ".filters.SuppressWarningsFilter");
974         NAME_TO_FULL_MODULE_NAME.put("SuppressWithNearbyCommentFilter",
975                 BASE_PACKAGE + ".filters.SuppressWithNearbyCommentFilter");
976         NAME_TO_FULL_MODULE_NAME.put("SuppressWithNearbyTextFilter",
977                 BASE_PACKAGE + ".filters.SuppressWithNearbyTextFilter");
978     }
979 
980     /**
981      * Fill short-to-full module names map with modules from checkstyle package.
982      */
983     private static void fillModulesFromCheckstylePackage() {
984         NAME_TO_FULL_MODULE_NAME.put("Checker", BASE_PACKAGE + ".Checker");
985         NAME_TO_FULL_MODULE_NAME.put("TreeWalker", BASE_PACKAGE + ".TreeWalker");
986     }
987 
988 }