1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package com.puppycrawl.tools.checkstyle;
21
22 import java.io.IOException;
23 import java.lang.reflect.Constructor;
24 import java.util.Collections;
25 import java.util.HashMap;
26 import java.util.LinkedHashSet;
27 import java.util.List;
28 import java.util.Map;
29 import java.util.Map.Entry;
30 import java.util.Set;
31 import java.util.stream.Collectors;
32 import java.util.stream.Stream;
33
34 import com.puppycrawl.tools.checkstyle.api.CheckstyleException;
35 import com.puppycrawl.tools.checkstyle.api.LocalizedMessage;
36 import com.puppycrawl.tools.checkstyle.utils.ModuleReflectionUtil;
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 public class PackageObjectFactory implements ModuleFactory {
53
54
55
56
57 public enum ModuleLoadOption {
58
59
60
61
62 SEARCH_REGISTERED_PACKAGES,
63
64
65
66
67
68 TRY_IN_ALL_REGISTERED_PACKAGES,
69
70 }
71
72
73 public static final String BASE_PACKAGE = "com.puppycrawl.tools.checkstyle";
74
75
76 public static final String UNABLE_TO_INSTANTIATE_EXCEPTION_MESSAGE =
77 "PackageObjectFactory.unableToInstantiateExceptionMessage";
78
79
80 public static final String AMBIGUOUS_MODULE_NAME_EXCEPTION_MESSAGE =
81 "PackageObjectFactory.ambiguousModuleNameExceptionMessage";
82
83
84 public static final String CHECK_SUFFIX = "Check";
85
86
87 public static final String PACKAGE_SEPARATOR = ".";
88
89
90 public static final String NULL_LOADER_MESSAGE = "moduleClassLoader must not be null";
91
92
93 public static final String NULL_PACKAGE_MESSAGE = "package name must not be null";
94
95
96 public static final String STRING_SEPARATOR = ", ";
97
98
99 private static final Map<String, String> NAME_TO_FULL_MODULE_NAME = new HashMap<>();
100
101
102 private final Set<String> packages;
103
104
105 private final ClassLoader moduleClassLoader;
106
107
108 private Map<String, Set<String>> thirdPartyNameToFullModuleNames;
109
110
111 private ModuleLoadOption moduleLoadOption;
112
113 static {
114 fillShortToFullModuleNamesMap();
115 }
116
117
118
119
120
121
122
123 public PackageObjectFactory(Set<String> packageNames, ClassLoader moduleClassLoader) {
124 this(packageNames, moduleClassLoader, ModuleLoadOption.SEARCH_REGISTERED_PACKAGES);
125 }
126
127
128
129
130
131
132
133
134 public PackageObjectFactory(Set<String> packageNames, ClassLoader moduleClassLoader,
135 ModuleLoadOption moduleLoadOption) {
136 if (moduleClassLoader == null) {
137 throw new IllegalArgumentException(NULL_LOADER_MESSAGE);
138 }
139 if (packageNames.contains(null)) {
140 throw new IllegalArgumentException(NULL_PACKAGE_MESSAGE);
141 }
142
143
144 packages = new LinkedHashSet<>(packageNames);
145 this.moduleClassLoader = moduleClassLoader;
146 this.moduleLoadOption = moduleLoadOption;
147 }
148
149
150
151
152
153
154
155 public PackageObjectFactory(String packageName, ClassLoader moduleClassLoader) {
156 if (moduleClassLoader == null) {
157 throw new IllegalArgumentException(NULL_LOADER_MESSAGE);
158 }
159 if (packageName == null) {
160 throw new IllegalArgumentException(NULL_PACKAGE_MESSAGE);
161 }
162
163 packages = Collections.singleton(packageName);
164 this.moduleClassLoader = moduleClassLoader;
165 }
166
167
168
169
170
171
172
173
174
175
176
177 @Override
178 public Object createModule(String name) throws CheckstyleException {
179 Object instance = null;
180
181 if (!name.contains(PACKAGE_SEPARATOR)) {
182 instance = createFromStandardCheckSet(name);
183
184 if (instance == null) {
185 if (thirdPartyNameToFullModuleNames == null) {
186 thirdPartyNameToFullModuleNames =
187 generateThirdPartyNameToFullModuleName(moduleClassLoader);
188 }
189 instance = createObjectFromMap(name, thirdPartyNameToFullModuleNames);
190 }
191 }
192 if (instance == null) {
193 instance = createObject(name);
194 }
195 if (instance == null
196 && moduleLoadOption == ModuleLoadOption.TRY_IN_ALL_REGISTERED_PACKAGES) {
197 instance = createModuleByTryInEachPackage(name);
198 }
199 if (instance == null) {
200 String attemptedNames = null;
201 if (!name.contains(PACKAGE_SEPARATOR)) {
202 final String nameCheck = name + CHECK_SUFFIX;
203 attemptedNames = joinPackageNamesWithClassName(name, packages)
204 + STRING_SEPARATOR + nameCheck + STRING_SEPARATOR
205 + joinPackageNamesWithClassName(nameCheck, packages);
206 }
207 final LocalizedMessage exceptionMessage = new LocalizedMessage(1,
208 Definitions.CHECKSTYLE_BUNDLE, UNABLE_TO_INSTANTIATE_EXCEPTION_MESSAGE,
209 new String[] {name, attemptedNames}, null, getClass(), null);
210 throw new CheckstyleException(exceptionMessage.getMessage());
211 }
212 return instance;
213 }
214
215
216
217
218
219
220
221 private Object createFromStandardCheckSet(String name) throws CheckstyleException {
222 final String fullModuleName = NAME_TO_FULL_MODULE_NAME.get(name);
223 Object instance = null;
224 if (fullModuleName == null) {
225 final String fullCheckModuleName =
226 NAME_TO_FULL_MODULE_NAME.get(name + CHECK_SUFFIX);
227 if (fullCheckModuleName != null) {
228 instance = createObject(fullCheckModuleName);
229 }
230 }
231 else {
232 instance = createObject(fullModuleName);
233 }
234 return instance;
235 }
236
237
238
239
240
241
242
243
244 private Object createObjectFromMap(String name, Map<String, Set<String>> map)
245 throws CheckstyleException {
246 final Set<String> fullModuleNames = map.get(name);
247 Object instance = null;
248 if (fullModuleNames == null) {
249 final Set<String> fullCheckModuleNames = map.get(name + CHECK_SUFFIX);
250 if (fullCheckModuleNames != null) {
251 instance = createObjectFromFullModuleNames(name, fullCheckModuleNames);
252 }
253 }
254 else {
255 instance = createObjectFromFullModuleNames(name, fullModuleNames);
256 }
257 return instance;
258 }
259
260
261
262
263
264
265
266
267
268
269
270 private Object createObjectFromFullModuleNames(String name, Set<String> fullModuleNames)
271 throws CheckstyleException {
272 final Object returnValue;
273 if (fullModuleNames.size() == 1) {
274 returnValue = createObject(fullModuleNames.iterator().next());
275 }
276 else {
277 final String optionalNames = fullModuleNames.stream()
278 .sorted()
279 .collect(Collectors.joining(STRING_SEPARATOR));
280 final LocalizedMessage exceptionMessage = new LocalizedMessage(1,
281 Definitions.CHECKSTYLE_BUNDLE, AMBIGUOUS_MODULE_NAME_EXCEPTION_MESSAGE,
282 new String[] {name, optionalNames}, null, getClass(), null);
283 throw new CheckstyleException(exceptionMessage.getMessage());
284 }
285 return returnValue;
286 }
287
288
289
290
291
292
293
294
295 private Map<String, Set<String>> generateThirdPartyNameToFullModuleName(ClassLoader loader) {
296 Map<String, Set<String>> returnValue;
297 try {
298 returnValue = ModuleReflectionUtil.getCheckstyleModules(packages, loader).stream()
299 .collect(Collectors.groupingBy(Class::getSimpleName,
300 Collectors.mapping(Class::getCanonicalName, Collectors.toSet())));
301 }
302 catch (IOException ignore) {
303 returnValue = Collections.emptyMap();
304 }
305 return returnValue;
306 }
307
308
309
310
311
312
313 public static String getShortFromFullModuleNames(String fullName) {
314 return NAME_TO_FULL_MODULE_NAME
315 .entrySet()
316 .stream()
317 .filter(entry -> entry.getValue().equals(fullName))
318 .map(Entry::getKey)
319 .findFirst()
320 .orElse(fullName);
321 }
322
323
324
325
326
327
328
329 private static String joinPackageNamesWithClassName(String className, Set<String> packages) {
330 return packages.stream().collect(
331 Collectors.joining(PACKAGE_SEPARATOR + className + STRING_SEPARATOR, "",
332 PACKAGE_SEPARATOR + className));
333 }
334
335
336
337
338
339
340
341 private Object createObject(String className) throws CheckstyleException {
342 Class<?> clazz = null;
343
344 try {
345 clazz = Class.forName(className, true, moduleClassLoader);
346 }
347 catch (final ReflectiveOperationException | NoClassDefFoundError ignored) {
348
349 }
350
351 Object instance = null;
352
353 if (clazz != null) {
354 try {
355 final Constructor<?> declaredConstructor = clazz.getDeclaredConstructor();
356 declaredConstructor.setAccessible(true);
357 instance = declaredConstructor.newInstance();
358 }
359 catch (final ReflectiveOperationException ex) {
360 throw new CheckstyleException("Unable to instantiate " + className, ex);
361 }
362 }
363
364 return instance;
365 }
366
367
368
369
370
371
372
373
374 private Object createModuleByTryInEachPackage(String name) throws CheckstyleException {
375 final List<String> possibleNames = packages.stream()
376 .map(packageName -> packageName + PACKAGE_SEPARATOR + name)
377 .flatMap(className -> Stream.of(className, className + CHECK_SUFFIX))
378 .collect(Collectors.toList());
379 Object instance = null;
380 for (String possibleName : possibleNames) {
381 instance = createObject(possibleName);
382 if (instance != null) {
383 break;
384 }
385 }
386 return instance;
387 }
388
389
390
391
392 private static void fillShortToFullModuleNamesMap() {
393 fillChecksFromAnnotationPackage();
394 fillChecksFromBlocksPackage();
395 fillChecksFromCodingPackage();
396 fillChecksFromDesignPackage();
397 fillChecksFromHeaderPackage();
398 fillChecksFromImportsPackage();
399 fillChecksFromIndentationPackage();
400 fillChecksFromJavadocPackage();
401 fillChecksFromMetricsPackage();
402 fillChecksFromModifierPackage();
403 fillChecksFromNamingPackage();
404 fillChecksFromRegexpPackage();
405 fillChecksFromSizesPackage();
406 fillChecksFromWhitespacePackage();
407 fillModulesFromChecksPackage();
408 fillModulesFromFilefiltersPackage();
409 fillModulesFromFiltersPackage();
410 fillModulesFromCheckstylePackage();
411 }
412
413
414
415
416 private static void fillChecksFromAnnotationPackage() {
417 NAME_TO_FULL_MODULE_NAME.put("AnnotationLocationCheck",
418 BASE_PACKAGE + ".checks.annotation.AnnotationLocationCheck");
419 NAME_TO_FULL_MODULE_NAME.put("AnnotationOnSameLineCheck",
420 BASE_PACKAGE + ".checks.annotation.AnnotationOnSameLineCheck");
421 NAME_TO_FULL_MODULE_NAME.put("AnnotationUseStyleCheck",
422 BASE_PACKAGE + ".checks.annotation.AnnotationUseStyleCheck");
423 NAME_TO_FULL_MODULE_NAME.put("MissingDeprecatedCheck",
424 BASE_PACKAGE + ".checks.annotation.MissingDeprecatedCheck");
425 NAME_TO_FULL_MODULE_NAME.put("MissingOverrideCheck",
426 BASE_PACKAGE + ".checks.annotation.MissingOverrideCheck");
427 NAME_TO_FULL_MODULE_NAME.put("PackageAnnotationCheck",
428 BASE_PACKAGE + ".checks.annotation.PackageAnnotationCheck");
429 NAME_TO_FULL_MODULE_NAME.put("SuppressWarningsCheck",
430 BASE_PACKAGE + ".checks.annotation.SuppressWarningsCheck");
431 }
432
433
434
435
436 private static void fillChecksFromBlocksPackage() {
437 NAME_TO_FULL_MODULE_NAME.put("AvoidNestedBlocksCheck",
438 BASE_PACKAGE + ".checks.blocks.AvoidNestedBlocksCheck");
439 NAME_TO_FULL_MODULE_NAME.put("EmptyBlockCheck",
440 BASE_PACKAGE + ".checks.blocks.EmptyBlockCheck");
441 NAME_TO_FULL_MODULE_NAME.put("EmptyCatchBlockCheck",
442 BASE_PACKAGE + ".checks.blocks.EmptyCatchBlockCheck");
443 NAME_TO_FULL_MODULE_NAME.put("LeftCurlyCheck",
444 BASE_PACKAGE + ".checks.blocks.LeftCurlyCheck");
445 NAME_TO_FULL_MODULE_NAME.put("NeedBracesCheck",
446 BASE_PACKAGE + ".checks.blocks.NeedBracesCheck");
447 NAME_TO_FULL_MODULE_NAME.put("RightCurlyCheck",
448 BASE_PACKAGE + ".checks.blocks.RightCurlyCheck");
449 }
450
451
452
453
454
455 private static void fillChecksFromCodingPackage() {
456 NAME_TO_FULL_MODULE_NAME.put("ArrayTrailingCommaCheck",
457 BASE_PACKAGE + ".checks.coding.ArrayTrailingCommaCheck");
458 NAME_TO_FULL_MODULE_NAME.put("AvoidInlineConditionalsCheck",
459 BASE_PACKAGE + ".checks.coding.AvoidInlineConditionalsCheck");
460 NAME_TO_FULL_MODULE_NAME.put("CovariantEqualsCheck",
461 BASE_PACKAGE + ".checks.coding.CovariantEqualsCheck");
462 NAME_TO_FULL_MODULE_NAME.put("DeclarationOrderCheck",
463 BASE_PACKAGE + ".checks.coding.DeclarationOrderCheck");
464 NAME_TO_FULL_MODULE_NAME.put("DefaultComesLastCheck",
465 BASE_PACKAGE + ".checks.coding.DefaultComesLastCheck");
466 NAME_TO_FULL_MODULE_NAME.put("EmptyStatementCheck",
467 BASE_PACKAGE + ".checks.coding.EmptyStatementCheck");
468 NAME_TO_FULL_MODULE_NAME.put("EqualsAvoidNullCheck",
469 BASE_PACKAGE + ".checks.coding.EqualsAvoidNullCheck");
470 NAME_TO_FULL_MODULE_NAME.put("EqualsHashCodeCheck",
471 BASE_PACKAGE + ".checks.coding.EqualsHashCodeCheck");
472 NAME_TO_FULL_MODULE_NAME.put("ExplicitInitializationCheck",
473 BASE_PACKAGE + ".checks.coding.ExplicitInitializationCheck");
474 NAME_TO_FULL_MODULE_NAME.put("FallThroughCheck",
475 BASE_PACKAGE + ".checks.coding.FallThroughCheck");
476 NAME_TO_FULL_MODULE_NAME.put("FinalLocalVariableCheck",
477 BASE_PACKAGE + ".checks.coding.FinalLocalVariableCheck");
478 NAME_TO_FULL_MODULE_NAME.put("HiddenFieldCheck",
479 BASE_PACKAGE + ".checks.coding.HiddenFieldCheck");
480 NAME_TO_FULL_MODULE_NAME.put("IllegalCatchCheck",
481 BASE_PACKAGE + ".checks.coding.IllegalCatchCheck");
482 NAME_TO_FULL_MODULE_NAME.put("IllegalInstantiationCheck",
483 BASE_PACKAGE + ".checks.coding.IllegalInstantiationCheck");
484 NAME_TO_FULL_MODULE_NAME.put("IllegalThrowsCheck",
485 BASE_PACKAGE + ".checks.coding.IllegalThrowsCheck");
486 NAME_TO_FULL_MODULE_NAME.put("IllegalTokenCheck",
487 BASE_PACKAGE + ".checks.coding.IllegalTokenCheck");
488 NAME_TO_FULL_MODULE_NAME.put("IllegalTokenTextCheck",
489 BASE_PACKAGE + ".checks.coding.IllegalTokenTextCheck");
490 NAME_TO_FULL_MODULE_NAME.put("IllegalTypeCheck",
491 BASE_PACKAGE + ".checks.coding.IllegalTypeCheck");
492 NAME_TO_FULL_MODULE_NAME.put("InnerAssignmentCheck",
493 BASE_PACKAGE + ".checks.coding.InnerAssignmentCheck");
494 NAME_TO_FULL_MODULE_NAME.put("MagicNumberCheck",
495 BASE_PACKAGE + ".checks.coding.MagicNumberCheck");
496 NAME_TO_FULL_MODULE_NAME.put("MissingCtorCheck",
497 BASE_PACKAGE + ".checks.coding.MissingCtorCheck");
498 NAME_TO_FULL_MODULE_NAME.put("MissingSwitchDefaultCheck",
499 BASE_PACKAGE + ".checks.coding.MissingSwitchDefaultCheck");
500 NAME_TO_FULL_MODULE_NAME.put("ModifiedControlVariableCheck",
501 BASE_PACKAGE + ".checks.coding.ModifiedControlVariableCheck");
502 NAME_TO_FULL_MODULE_NAME.put("MultipleStringLiteralsCheck",
503 BASE_PACKAGE + ".checks.coding.MultipleStringLiteralsCheck");
504 NAME_TO_FULL_MODULE_NAME.put("MultipleVariableDeclarationsCheck",
505 BASE_PACKAGE + ".checks.coding.MultipleVariableDeclarationsCheck");
506 NAME_TO_FULL_MODULE_NAME.put("NestedForDepthCheck",
507 BASE_PACKAGE + ".checks.coding.NestedForDepthCheck");
508 NAME_TO_FULL_MODULE_NAME.put("NestedIfDepthCheck",
509 BASE_PACKAGE + ".checks.coding.NestedIfDepthCheck");
510 NAME_TO_FULL_MODULE_NAME.put("NestedTryDepthCheck",
511 BASE_PACKAGE + ".checks.coding.NestedTryDepthCheck");
512 NAME_TO_FULL_MODULE_NAME.put("NoCloneCheck",
513 BASE_PACKAGE + ".checks.coding.NoCloneCheck");
514 NAME_TO_FULL_MODULE_NAME.put("NoFinalizerCheck",
515 BASE_PACKAGE + ".checks.coding.NoFinalizerCheck");
516 NAME_TO_FULL_MODULE_NAME.put("OneStatementPerLineCheck",
517 BASE_PACKAGE + ".checks.coding.OneStatementPerLineCheck");
518 NAME_TO_FULL_MODULE_NAME.put("OverloadMethodsDeclarationOrderCheck",
519 BASE_PACKAGE + ".checks.coding.OverloadMethodsDeclarationOrderCheck");
520 NAME_TO_FULL_MODULE_NAME.put("PackageDeclarationCheck",
521 BASE_PACKAGE + ".checks.coding.PackageDeclarationCheck");
522 NAME_TO_FULL_MODULE_NAME.put("ParameterAssignmentCheck",
523 BASE_PACKAGE + ".checks.coding.ParameterAssignmentCheck");
524 NAME_TO_FULL_MODULE_NAME.put("RequireThisCheck",
525 BASE_PACKAGE + ".checks.coding.RequireThisCheck");
526 NAME_TO_FULL_MODULE_NAME.put("ReturnCountCheck",
527 BASE_PACKAGE + ".checks.coding.ReturnCountCheck");
528 NAME_TO_FULL_MODULE_NAME.put("SimplifyBooleanExpressionCheck",
529 BASE_PACKAGE + ".checks.coding.SimplifyBooleanExpressionCheck");
530 NAME_TO_FULL_MODULE_NAME.put("SimplifyBooleanReturnCheck",
531 BASE_PACKAGE + ".checks.coding.SimplifyBooleanReturnCheck");
532 NAME_TO_FULL_MODULE_NAME.put("StringLiteralEqualityCheck",
533 BASE_PACKAGE + ".checks.coding.StringLiteralEqualityCheck");
534 NAME_TO_FULL_MODULE_NAME.put("SuperCloneCheck",
535 BASE_PACKAGE + ".checks.coding.SuperCloneCheck");
536 NAME_TO_FULL_MODULE_NAME.put("SuperFinalizeCheck",
537 BASE_PACKAGE + ".checks.coding.SuperFinalizeCheck");
538 NAME_TO_FULL_MODULE_NAME.put("UnnecessaryParenthesesCheck",
539 BASE_PACKAGE + ".checks.coding.UnnecessaryParenthesesCheck");
540 NAME_TO_FULL_MODULE_NAME.put("VariableDeclarationUsageDistanceCheck",
541 BASE_PACKAGE + ".checks.coding.VariableDeclarationUsageDistanceCheck");
542 }
543
544
545
546
547 private static void fillChecksFromDesignPackage() {
548 NAME_TO_FULL_MODULE_NAME.put("DesignForExtensionCheck",
549 BASE_PACKAGE + ".checks.design.DesignForExtensionCheck");
550 NAME_TO_FULL_MODULE_NAME.put("FinalClassCheck",
551 BASE_PACKAGE + ".checks.design.FinalClassCheck");
552 NAME_TO_FULL_MODULE_NAME.put("HideUtilityClassConstructorCheck",
553 BASE_PACKAGE + ".checks.design.HideUtilityClassConstructorCheck");
554 NAME_TO_FULL_MODULE_NAME.put("InnerTypeLastCheck",
555 BASE_PACKAGE + ".checks.design.InnerTypeLastCheck");
556 NAME_TO_FULL_MODULE_NAME.put("InterfaceIsTypeCheck",
557 BASE_PACKAGE + ".checks.design.InterfaceIsTypeCheck");
558 NAME_TO_FULL_MODULE_NAME.put("MutableExceptionCheck",
559 BASE_PACKAGE + ".checks.design.MutableExceptionCheck");
560 NAME_TO_FULL_MODULE_NAME.put("OneTopLevelClassCheck",
561 BASE_PACKAGE + ".checks.design.OneTopLevelClassCheck");
562 NAME_TO_FULL_MODULE_NAME.put("ThrowsCountCheck",
563 BASE_PACKAGE + ".checks.design.ThrowsCountCheck");
564 NAME_TO_FULL_MODULE_NAME.put("VisibilityModifierCheck",
565 BASE_PACKAGE + ".checks.design.VisibilityModifierCheck");
566 }
567
568
569
570
571 private static void fillChecksFromHeaderPackage() {
572 NAME_TO_FULL_MODULE_NAME.put("HeaderCheck",
573 BASE_PACKAGE + ".checks.header.HeaderCheck");
574 NAME_TO_FULL_MODULE_NAME.put("RegexpHeaderCheck",
575 BASE_PACKAGE + ".checks.header.RegexpHeaderCheck");
576 }
577
578
579
580
581 private static void fillChecksFromImportsPackage() {
582 NAME_TO_FULL_MODULE_NAME.put("AvoidStarImportCheck",
583 BASE_PACKAGE + ".checks.imports.AvoidStarImportCheck");
584 NAME_TO_FULL_MODULE_NAME.put("AvoidStaticImportCheck",
585 BASE_PACKAGE + ".checks.imports.AvoidStaticImportCheck");
586 NAME_TO_FULL_MODULE_NAME.put("CustomImportOrderCheck",
587 BASE_PACKAGE + ".checks.imports.CustomImportOrderCheck");
588 NAME_TO_FULL_MODULE_NAME.put("IllegalImportCheck",
589 BASE_PACKAGE + ".checks.imports.IllegalImportCheck");
590 NAME_TO_FULL_MODULE_NAME.put("ImportControlCheck",
591 BASE_PACKAGE + ".checks.imports.ImportControlCheck");
592 NAME_TO_FULL_MODULE_NAME.put("ImportOrderCheck",
593 BASE_PACKAGE + ".checks.imports.ImportOrderCheck");
594 NAME_TO_FULL_MODULE_NAME.put("RedundantImportCheck",
595 BASE_PACKAGE + ".checks.imports.RedundantImportCheck");
596 NAME_TO_FULL_MODULE_NAME.put("UnusedImportsCheck",
597 BASE_PACKAGE + ".checks.imports.UnusedImportsCheck");
598 }
599
600
601
602
603 private static void fillChecksFromIndentationPackage() {
604 NAME_TO_FULL_MODULE_NAME.put("CommentsIndentationCheck",
605 BASE_PACKAGE + ".checks.indentation.CommentsIndentationCheck");
606 NAME_TO_FULL_MODULE_NAME.put("IndentationCheck",
607 BASE_PACKAGE + ".checks.indentation.IndentationCheck");
608 }
609
610
611
612
613 private static void fillChecksFromJavadocPackage() {
614 NAME_TO_FULL_MODULE_NAME.put("AtclauseOrderCheck",
615 BASE_PACKAGE + ".checks.javadoc.AtclauseOrderCheck");
616 NAME_TO_FULL_MODULE_NAME.put("JavadocMethodCheck",
617 BASE_PACKAGE + ".checks.javadoc.JavadocMethodCheck");
618 NAME_TO_FULL_MODULE_NAME.put("JavadocPackageCheck",
619 BASE_PACKAGE + ".checks.javadoc.JavadocPackageCheck");
620 NAME_TO_FULL_MODULE_NAME.put("JavadocParagraphCheck",
621 BASE_PACKAGE + ".checks.javadoc.JavadocParagraphCheck");
622 NAME_TO_FULL_MODULE_NAME.put("JavadocStyleCheck",
623 BASE_PACKAGE + ".checks.javadoc.JavadocStyleCheck");
624 NAME_TO_FULL_MODULE_NAME.put("JavadocTagContinuationIndentationCheck",
625 BASE_PACKAGE + ".checks.javadoc.JavadocTagContinuationIndentationCheck");
626 NAME_TO_FULL_MODULE_NAME.put("JavadocTypeCheck",
627 BASE_PACKAGE + ".checks.javadoc.JavadocTypeCheck");
628 NAME_TO_FULL_MODULE_NAME.put("JavadocVariableCheck",
629 BASE_PACKAGE + ".checks.javadoc.JavadocVariableCheck");
630 NAME_TO_FULL_MODULE_NAME.put("MissingJavadocTypeCheck",
631 BASE_PACKAGE + ".checks.javadoc.MissingJavadocTypeCheck");
632 NAME_TO_FULL_MODULE_NAME.put("NonEmptyAtclauseDescriptionCheck",
633 BASE_PACKAGE + ".checks.javadoc.NonEmptyAtclauseDescriptionCheck");
634 NAME_TO_FULL_MODULE_NAME.put("SingleLineJavadocCheck",
635 BASE_PACKAGE + ".checks.javadoc.SingleLineJavadocCheck");
636 NAME_TO_FULL_MODULE_NAME.put("SummaryJavadocCheck",
637 BASE_PACKAGE + ".checks.javadoc.SummaryJavadocCheck");
638 NAME_TO_FULL_MODULE_NAME.put("WriteTagCheck",
639 BASE_PACKAGE + ".checks.javadoc.WriteTagCheck");
640 }
641
642
643
644
645 private static void fillChecksFromMetricsPackage() {
646 NAME_TO_FULL_MODULE_NAME.put("BooleanExpressionComplexityCheck",
647 BASE_PACKAGE + ".checks.metrics.BooleanExpressionComplexityCheck");
648 NAME_TO_FULL_MODULE_NAME.put("ClassDataAbstractionCouplingCheck",
649 BASE_PACKAGE + ".checks.metrics.ClassDataAbstractionCouplingCheck");
650 NAME_TO_FULL_MODULE_NAME.put("ClassFanOutComplexityCheck",
651 BASE_PACKAGE + ".checks.metrics.ClassFanOutComplexityCheck");
652 NAME_TO_FULL_MODULE_NAME.put("CyclomaticComplexityCheck",
653 BASE_PACKAGE + ".checks.metrics.CyclomaticComplexityCheck");
654 NAME_TO_FULL_MODULE_NAME.put("JavaNCSSCheck",
655 BASE_PACKAGE + ".checks.metrics.JavaNCSSCheck");
656 NAME_TO_FULL_MODULE_NAME.put("NPathComplexityCheck",
657 BASE_PACKAGE + ".checks.metrics.NPathComplexityCheck");
658 }
659
660
661
662
663 private static void fillChecksFromModifierPackage() {
664 NAME_TO_FULL_MODULE_NAME.put("ClassMemberImpliedModifierCheck",
665 BASE_PACKAGE + ".checks.modifier.ClassMemberImpliedModifierCheck");
666 NAME_TO_FULL_MODULE_NAME.put("InterfaceMemberImpliedModifierCheck",
667 BASE_PACKAGE + ".checks.modifier.InterfaceMemberImpliedModifierCheck");
668 NAME_TO_FULL_MODULE_NAME.put("ModifierOrderCheck",
669 BASE_PACKAGE + ".checks.modifier.ModifierOrderCheck");
670 NAME_TO_FULL_MODULE_NAME.put("RedundantModifierCheck",
671 BASE_PACKAGE + ".checks.modifier.RedundantModifierCheck");
672 }
673
674
675
676
677 private static void fillChecksFromNamingPackage() {
678 NAME_TO_FULL_MODULE_NAME.put("AbbreviationAsWordInNameCheck",
679 BASE_PACKAGE + ".checks.naming.AbbreviationAsWordInNameCheck");
680 NAME_TO_FULL_MODULE_NAME.put("AbstractClassNameCheck",
681 BASE_PACKAGE + ".checks.naming.AbstractClassNameCheck");
682 NAME_TO_FULL_MODULE_NAME.put("CatchParameterNameCheck",
683 BASE_PACKAGE + ".checks.naming.CatchParameterNameCheck");
684 NAME_TO_FULL_MODULE_NAME.put("ClassTypeParameterNameCheck",
685 BASE_PACKAGE + ".checks.naming.ClassTypeParameterNameCheck");
686 NAME_TO_FULL_MODULE_NAME.put("ConstantNameCheck",
687 BASE_PACKAGE + ".checks.naming.ConstantNameCheck");
688 NAME_TO_FULL_MODULE_NAME.put("InterfaceTypeParameterNameCheck",
689 BASE_PACKAGE + ".checks.naming.InterfaceTypeParameterNameCheck");
690 NAME_TO_FULL_MODULE_NAME.put("LambdaParameterNameCheck",
691 BASE_PACKAGE + ".checks.naming.LambdaParameterNameCheck");
692 NAME_TO_FULL_MODULE_NAME.put("LocalFinalVariableNameCheck",
693 BASE_PACKAGE + ".checks.naming.LocalFinalVariableNameCheck");
694 NAME_TO_FULL_MODULE_NAME.put("LocalVariableNameCheck",
695 BASE_PACKAGE + ".checks.naming.LocalVariableNameCheck");
696 NAME_TO_FULL_MODULE_NAME.put("MemberNameCheck",
697 BASE_PACKAGE + ".checks.naming.MemberNameCheck");
698 NAME_TO_FULL_MODULE_NAME.put("MethodNameCheck",
699 BASE_PACKAGE + ".checks.naming.MethodNameCheck");
700 NAME_TO_FULL_MODULE_NAME.put("MethodTypeParameterNameCheck",
701 BASE_PACKAGE + ".checks.naming.MethodTypeParameterNameCheck");
702 NAME_TO_FULL_MODULE_NAME.put("PackageNameCheck",
703 BASE_PACKAGE + ".checks.naming.PackageNameCheck");
704 NAME_TO_FULL_MODULE_NAME.put("ParameterNameCheck",
705 BASE_PACKAGE + ".checks.naming.ParameterNameCheck");
706 NAME_TO_FULL_MODULE_NAME.put("StaticVariableNameCheck",
707 BASE_PACKAGE + ".checks.naming.StaticVariableNameCheck");
708 NAME_TO_FULL_MODULE_NAME.put("TypeNameCheck",
709 BASE_PACKAGE + ".checks.naming.TypeNameCheck");
710 }
711
712
713
714
715 private static void fillChecksFromRegexpPackage() {
716 NAME_TO_FULL_MODULE_NAME.put("RegexpCheck",
717 BASE_PACKAGE + ".checks.regexp.RegexpCheck");
718 NAME_TO_FULL_MODULE_NAME.put("RegexpMultilineCheck",
719 BASE_PACKAGE + ".checks.regexp.RegexpMultilineCheck");
720 NAME_TO_FULL_MODULE_NAME.put("RegexpOnFilenameCheck",
721 BASE_PACKAGE + ".checks.regexp.RegexpOnFilenameCheck");
722 NAME_TO_FULL_MODULE_NAME.put("RegexpSinglelineCheck",
723 BASE_PACKAGE + ".checks.regexp.RegexpSinglelineCheck");
724 NAME_TO_FULL_MODULE_NAME.put("RegexpSinglelineJavaCheck",
725 BASE_PACKAGE + ".checks.regexp.RegexpSinglelineJavaCheck");
726 }
727
728
729
730
731 private static void fillChecksFromSizesPackage() {
732 NAME_TO_FULL_MODULE_NAME.put("AnonInnerLengthCheck",
733 BASE_PACKAGE + ".checks.sizes.AnonInnerLengthCheck");
734 NAME_TO_FULL_MODULE_NAME.put("ExecutableStatementCountCheck",
735 BASE_PACKAGE + ".checks.sizes.ExecutableStatementCountCheck");
736 NAME_TO_FULL_MODULE_NAME.put("FileLengthCheck",
737 BASE_PACKAGE + ".checks.sizes.FileLengthCheck");
738 NAME_TO_FULL_MODULE_NAME.put("LineLengthCheck",
739 BASE_PACKAGE + ".checks.sizes.LineLengthCheck");
740 NAME_TO_FULL_MODULE_NAME.put("MethodCountCheck",
741 BASE_PACKAGE + ".checks.sizes.MethodCountCheck");
742 NAME_TO_FULL_MODULE_NAME.put("MethodLengthCheck",
743 BASE_PACKAGE + ".checks.sizes.MethodLengthCheck");
744 NAME_TO_FULL_MODULE_NAME.put("OuterTypeNumberCheck",
745 BASE_PACKAGE + ".checks.sizes.OuterTypeNumberCheck");
746 NAME_TO_FULL_MODULE_NAME.put("ParameterNumberCheck",
747 BASE_PACKAGE + ".checks.sizes.ParameterNumberCheck");
748 }
749
750
751
752
753 private static void fillChecksFromWhitespacePackage() {
754 NAME_TO_FULL_MODULE_NAME.put("EmptyForInitializerPadCheck",
755 BASE_PACKAGE + ".checks.whitespace.EmptyForInitializerPadCheck");
756 NAME_TO_FULL_MODULE_NAME.put("EmptyForIteratorPadCheck",
757 BASE_PACKAGE + ".checks.whitespace.EmptyForIteratorPadCheck");
758 NAME_TO_FULL_MODULE_NAME.put("EmptyLineSeparatorCheck",
759 BASE_PACKAGE + ".checks.whitespace.EmptyLineSeparatorCheck");
760 NAME_TO_FULL_MODULE_NAME.put("FileTabCharacterCheck",
761 BASE_PACKAGE + ".checks.whitespace.FileTabCharacterCheck");
762 NAME_TO_FULL_MODULE_NAME.put("GenericWhitespaceCheck",
763 BASE_PACKAGE + ".checks.whitespace.GenericWhitespaceCheck");
764 NAME_TO_FULL_MODULE_NAME.put("MethodParamPadCheck",
765 BASE_PACKAGE + ".checks.whitespace.MethodParamPadCheck");
766 NAME_TO_FULL_MODULE_NAME.put("NoLineWrapCheck",
767 BASE_PACKAGE + ".checks.whitespace.NoLineWrapCheck");
768 NAME_TO_FULL_MODULE_NAME.put("NoWhitespaceAfterCheck",
769 BASE_PACKAGE + ".checks.whitespace.NoWhitespaceAfterCheck");
770 NAME_TO_FULL_MODULE_NAME.put("NoWhitespaceBeforeCheck",
771 BASE_PACKAGE + ".checks.whitespace.NoWhitespaceBeforeCheck");
772 NAME_TO_FULL_MODULE_NAME.put("OperatorWrapCheck",
773 BASE_PACKAGE + ".checks.whitespace.OperatorWrapCheck");
774 NAME_TO_FULL_MODULE_NAME.put("ParenPadCheck",
775 BASE_PACKAGE + ".checks.whitespace.ParenPadCheck");
776 NAME_TO_FULL_MODULE_NAME.put("SeparatorWrapCheck",
777 BASE_PACKAGE + ".checks.whitespace.SeparatorWrapCheck");
778 NAME_TO_FULL_MODULE_NAME.put("SingleSpaceSeparatorCheck",
779 BASE_PACKAGE + ".checks.whitespace.SingleSpaceSeparatorCheck");
780 NAME_TO_FULL_MODULE_NAME.put("TypecastParenPadCheck",
781 BASE_PACKAGE + ".checks.whitespace.TypecastParenPadCheck");
782 NAME_TO_FULL_MODULE_NAME.put("WhitespaceAfterCheck",
783 BASE_PACKAGE + ".checks.whitespace.WhitespaceAfterCheck");
784 NAME_TO_FULL_MODULE_NAME.put("WhitespaceAroundCheck",
785 BASE_PACKAGE + ".checks.whitespace.WhitespaceAroundCheck");
786 }
787
788
789
790
791 private static void fillModulesFromChecksPackage() {
792 NAME_TO_FULL_MODULE_NAME.put("ArrayTypeStyleCheck",
793 BASE_PACKAGE + ".checks.ArrayTypeStyleCheck");
794 NAME_TO_FULL_MODULE_NAME.put("AvoidEscapedUnicodeCharactersCheck",
795 BASE_PACKAGE + ".checks.AvoidEscapedUnicodeCharactersCheck");
796 NAME_TO_FULL_MODULE_NAME.put("DescendantTokenCheck",
797 BASE_PACKAGE + ".checks.DescendantTokenCheck");
798 NAME_TO_FULL_MODULE_NAME.put("FinalParametersCheck",
799 BASE_PACKAGE + ".checks.FinalParametersCheck");
800 NAME_TO_FULL_MODULE_NAME.put("NewlineAtEndOfFileCheck",
801 BASE_PACKAGE + ".checks.NewlineAtEndOfFileCheck");
802 NAME_TO_FULL_MODULE_NAME.put("OuterTypeFilenameCheck",
803 BASE_PACKAGE + ".checks.OuterTypeFilenameCheck");
804 NAME_TO_FULL_MODULE_NAME.put("SuppressWarningsHolder",
805 BASE_PACKAGE + ".checks.SuppressWarningsHolder");
806 NAME_TO_FULL_MODULE_NAME.put("TodoCommentCheck",
807 BASE_PACKAGE + ".checks.TodoCommentCheck");
808 NAME_TO_FULL_MODULE_NAME.put("TrailingCommentCheck",
809 BASE_PACKAGE + ".checks.TrailingCommentCheck");
810 NAME_TO_FULL_MODULE_NAME.put("TranslationCheck",
811 BASE_PACKAGE + ".checks.TranslationCheck");
812 NAME_TO_FULL_MODULE_NAME.put("UncommentedMainCheck",
813 BASE_PACKAGE + ".checks.UncommentedMainCheck");
814 NAME_TO_FULL_MODULE_NAME.put("UniquePropertiesCheck",
815 BASE_PACKAGE + ".checks.UniquePropertiesCheck");
816 NAME_TO_FULL_MODULE_NAME.put("UpperEllCheck",
817 BASE_PACKAGE + ".checks.UpperEllCheck");
818 }
819
820
821
822
823 private static void fillModulesFromFilefiltersPackage() {
824 NAME_TO_FULL_MODULE_NAME.put("BeforeExecutionExclusionFileFilter",
825 BASE_PACKAGE + ".filefilters.BeforeExecutionExclusionFileFilter");
826 }
827
828
829
830
831 private static void fillModulesFromFiltersPackage() {
832 NAME_TO_FULL_MODULE_NAME.put("SeverityMatchFilter",
833 BASE_PACKAGE + ".filters.SeverityMatchFilter");
834 NAME_TO_FULL_MODULE_NAME.put("SuppressWithPlainTextCommentFilter",
835 BASE_PACKAGE + ".filters.SuppressWithPlainTextCommentFilter");
836 NAME_TO_FULL_MODULE_NAME.put("SuppressionCommentFilter",
837 BASE_PACKAGE + ".filters.SuppressionCommentFilter");
838 NAME_TO_FULL_MODULE_NAME.put("SuppressionFilter",
839 BASE_PACKAGE + ".filters.SuppressionFilter");
840 NAME_TO_FULL_MODULE_NAME.put("SuppressionXpathFilter",
841 BASE_PACKAGE + ".filters.SuppressionXpathFilter");
842 NAME_TO_FULL_MODULE_NAME.put("SuppressionXpathSingleFilter",
843 BASE_PACKAGE + ".filters.SuppressionXpathSingleFilter");
844 NAME_TO_FULL_MODULE_NAME.put("SuppressWarningsFilter",
845 BASE_PACKAGE + ".filters.SuppressWarningsFilter");
846 NAME_TO_FULL_MODULE_NAME.put("SuppressWithNearbyCommentFilter",
847 BASE_PACKAGE + ".filters.SuppressWithNearbyCommentFilter");
848 }
849
850
851
852
853 private static void fillModulesFromCheckstylePackage() {
854 NAME_TO_FULL_MODULE_NAME.put("Checker", BASE_PACKAGE + ".Checker");
855 NAME_TO_FULL_MODULE_NAME.put("TreeWalker", BASE_PACKAGE + ".TreeWalker");
856 }
857
858 }