001/////////////////////////////////////////////////////////////////////////////////////////////// 002// checkstyle: Checks Java source code and other text files for adherence to a set of rules. 003// Copyright (C) 2001-2026 the original author or authors. 004// 005// This library is free software; you can redistribute it and/or 006// modify it under the terms of the GNU Lesser General Public 007// License as published by the Free Software Foundation; either 008// version 2.1 of the License, or (at your option) any later version. 009// 010// This library is distributed in the hope that it will be useful, 011// but WITHOUT ANY WARRANTY; without even the implied warranty of 012// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 013// Lesser General Public License for more details. 014// 015// You should have received a copy of the GNU Lesser General Public 016// License along with this library; if not, write to the Free Software 017// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 018/////////////////////////////////////////////////////////////////////////////////////////////// 019 020package com.puppycrawl.tools.checkstyle; 021 022import java.io.IOException; 023import java.util.HashMap; 024import java.util.HashSet; 025import java.util.LinkedHashSet; 026import java.util.List; 027import java.util.Map; 028import java.util.Map.Entry; 029import java.util.Set; 030import java.util.function.Supplier; 031import java.util.stream.Collectors; 032import java.util.stream.Stream; 033 034import com.puppycrawl.tools.checkstyle.api.CheckstyleException; 035import com.puppycrawl.tools.checkstyle.utils.ModuleReflectionUtil; 036 037/** 038 * A factory for creating objects from package names and names. 039 * Consider the below example for better understanding. 040 * <ul> 041 * <li>module name - name of java class that represents module;</li> 042 * <li>module full name - fully qualifies name of java class that represents module;</li> 043 * <li>check module short name - name of Check without 'Check' suffix;</li> 044 * <li>check module name - name of java class that represents Check (with 'Check' suffix);</li> 045 * <li> 046 * check module full name - fully qualifies name of java class 047 * that represents Check (with 'Check' suffix). 048 * </li> 049 * </ul> 050 */ 051public class PackageObjectFactory implements ModuleFactory { 052 053 /** 054 * Enum class to define loading options. 055 */ 056 public enum ModuleLoadOption { 057 058 /** 059 * Searching from registered checkstyle modules and from packages given in constructor. 060 */ 061 SEARCH_REGISTERED_PACKAGES, 062 /** 063 * As SEARCH_REGISTERED_PACKAGES and also try to load class from all of packages given in 064 * constructor. 065 * Required for eclipse-cs plugin. 066 */ 067 TRY_IN_ALL_REGISTERED_PACKAGES, 068 069 } 070 071 /** Base package of checkstyle modules checks. */ 072 public static final String BASE_PACKAGE = "com.puppycrawl.tools.checkstyle"; 073 074 /** Exception message when it is unable to create a class instance. */ 075 public static final String UNABLE_TO_INSTANTIATE_EXCEPTION_MESSAGE = 076 "PackageObjectFactory.unableToInstantiateExceptionMessage"; 077 078 /** Exception message when there is ambiguous module name in config file. */ 079 public static final String AMBIGUOUS_MODULE_NAME_EXCEPTION_MESSAGE = 080 "PackageObjectFactory.ambiguousModuleNameExceptionMessage"; 081 082 /** Suffix of checks. */ 083 public static final String CHECK_SUFFIX = "Check"; 084 085 /** Character separate package names in qualified name of java class. */ 086 public static final String PACKAGE_SEPARATOR = "."; 087 088 /** Exception message when null class loader is given. */ 089 public static final String NULL_LOADER_MESSAGE = "moduleClassLoader must not be null"; 090 091 /** Exception message when null package name is given. */ 092 public static final String NULL_PACKAGE_MESSAGE = "package name must not be null"; 093 094 /** Separator to use in strings. */ 095 public static final String STRING_SEPARATOR = ", "; 096 097 /** Map of Checkstyle module names to their fully qualified names. */ 098 private static final Map<String, String> NAME_TO_FULL_MODULE_NAME = new HashMap<>(); 099 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("RightCurlyCheck", 485 BASE_PACKAGE + ".checks.blocks.RightCurlyCheck"); 486 } 487 488 /** 489 * Fill short-to-full module names map with Checks from coding package. 490 */ 491 // -@cs[ExecutableStatementCount] splitting this method is not reasonable. 492 // -@cs[JavaNCSS] splitting this method is not reasonable. 493 private static void fillChecksFromCodingPackage() { 494 NAME_TO_FULL_MODULE_NAME.put("ArrayTrailingCommaCheck", 495 BASE_PACKAGE + ".checks.coding.ArrayTrailingCommaCheck"); 496 NAME_TO_FULL_MODULE_NAME.put("AvoidDoubleBraceInitializationCheck", 497 BASE_PACKAGE + ".checks.coding.AvoidDoubleBraceInitializationCheck"); 498 NAME_TO_FULL_MODULE_NAME.put("AvoidInlineConditionalsCheck", 499 BASE_PACKAGE + ".checks.coding.AvoidInlineConditionalsCheck"); 500 NAME_TO_FULL_MODULE_NAME.put("AvoidNoArgumentSuperConstructorCallCheck", 501 BASE_PACKAGE + ".checks.coding.AvoidNoArgumentSuperConstructorCallCheck"); 502 NAME_TO_FULL_MODULE_NAME.put("ConstructorsDeclarationGroupingCheck", 503 BASE_PACKAGE + ".checks.coding.ConstructorsDeclarationGroupingCheck"); 504 NAME_TO_FULL_MODULE_NAME.put("CovariantEqualsCheck", 505 BASE_PACKAGE + ".checks.coding.CovariantEqualsCheck"); 506 NAME_TO_FULL_MODULE_NAME.put("DeclarationOrderCheck", 507 BASE_PACKAGE + ".checks.coding.DeclarationOrderCheck"); 508 NAME_TO_FULL_MODULE_NAME.put("DefaultComesLastCheck", 509 BASE_PACKAGE + ".checks.coding.DefaultComesLastCheck"); 510 NAME_TO_FULL_MODULE_NAME.put("EmptyStatementCheck", 511 BASE_PACKAGE + ".checks.coding.EmptyStatementCheck"); 512 NAME_TO_FULL_MODULE_NAME.put("EqualsAvoidNullCheck", 513 BASE_PACKAGE + ".checks.coding.EqualsAvoidNullCheck"); 514 NAME_TO_FULL_MODULE_NAME.put("EqualsHashCodeCheck", 515 BASE_PACKAGE + ".checks.coding.EqualsHashCodeCheck"); 516 NAME_TO_FULL_MODULE_NAME.put("ExplicitInitializationCheck", 517 BASE_PACKAGE + ".checks.coding.ExplicitInitializationCheck"); 518 NAME_TO_FULL_MODULE_NAME.put("ExpressionOverBlockLambdaCheck", 519 BASE_PACKAGE + ".checks.coding.ExpressionOverBlockLambdaCheck"); 520 NAME_TO_FULL_MODULE_NAME.put("FallThroughCheck", 521 BASE_PACKAGE + ".checks.coding.FallThroughCheck"); 522 NAME_TO_FULL_MODULE_NAME.put("FinalLocalVariableCheck", 523 BASE_PACKAGE + ".checks.coding.FinalLocalVariableCheck"); 524 NAME_TO_FULL_MODULE_NAME.put("HiddenFieldCheck", 525 BASE_PACKAGE + ".checks.coding.HiddenFieldCheck"); 526 NAME_TO_FULL_MODULE_NAME.put("IllegalCatchCheck", 527 BASE_PACKAGE + ".checks.coding.IllegalCatchCheck"); 528 NAME_TO_FULL_MODULE_NAME.put("IllegalInstantiationCheck", 529 BASE_PACKAGE + ".checks.coding.IllegalInstantiationCheck"); 530 NAME_TO_FULL_MODULE_NAME.put("IllegalSymbolCheck", 531 BASE_PACKAGE + ".checks.coding.IllegalSymbolCheck"); 532 NAME_TO_FULL_MODULE_NAME.put("IllegalThrowsCheck", 533 BASE_PACKAGE + ".checks.coding.IllegalThrowsCheck"); 534 NAME_TO_FULL_MODULE_NAME.put("IllegalTokenCheck", 535 BASE_PACKAGE + ".checks.coding.IllegalTokenCheck"); 536 NAME_TO_FULL_MODULE_NAME.put("IllegalTokenTextCheck", 537 BASE_PACKAGE + ".checks.coding.IllegalTokenTextCheck"); 538 NAME_TO_FULL_MODULE_NAME.put("IllegalTypeCheck", 539 BASE_PACKAGE + ".checks.coding.IllegalTypeCheck"); 540 NAME_TO_FULL_MODULE_NAME.put("InnerAssignmentCheck", 541 BASE_PACKAGE + ".checks.coding.InnerAssignmentCheck"); 542 NAME_TO_FULL_MODULE_NAME.put("MagicNumberCheck", 543 BASE_PACKAGE + ".checks.coding.MagicNumberCheck"); 544 NAME_TO_FULL_MODULE_NAME.put("MissingCtorCheck", 545 BASE_PACKAGE + ".checks.coding.MissingCtorCheck"); 546 NAME_TO_FULL_MODULE_NAME.put("MissingNullCaseInSwitchCheck", 547 BASE_PACKAGE + ".checks.coding.MissingNullCaseInSwitchCheck"); 548 NAME_TO_FULL_MODULE_NAME.put("MissingSwitchDefaultCheck", 549 BASE_PACKAGE + ".checks.coding.MissingSwitchDefaultCheck"); 550 NAME_TO_FULL_MODULE_NAME.put("ModifiedControlVariableCheck", 551 BASE_PACKAGE + ".checks.coding.ModifiedControlVariableCheck"); 552 NAME_TO_FULL_MODULE_NAME.put("MultipleStringLiteralsCheck", 553 BASE_PACKAGE + ".checks.coding.MultipleStringLiteralsCheck"); 554 NAME_TO_FULL_MODULE_NAME.put("MultipleVariableDeclarationsCheck", 555 BASE_PACKAGE + ".checks.coding.MultipleVariableDeclarationsCheck"); 556 NAME_TO_FULL_MODULE_NAME.put("NestedForDepthCheck", 557 BASE_PACKAGE + ".checks.coding.NestedForDepthCheck"); 558 NAME_TO_FULL_MODULE_NAME.put("NestedIfDepthCheck", 559 BASE_PACKAGE + ".checks.coding.NestedIfDepthCheck"); 560 NAME_TO_FULL_MODULE_NAME.put("NestedTryDepthCheck", 561 BASE_PACKAGE + ".checks.coding.NestedTryDepthCheck"); 562 NAME_TO_FULL_MODULE_NAME.put("NoCloneCheck", 563 BASE_PACKAGE + ".checks.coding.NoCloneCheck"); 564 NAME_TO_FULL_MODULE_NAME.put("NoEnumTrailingCommaCheck", 565 BASE_PACKAGE + ".checks.coding.NoEnumTrailingCommaCheck"); 566 NAME_TO_FULL_MODULE_NAME.put("NoFinalizerCheck", 567 BASE_PACKAGE + ".checks.coding.NoFinalizerCheck"); 568 NAME_TO_FULL_MODULE_NAME.put("OneStatementPerLineCheck", 569 BASE_PACKAGE + ".checks.coding.OneStatementPerLineCheck"); 570 NAME_TO_FULL_MODULE_NAME.put("OverloadMethodsDeclarationOrderCheck", 571 BASE_PACKAGE + ".checks.coding.OverloadMethodsDeclarationOrderCheck"); 572 NAME_TO_FULL_MODULE_NAME.put("PackageDeclarationCheck", 573 BASE_PACKAGE + ".checks.coding.PackageDeclarationCheck"); 574 NAME_TO_FULL_MODULE_NAME.put("PatternVariableAssignmentCheck", 575 BASE_PACKAGE + ".checks.coding.PatternVariableAssignmentCheck"); 576 NAME_TO_FULL_MODULE_NAME.put("ParameterAssignmentCheck", 577 BASE_PACKAGE + ".checks.coding.ParameterAssignmentCheck"); 578 NAME_TO_FULL_MODULE_NAME.put("RequireThisCheck", 579 BASE_PACKAGE + ".checks.coding.RequireThisCheck"); 580 NAME_TO_FULL_MODULE_NAME.put("ReturnCountCheck", 581 BASE_PACKAGE + ".checks.coding.ReturnCountCheck"); 582 NAME_TO_FULL_MODULE_NAME.put("SimplifyBooleanExpressionCheck", 583 BASE_PACKAGE + ".checks.coding.SimplifyBooleanExpressionCheck"); 584 NAME_TO_FULL_MODULE_NAME.put("SimplifyBooleanReturnCheck", 585 BASE_PACKAGE + ".checks.coding.SimplifyBooleanReturnCheck"); 586 NAME_TO_FULL_MODULE_NAME.put("StringLiteralEqualityCheck", 587 BASE_PACKAGE + ".checks.coding.StringLiteralEqualityCheck"); 588 NAME_TO_FULL_MODULE_NAME.put("SuperCloneCheck", 589 BASE_PACKAGE + ".checks.coding.SuperCloneCheck"); 590 NAME_TO_FULL_MODULE_NAME.put("SuperFinalizeCheck", 591 BASE_PACKAGE + ".checks.coding.SuperFinalizeCheck"); 592 NAME_TO_FULL_MODULE_NAME.put("UnnecessaryParenthesesCheck", 593 BASE_PACKAGE + ".checks.coding.UnnecessaryParenthesesCheck"); 594 NAME_TO_FULL_MODULE_NAME.put("UnnecessarySemicolonAfterOuterTypeDeclarationCheck", 595 BASE_PACKAGE 596 + ".checks.coding.UnnecessarySemicolonAfterOuterTypeDeclarationCheck"); 597 NAME_TO_FULL_MODULE_NAME.put("UnnecessarySemicolonAfterTypeMemberDeclarationCheck", 598 BASE_PACKAGE 599 + ".checks.coding.UnnecessarySemicolonAfterTypeMemberDeclarationCheck"); 600 NAME_TO_FULL_MODULE_NAME.put("UnnecessarySemicolonInEnumerationCheck", 601 BASE_PACKAGE + ".checks.coding.UnnecessarySemicolonInEnumerationCheck"); 602 NAME_TO_FULL_MODULE_NAME.put("UnnecessarySemicolonInTryWithResourcesCheck", 603 BASE_PACKAGE + ".checks.coding.UnnecessarySemicolonInTryWithResourcesCheck"); 604 NAME_TO_FULL_MODULE_NAME.put("UseEnhancedSwitchCheck", 605 BASE_PACKAGE + ".checks.coding.UseEnhancedSwitchCheck"); 606 NAME_TO_FULL_MODULE_NAME.put("VariableDeclarationUsageDistanceCheck", 607 BASE_PACKAGE + ".checks.coding.VariableDeclarationUsageDistanceCheck"); 608 NAME_TO_FULL_MODULE_NAME.put("WhenShouldBeUsedCheck", 609 BASE_PACKAGE + ".checks.coding.WhenShouldBeUsedCheck"); 610 NAME_TO_FULL_MODULE_NAME.put("NoArrayTrailingCommaCheck", 611 BASE_PACKAGE + ".checks.coding.NoArrayTrailingCommaCheck"); 612 NAME_TO_FULL_MODULE_NAME.put("MatchXpathCheck", 613 BASE_PACKAGE + ".checks.coding.MatchXpathCheck"); 614 NAME_TO_FULL_MODULE_NAME.put("TextBlockGoogleStyleFormattingCheck", 615 BASE_PACKAGE + ".checks.coding.TextBlockGoogleStyleFormattingCheck"); 616 NAME_TO_FULL_MODULE_NAME.put("UnusedLocalVariableCheck", 617 BASE_PACKAGE + ".checks.coding.UnusedLocalVariableCheck"); 618 NAME_TO_FULL_MODULE_NAME.put("UnusedPrivateFieldCheck", 619 BASE_PACKAGE + ".checks.coding.UnusedPrivateFieldCheck"); 620 NAME_TO_FULL_MODULE_NAME.put("UnusedCatchParameterShouldBeUnnamedCheck", 621 BASE_PACKAGE + ".checks.coding.UnusedCatchParameterShouldBeUnnamedCheck"); 622 NAME_TO_FULL_MODULE_NAME.put("UnusedLambdaParameterShouldBeUnnamedCheck", 623 BASE_PACKAGE + ".checks.coding.UnusedLambdaParameterShouldBeUnnamedCheck"); 624 NAME_TO_FULL_MODULE_NAME.put("UnnecessaryNullCheckWithInstanceOfCheck", 625 BASE_PACKAGE + ".checks.coding.UnnecessaryNullCheckWithInstanceOfCheck"); 626 NAME_TO_FULL_MODULE_NAME.put("UnusedTryResourceShouldBeUnnamedCheck", 627 BASE_PACKAGE + ".checks.coding.UnusedTryResourceShouldBeUnnamedCheck"); 628 NAME_TO_FULL_MODULE_NAME.put("UnnecessaryTypeArgumentsWithRecordPatternCheck", 629 BASE_PACKAGE + ".checks.coding.UnnecessaryTypeArgumentsWithRecordPatternCheck"); 630 } 631 632 /** 633 * Fill short-to-full module names map with Checks from design package. 634 */ 635 private static void fillChecksFromDesignPackage() { 636 NAME_TO_FULL_MODULE_NAME.put("DesignForExtensionCheck", 637 BASE_PACKAGE + ".checks.design.DesignForExtensionCheck"); 638 NAME_TO_FULL_MODULE_NAME.put("FinalClassCheck", 639 BASE_PACKAGE + ".checks.design.FinalClassCheck"); 640 NAME_TO_FULL_MODULE_NAME.put("HideUtilityClassConstructorCheck", 641 BASE_PACKAGE + ".checks.design.HideUtilityClassConstructorCheck"); 642 NAME_TO_FULL_MODULE_NAME.put("InnerTypeLastCheck", 643 BASE_PACKAGE + ".checks.design.InnerTypeLastCheck"); 644 NAME_TO_FULL_MODULE_NAME.put("InterfaceIsTypeCheck", 645 BASE_PACKAGE + ".checks.design.InterfaceIsTypeCheck"); 646 NAME_TO_FULL_MODULE_NAME.put("MutableExceptionCheck", 647 BASE_PACKAGE + ".checks.design.MutableExceptionCheck"); 648 NAME_TO_FULL_MODULE_NAME.put("OneTopLevelClassCheck", 649 BASE_PACKAGE + ".checks.design.OneTopLevelClassCheck"); 650 NAME_TO_FULL_MODULE_NAME.put("SealedShouldHavePermitsListCheck", 651 BASE_PACKAGE + ".checks.design.SealedShouldHavePermitsListCheck"); 652 NAME_TO_FULL_MODULE_NAME.put("ThrowsCountCheck", 653 BASE_PACKAGE + ".checks.design.ThrowsCountCheck"); 654 NAME_TO_FULL_MODULE_NAME.put("VisibilityModifierCheck", 655 BASE_PACKAGE + ".checks.design.VisibilityModifierCheck"); 656 } 657 658 /** 659 * Fill short-to-full module names map with Checks from header package. 660 */ 661 private static void fillChecksFromHeaderPackage() { 662 NAME_TO_FULL_MODULE_NAME.put("HeaderCheck", 663 BASE_PACKAGE + ".checks.header.HeaderCheck"); 664 NAME_TO_FULL_MODULE_NAME.put("RegexpHeaderCheck", 665 BASE_PACKAGE + ".checks.header.RegexpHeaderCheck"); 666 NAME_TO_FULL_MODULE_NAME.put("MultiFileRegexpHeaderCheck", 667 BASE_PACKAGE + ".checks.header.MultiFileRegexpHeaderCheck"); 668 } 669 670 /** 671 * Fill short-to-full module names map with Checks from imports package. 672 */ 673 private static void fillChecksFromImportsPackage() { 674 NAME_TO_FULL_MODULE_NAME.put("AvoidModuleImportCheck", 675 BASE_PACKAGE + ".checks.imports.AvoidModuleImportCheck"); 676 NAME_TO_FULL_MODULE_NAME.put("AvoidStarImportCheck", 677 BASE_PACKAGE + ".checks.imports.AvoidStarImportCheck"); 678 NAME_TO_FULL_MODULE_NAME.put("AvoidStaticImportCheck", 679 BASE_PACKAGE + ".checks.imports.AvoidStaticImportCheck"); 680 NAME_TO_FULL_MODULE_NAME.put("CustomImportOrderCheck", 681 BASE_PACKAGE + ".checks.imports.CustomImportOrderCheck"); 682 NAME_TO_FULL_MODULE_NAME.put("IllegalImportCheck", 683 BASE_PACKAGE + ".checks.imports.IllegalImportCheck"); 684 NAME_TO_FULL_MODULE_NAME.put("ImportControlCheck", 685 BASE_PACKAGE + ".checks.imports.ImportControlCheck"); 686 NAME_TO_FULL_MODULE_NAME.put("ImportOrderCheck", 687 BASE_PACKAGE + ".checks.imports.ImportOrderCheck"); 688 NAME_TO_FULL_MODULE_NAME.put("ModuleImportOrderCheck", 689 BASE_PACKAGE + ".checks.imports.ModuleImportOrderCheck"); 690 NAME_TO_FULL_MODULE_NAME.put("RedundantImportCheck", 691 BASE_PACKAGE + ".checks.imports.RedundantImportCheck"); 692 NAME_TO_FULL_MODULE_NAME.put("UnnecessaryFullyQualifiedTypeCheck", 693 BASE_PACKAGE + ".checks.imports.UnnecessaryFullyQualifiedTypeCheck"); 694 NAME_TO_FULL_MODULE_NAME.put("UnusedImportsCheck", 695 BASE_PACKAGE + ".checks.imports.UnusedImportsCheck"); 696 } 697 698 /** 699 * Fill short-to-full module names map with Checks from indentation package. 700 */ 701 private static void fillChecksFromIndentationPackage() { 702 NAME_TO_FULL_MODULE_NAME.put("CommentsIndentationCheck", 703 BASE_PACKAGE + ".checks.indentation.CommentsIndentationCheck"); 704 NAME_TO_FULL_MODULE_NAME.put("IndentationCheck", 705 BASE_PACKAGE + ".checks.indentation.IndentationCheck"); 706 } 707 708 /** 709 * Fill short-to-full module names map with Checks from javadoc package. 710 */ 711 private static void fillChecksFromJavadocPackage() { 712 NAME_TO_FULL_MODULE_NAME.put("AtclauseOrderCheck", 713 BASE_PACKAGE + ".checks.javadoc.AtclauseOrderCheck"); 714 NAME_TO_FULL_MODULE_NAME.put("IllegalBlockTagCheck", 715 BASE_PACKAGE + ".checks.javadoc.IllegalBlockTagCheck"); 716 NAME_TO_FULL_MODULE_NAME.put("InappropriateJavadocBlockTagsOnPackageCheck", 717 BASE_PACKAGE + ".checks.javadoc.InappropriateJavadocBlockTagsOnPackageCheck"); 718 NAME_TO_FULL_MODULE_NAME.put("InappropriateJavadocBlockTagsOnTypeCheck", 719 BASE_PACKAGE + ".checks.javadoc.InappropriateJavadocBlockTagsOnTypeCheck"); 720 NAME_TO_FULL_MODULE_NAME.put("InappropriateJavadocBlockTagsOnFieldCheck", 721 BASE_PACKAGE + ".checks.javadoc.InappropriateJavadocBlockTagsOnFieldCheck"); 722 NAME_TO_FULL_MODULE_NAME.put("InvalidJavadocPositionCheck", 723 BASE_PACKAGE + ".checks.javadoc.InvalidJavadocPositionCheck"); 724 NAME_TO_FULL_MODULE_NAME.put("JavadocBlockTagLocationCheck", 725 BASE_PACKAGE + ".checks.javadoc.JavadocBlockTagLocationCheck"); 726 NAME_TO_FULL_MODULE_NAME.put("JavadocContentLocationCheck", 727 BASE_PACKAGE + ".checks.javadoc.JavadocContentLocationCheck"); 728 NAME_TO_FULL_MODULE_NAME.put("JavadocEndCommentDelimiterCheck", 729 BASE_PACKAGE + ".checks.javadoc.JavadocEndCommentDelimiterCheck"); 730 NAME_TO_FULL_MODULE_NAME.put("JavadocLeadingAsteriskAlignCheck", 731 BASE_PACKAGE + ".checks.javadoc.JavadocLeadingAsteriskAlignCheck"); 732 NAME_TO_FULL_MODULE_NAME.put("JavadocLinkFirstOccurrenceCheck", 733 BASE_PACKAGE + ".checks.javadoc.JavadocLinkFirstOccurrenceCheck"); 734 NAME_TO_FULL_MODULE_NAME.put("JavadocLinkWellKnownApiCheck", 735 BASE_PACKAGE + ".checks.javadoc.JavadocLinkWellKnownApiCheck"); 736 NAME_TO_FULL_MODULE_NAME.put("JavadocMethodCheck", 737 BASE_PACKAGE + ".checks.javadoc.JavadocMethodCheck"); 738 NAME_TO_FULL_MODULE_NAME.put("JavadocMissingLeadingAsteriskCheck", 739 BASE_PACKAGE + ".checks.javadoc.JavadocMissingLeadingAsteriskCheck"); 740 NAME_TO_FULL_MODULE_NAME.put("JavadocMissingWhitespaceAfterAsteriskCheck", 741 BASE_PACKAGE + ".checks.javadoc.JavadocMissingWhitespaceAfterAsteriskCheck"); 742 NAME_TO_FULL_MODULE_NAME.put("JavadocNoErrorInThrowsTagCheck", 743 BASE_PACKAGE + ".checks.javadoc.JavadocNoErrorInThrowsTagCheck"); 744 NAME_TO_FULL_MODULE_NAME.put("JavadocPackageCheck", 745 BASE_PACKAGE + ".checks.javadoc.JavadocPackageCheck"); 746 NAME_TO_FULL_MODULE_NAME.put("JavadocParagraphCheck", 747 BASE_PACKAGE + ".checks.javadoc.JavadocParagraphCheck"); 748 NAME_TO_FULL_MODULE_NAME.put("JavadocParamOrderCheck", 749 BASE_PACKAGE + ".checks.javadoc.JavadocParamOrderCheck"); 750 NAME_TO_FULL_MODULE_NAME.put("JavadocRegexpCheck", 751 BASE_PACKAGE + ".checks.javadoc.JavadocRegexpCheck"); 752 NAME_TO_FULL_MODULE_NAME.put("JavadocTagContinuationIndentationCheck", 753 BASE_PACKAGE + ".checks.javadoc.JavadocTagContinuationIndentationCheck"); 754 NAME_TO_FULL_MODULE_NAME.put("JavadocThrowsOrderCheck", 755 BASE_PACKAGE + ".checks.javadoc.JavadocThrowsOrderCheck"); 756 NAME_TO_FULL_MODULE_NAME.put("JavadocTypeCheck", 757 BASE_PACKAGE + ".checks.javadoc.JavadocTypeCheck"); 758 NAME_TO_FULL_MODULE_NAME.put("JavadocVariableCheck", 759 BASE_PACKAGE + ".checks.javadoc.JavadocVariableCheck"); 760 NAME_TO_FULL_MODULE_NAME.put("MissingJavadocMethodCheck", 761 BASE_PACKAGE + ".checks.javadoc.MissingJavadocMethodCheck"); 762 NAME_TO_FULL_MODULE_NAME.put("MissingJavadocPackageCheck", 763 BASE_PACKAGE + ".checks.javadoc.MissingJavadocPackageCheck"); 764 NAME_TO_FULL_MODULE_NAME.put("MissingJavadocTypeCheck", 765 BASE_PACKAGE + ".checks.javadoc.MissingJavadocTypeCheck"); 766 NAME_TO_FULL_MODULE_NAME.put("NonEmptyAtclauseDescriptionCheck", 767 BASE_PACKAGE + ".checks.javadoc.NonEmptyAtclauseDescriptionCheck"); 768 NAME_TO_FULL_MODULE_NAME.put("PreferCodeOrSnippetJavadocInlineTagCheck", 769 BASE_PACKAGE + ".checks.javadoc.PreferCodeOrSnippetJavadocInlineTagCheck"); 770 NAME_TO_FULL_MODULE_NAME.put("PreferLiteralJavadocInlineTagCheck", 771 BASE_PACKAGE + ".checks.javadoc.PreferLiteralJavadocInlineTagCheck"); 772 NAME_TO_FULL_MODULE_NAME.put("RequireEmptyLineBeforeBlockTagGroupCheck", 773 BASE_PACKAGE + ".checks.javadoc.RequireEmptyLineBeforeBlockTagGroupCheck"); 774 NAME_TO_FULL_MODULE_NAME.put("SingleLineJavadocCheck", 775 BASE_PACKAGE + ".checks.javadoc.SingleLineJavadocCheck"); 776 NAME_TO_FULL_MODULE_NAME.put("SummaryJavadocCheck", 777 BASE_PACKAGE + ".checks.javadoc.SummaryJavadocCheck"); 778 NAME_TO_FULL_MODULE_NAME.put("WriteTagCheck", 779 BASE_PACKAGE + ".checks.javadoc.WriteTagCheck"); 780 } 781 782 /** 783 * Fill short-to-full module names map with Checks from metrics package. 784 */ 785 private static void fillChecksFromMetricsPackage() { 786 NAME_TO_FULL_MODULE_NAME.put("BooleanExpressionComplexityCheck", 787 BASE_PACKAGE + ".checks.metrics.BooleanExpressionComplexityCheck"); 788 NAME_TO_FULL_MODULE_NAME.put("ClassDataAbstractionCouplingCheck", 789 BASE_PACKAGE + ".checks.metrics.ClassDataAbstractionCouplingCheck"); 790 NAME_TO_FULL_MODULE_NAME.put("ClassFanOutComplexityCheck", 791 BASE_PACKAGE + ".checks.metrics.ClassFanOutComplexityCheck"); 792 NAME_TO_FULL_MODULE_NAME.put("CyclomaticComplexityCheck", 793 BASE_PACKAGE + ".checks.metrics.CyclomaticComplexityCheck"); 794 NAME_TO_FULL_MODULE_NAME.put("JavaNCSSCheck", 795 BASE_PACKAGE + ".checks.metrics.JavaNCSSCheck"); 796 NAME_TO_FULL_MODULE_NAME.put("NPathComplexityCheck", 797 BASE_PACKAGE + ".checks.metrics.NPathComplexityCheck"); 798 } 799 800 /** 801 * Fill short-to-full module names map with Checks from modifier package. 802 */ 803 private static void fillChecksFromModifierPackage() { 804 NAME_TO_FULL_MODULE_NAME.put("AnnotatedDeclarationVisibilityCheck", 805 BASE_PACKAGE + ".checks.modifier.AnnotatedDeclarationVisibilityCheck"); 806 NAME_TO_FULL_MODULE_NAME.put("ClassMemberImpliedModifierCheck", 807 BASE_PACKAGE + ".checks.modifier.ClassMemberImpliedModifierCheck"); 808 NAME_TO_FULL_MODULE_NAME.put("InterfaceMemberImpliedModifierCheck", 809 BASE_PACKAGE + ".checks.modifier.InterfaceMemberImpliedModifierCheck"); 810 NAME_TO_FULL_MODULE_NAME.put("ModifierOrderCheck", 811 BASE_PACKAGE + ".checks.modifier.ModifierOrderCheck"); 812 NAME_TO_FULL_MODULE_NAME.put("RedundantModifierCheck", 813 BASE_PACKAGE + ".checks.modifier.RedundantModifierCheck"); 814 } 815 816 /** 817 * Fill short-to-full module names map with Checks from modules package. 818 */ 819 private static void fillChecksFromModulesPackage() { 820 NAME_TO_FULL_MODULE_NAME.put("ModuleDirectiveOrderCheck", 821 BASE_PACKAGE + ".checks.modules.ModuleDirectiveOrderCheck"); 822 } 823 824 /** 825 * Fill short-to-full module names map with Checks from naming package. 826 */ 827 private static void fillChecksFromNamingPackage() { 828 NAME_TO_FULL_MODULE_NAME.put("AbbreviationAsWordInNameCheck", 829 BASE_PACKAGE + ".checks.naming.AbbreviationAsWordInNameCheck"); 830 NAME_TO_FULL_MODULE_NAME.put("AbstractClassNameCheck", 831 BASE_PACKAGE + ".checks.naming.AbstractClassNameCheck"); 832 NAME_TO_FULL_MODULE_NAME.put("CatchParameterNameCheck", 833 BASE_PACKAGE + ".checks.naming.CatchParameterNameCheck"); 834 NAME_TO_FULL_MODULE_NAME.put("ClassTypeParameterNameCheck", 835 BASE_PACKAGE + ".checks.naming.ClassTypeParameterNameCheck"); 836 NAME_TO_FULL_MODULE_NAME.put("ConstantNameCheck", 837 BASE_PACKAGE + ".checks.naming.ConstantNameCheck"); 838 NAME_TO_FULL_MODULE_NAME.put("InterfaceTypeParameterNameCheck", 839 BASE_PACKAGE + ".checks.naming.InterfaceTypeParameterNameCheck"); 840 NAME_TO_FULL_MODULE_NAME.put("LambdaParameterNameCheck", 841 BASE_PACKAGE + ".checks.naming.LambdaParameterNameCheck"); 842 NAME_TO_FULL_MODULE_NAME.put("LocalFinalVariableNameCheck", 843 BASE_PACKAGE + ".checks.naming.LocalFinalVariableNameCheck"); 844 NAME_TO_FULL_MODULE_NAME.put("LocalVariableNameCheck", 845 BASE_PACKAGE + ".checks.naming.LocalVariableNameCheck"); 846 NAME_TO_FULL_MODULE_NAME.put("MemberNameCheck", 847 BASE_PACKAGE + ".checks.naming.MemberNameCheck"); 848 NAME_TO_FULL_MODULE_NAME.put("GoogleNonConstantFieldNameCheck", 849 BASE_PACKAGE + ".checks.naming.GoogleNonConstantFieldNameCheck"); 850 NAME_TO_FULL_MODULE_NAME.put("MethodNameCheck", 851 BASE_PACKAGE + ".checks.naming.MethodNameCheck"); 852 NAME_TO_FULL_MODULE_NAME.put("GoogleMethodNameCheck", 853 BASE_PACKAGE + ".checks.naming.GoogleMethodNameCheck"); 854 NAME_TO_FULL_MODULE_NAME.put("MethodTypeParameterNameCheck", 855 BASE_PACKAGE + ".checks.naming.MethodTypeParameterNameCheck"); 856 NAME_TO_FULL_MODULE_NAME.put("PackageNameCheck", 857 BASE_PACKAGE + ".checks.naming.PackageNameCheck"); 858 NAME_TO_FULL_MODULE_NAME.put("ParameterNameCheck", 859 BASE_PACKAGE + ".checks.naming.ParameterNameCheck"); 860 NAME_TO_FULL_MODULE_NAME.put("RecordComponentNameCheck", 861 BASE_PACKAGE + ".checks.naming.RecordComponentNameCheck"); 862 NAME_TO_FULL_MODULE_NAME.put("RecordTypeParameterNameCheck", 863 BASE_PACKAGE + ".checks.naming.RecordTypeParameterNameCheck"); 864 NAME_TO_FULL_MODULE_NAME.put("StaticVariableNameCheck", 865 BASE_PACKAGE + ".checks.naming.StaticVariableNameCheck"); 866 NAME_TO_FULL_MODULE_NAME.put("TypeNameCheck", 867 BASE_PACKAGE + ".checks.naming.TypeNameCheck"); 868 NAME_TO_FULL_MODULE_NAME.put("PatternVariableNameCheck", 869 BASE_PACKAGE + ".checks.naming.PatternVariableNameCheck"); 870 NAME_TO_FULL_MODULE_NAME.put("IllegalIdentifierNameCheck", 871 BASE_PACKAGE + ".checks.naming.IllegalIdentifierNameCheck"); 872 } 873 874 /** 875 * Fill short-to-full module names map with Checks from regexp package. 876 */ 877 private static void fillChecksFromRegexpPackage() { 878 NAME_TO_FULL_MODULE_NAME.put("RegexpCheck", 879 BASE_PACKAGE + ".checks.regexp.RegexpCheck"); 880 NAME_TO_FULL_MODULE_NAME.put("RegexpMultilineCheck", 881 BASE_PACKAGE + ".checks.regexp.RegexpMultilineCheck"); 882 NAME_TO_FULL_MODULE_NAME.put("RegexpOnFilenameCheck", 883 BASE_PACKAGE + ".checks.regexp.RegexpOnFilenameCheck"); 884 NAME_TO_FULL_MODULE_NAME.put("RegexpSinglelineCheck", 885 BASE_PACKAGE + ".checks.regexp.RegexpSinglelineCheck"); 886 NAME_TO_FULL_MODULE_NAME.put("RegexpSinglelineJavaCheck", 887 BASE_PACKAGE + ".checks.regexp.RegexpSinglelineJavaCheck"); 888 } 889 890 /** 891 * Fill short-to-full module names map with Checks from sizes package. 892 */ 893 private static void fillChecksFromSizesPackage() { 894 NAME_TO_FULL_MODULE_NAME.put("AnonInnerLengthCheck", 895 BASE_PACKAGE + ".checks.sizes.AnonInnerLengthCheck"); 896 NAME_TO_FULL_MODULE_NAME.put("ExecutableStatementCountCheck", 897 BASE_PACKAGE + ".checks.sizes.ExecutableStatementCountCheck"); 898 NAME_TO_FULL_MODULE_NAME.put("FileLengthCheck", 899 BASE_PACKAGE + ".checks.sizes.FileLengthCheck"); 900 NAME_TO_FULL_MODULE_NAME.put("LambdaBodyLengthCheck", 901 BASE_PACKAGE + ".checks.sizes.LambdaBodyLengthCheck"); 902 NAME_TO_FULL_MODULE_NAME.put("LineLengthCheck", 903 BASE_PACKAGE + ".checks.sizes.LineLengthCheck"); 904 NAME_TO_FULL_MODULE_NAME.put("MethodCountCheck", 905 BASE_PACKAGE + ".checks.sizes.MethodCountCheck"); 906 NAME_TO_FULL_MODULE_NAME.put("MethodLengthCheck", 907 BASE_PACKAGE + ".checks.sizes.MethodLengthCheck"); 908 NAME_TO_FULL_MODULE_NAME.put("OuterTypeNumberCheck", 909 BASE_PACKAGE + ".checks.sizes.OuterTypeNumberCheck"); 910 NAME_TO_FULL_MODULE_NAME.put("ParameterNumberCheck", 911 BASE_PACKAGE + ".checks.sizes.ParameterNumberCheck"); 912 NAME_TO_FULL_MODULE_NAME.put("RecordComponentNumberCheck", 913 BASE_PACKAGE + ".checks.sizes.RecordComponentNumberCheck"); 914 } 915 916 /** 917 * Fill short-to-full module names map with Checks from whitespace package. 918 */ 919 private static void fillChecksFromWhitespacePackage() { 920 NAME_TO_FULL_MODULE_NAME.put("ArrayBracketNoWhitespaceCheck", 921 BASE_PACKAGE + ".checks.whitespace.ArrayBracketNoWhitespaceCheck"); 922 NAME_TO_FULL_MODULE_NAME.put("EmptyForInitializerPadCheck", 923 BASE_PACKAGE + ".checks.whitespace.EmptyForInitializerPadCheck"); 924 NAME_TO_FULL_MODULE_NAME.put("EmptyForIteratorPadCheck", 925 BASE_PACKAGE + ".checks.whitespace.EmptyForIteratorPadCheck"); 926 NAME_TO_FULL_MODULE_NAME.put("EmptyLineSeparatorCheck", 927 BASE_PACKAGE + ".checks.whitespace.EmptyLineSeparatorCheck"); 928 NAME_TO_FULL_MODULE_NAME.put("FileTabCharacterCheck", 929 BASE_PACKAGE + ".checks.whitespace.FileTabCharacterCheck"); 930 NAME_TO_FULL_MODULE_NAME.put("GenericWhitespaceCheck", 931 BASE_PACKAGE + ".checks.whitespace.GenericWhitespaceCheck"); 932 NAME_TO_FULL_MODULE_NAME.put("MethodParamPadCheck", 933 BASE_PACKAGE + ".checks.whitespace.MethodParamPadCheck"); 934 NAME_TO_FULL_MODULE_NAME.put("NoLineWrapCheck", 935 BASE_PACKAGE + ".checks.whitespace.NoLineWrapCheck"); 936 NAME_TO_FULL_MODULE_NAME.put("NoWhitespaceAfterCheck", 937 BASE_PACKAGE + ".checks.whitespace.NoWhitespaceAfterCheck"); 938 NAME_TO_FULL_MODULE_NAME.put("NoWhitespaceBeforeCheck", 939 BASE_PACKAGE + ".checks.whitespace.NoWhitespaceBeforeCheck"); 940 NAME_TO_FULL_MODULE_NAME.put("NoWhitespaceBeforeCaseDefaultColonCheck", 941 BASE_PACKAGE + ".checks.whitespace.NoWhitespaceBeforeCaseDefaultColonCheck"); 942 NAME_TO_FULL_MODULE_NAME.put("OperatorWrapCheck", 943 BASE_PACKAGE + ".checks.whitespace.OperatorWrapCheck"); 944 NAME_TO_FULL_MODULE_NAME.put("ParenPadCheck", 945 BASE_PACKAGE + ".checks.whitespace.ParenPadCheck"); 946 NAME_TO_FULL_MODULE_NAME.put("SeparatorWrapCheck", 947 BASE_PACKAGE + ".checks.whitespace.SeparatorWrapCheck"); 948 NAME_TO_FULL_MODULE_NAME.put("SingleSpaceSeparatorCheck", 949 BASE_PACKAGE + ".checks.whitespace.SingleSpaceSeparatorCheck"); 950 NAME_TO_FULL_MODULE_NAME.put("TypeBodyPaddingCheck", 951 BASE_PACKAGE + ".checks.whitespace.TypeBodyPaddingCheck"); 952 NAME_TO_FULL_MODULE_NAME.put("TypecastParenPadCheck", 953 BASE_PACKAGE + ".checks.whitespace.TypecastParenPadCheck"); 954 NAME_TO_FULL_MODULE_NAME.put("WhitespaceAfterCheck", 955 BASE_PACKAGE + ".checks.whitespace.WhitespaceAfterCheck"); 956 NAME_TO_FULL_MODULE_NAME.put("WhitespaceAroundCheck", 957 BASE_PACKAGE + ".checks.whitespace.WhitespaceAroundCheck"); 958 NAME_TO_FULL_MODULE_NAME.put("WhitespaceBeforeEmptyBodyCheck", 959 BASE_PACKAGE + ".checks.whitespace.WhitespaceBeforeEmptyBodyCheck"); 960 } 961 962 /** 963 * Fill short-to-full module names map with modules from checks package. 964 */ 965 private static void fillModulesFromChecksPackage() { 966 NAME_TO_FULL_MODULE_NAME.put("ArrayTypeStyleCheck", 967 BASE_PACKAGE + ".checks.ArrayTypeStyleCheck"); 968 NAME_TO_FULL_MODULE_NAME.put("AvoidEscapedUnicodeCharactersCheck", 969 BASE_PACKAGE + ".checks.AvoidEscapedUnicodeCharactersCheck"); 970 NAME_TO_FULL_MODULE_NAME.put("DescendantTokenCheck", 971 BASE_PACKAGE + ".checks.DescendantTokenCheck"); 972 NAME_TO_FULL_MODULE_NAME.put("FinalParametersCheck", 973 BASE_PACKAGE + ".checks.FinalParametersCheck"); 974 NAME_TO_FULL_MODULE_NAME.put("NewlineAtEndOfFileCheck", 975 BASE_PACKAGE + ".checks.NewlineAtEndOfFileCheck"); 976 NAME_TO_FULL_MODULE_NAME.put("LineEndingCheck", 977 BASE_PACKAGE + ".checks.LineEndingCheck"); 978 NAME_TO_FULL_MODULE_NAME.put("MultilineCommentLeadingAsteriskPresenceCheck", 979 BASE_PACKAGE + ".checks.MultilineCommentLeadingAsteriskPresenceCheck"); 980 NAME_TO_FULL_MODULE_NAME.put("NoCodeInFileCheck", 981 BASE_PACKAGE + ".checks.NoCodeInFileCheck"); 982 NAME_TO_FULL_MODULE_NAME.put("OuterTypeFilenameCheck", 983 BASE_PACKAGE + ".checks.OuterTypeFilenameCheck"); 984 NAME_TO_FULL_MODULE_NAME.put("OrderedPropertiesCheck", 985 BASE_PACKAGE + ".checks.OrderedPropertiesCheck"); 986 NAME_TO_FULL_MODULE_NAME.put("SuppressWarningsHolder", 987 BASE_PACKAGE + ".checks.SuppressWarningsHolder"); 988 NAME_TO_FULL_MODULE_NAME.put("TodoCommentCheck", 989 BASE_PACKAGE + ".checks.TodoCommentCheck"); 990 NAME_TO_FULL_MODULE_NAME.put("TrailingCommentCheck", 991 BASE_PACKAGE + ".checks.TrailingCommentCheck"); 992 NAME_TO_FULL_MODULE_NAME.put("TranslationCheck", 993 BASE_PACKAGE + ".checks.TranslationCheck"); 994 NAME_TO_FULL_MODULE_NAME.put("UncommentedMainCheck", 995 BASE_PACKAGE + ".checks.UncommentedMainCheck"); 996 NAME_TO_FULL_MODULE_NAME.put("UniquePropertiesCheck", 997 BASE_PACKAGE + ".checks.UniquePropertiesCheck"); 998 NAME_TO_FULL_MODULE_NAME.put("UpperEllCheck", 999 BASE_PACKAGE + ".checks.UpperEllCheck"); 1000 NAME_TO_FULL_MODULE_NAME.put("HexLiteralCaseCheck", 1001 BASE_PACKAGE + ".checks.HexLiteralCaseCheck"); 1002 NAME_TO_FULL_MODULE_NAME.put("NumericalPrefixesInfixesSuffixesCharacterCaseCheck", 1003 BASE_PACKAGE + ".checks.NumericalPrefixesInfixesSuffixesCharacterCaseCheck"); 1004 } 1005 1006 /** 1007 * Fill short-to-full module names map with modules from filefilters package. 1008 */ 1009 private static void fillModulesFromFilefiltersPackage() { 1010 NAME_TO_FULL_MODULE_NAME.put("BeforeExecutionExclusionFileFilter", 1011 BASE_PACKAGE + ".filefilters.BeforeExecutionExclusionFileFilter"); 1012 } 1013 1014 /** 1015 * Fill short-to-full module names map with modules from filters package. 1016 */ 1017 private static void fillModulesFromFiltersPackage() { 1018 NAME_TO_FULL_MODULE_NAME.put("SeverityMatchFilter", 1019 BASE_PACKAGE + ".filters.SeverityMatchFilter"); 1020 NAME_TO_FULL_MODULE_NAME.put("SuppressWithPlainTextCommentFilter", 1021 BASE_PACKAGE + ".filters.SuppressWithPlainTextCommentFilter"); 1022 NAME_TO_FULL_MODULE_NAME.put("SuppressionCommentFilter", 1023 BASE_PACKAGE + ".filters.SuppressionCommentFilter"); 1024 NAME_TO_FULL_MODULE_NAME.put("SuppressionFilter", 1025 BASE_PACKAGE + ".filters.SuppressionFilter"); 1026 NAME_TO_FULL_MODULE_NAME.put("SuppressionSingleFilter", 1027 BASE_PACKAGE + ".filters.SuppressionSingleFilter"); 1028 NAME_TO_FULL_MODULE_NAME.put("SuppressionXpathFilter", 1029 BASE_PACKAGE + ".filters.SuppressionXpathFilter"); 1030 NAME_TO_FULL_MODULE_NAME.put("SuppressionXpathSingleFilter", 1031 BASE_PACKAGE + ".filters.SuppressionXpathSingleFilter"); 1032 NAME_TO_FULL_MODULE_NAME.put("SuppressWarningsFilter", 1033 BASE_PACKAGE + ".filters.SuppressWarningsFilter"); 1034 NAME_TO_FULL_MODULE_NAME.put("SuppressWithNearbyCommentFilter", 1035 BASE_PACKAGE + ".filters.SuppressWithNearbyCommentFilter"); 1036 NAME_TO_FULL_MODULE_NAME.put("SuppressWithNearbyTextFilter", 1037 BASE_PACKAGE + ".filters.SuppressWithNearbyTextFilter"); 1038 } 1039 1040 /** 1041 * Fill short-to-full module names map with modules from checkstyle package. 1042 */ 1043 private static void fillModulesFromCheckstylePackage() { 1044 NAME_TO_FULL_MODULE_NAME.put("Checker", BASE_PACKAGE + ".Checker"); 1045 NAME_TO_FULL_MODULE_NAME.put("TreeWalker", BASE_PACKAGE + ".TreeWalker"); 1046 } 1047 1048}