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