com.puppycrawl.tools.checkstyle.PackageObjectFactory Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of checkstyle Show documentation
Show all versions of checkstyle Show documentation
Checkstyle is a development tool to help programmers write Java code
that adheres to a coding standard
////////////////////////////////////////////////////////////////////////////////
// checkstyle: Checks Java source code for adherence to a set of rules.
// Copyright (C) 2001-2019 the original author or authors.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
////////////////////////////////////////////////////////////////////////////////
package com.puppycrawl.tools.checkstyle;
import java.io.IOException;
import java.lang.reflect.Constructor;
import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import com.puppycrawl.tools.checkstyle.api.CheckstyleException;
import com.puppycrawl.tools.checkstyle.api.LocalizedMessage;
import com.puppycrawl.tools.checkstyle.utils.ModuleReflectionUtil;
/**
* A factory for creating objects from package names and names.
* Consider the below example for better understanding.
*
* - module name - name of java class that represents module;
* - module full name - fully qualifies name of java class that represents module;
* - check module short name - name of Check without 'Check' suffix;
* - check module name - name of java class that represents Check (with 'Check' suffix);
* -
* check module full name - fully qualifies name of java class
* that represents Check (with 'Check' suffix).
*
*
*/
public class PackageObjectFactory implements ModuleFactory {
/**
* Enum class to define loading options.
*/
public enum ModuleLoadOption {
/**
* Searching from registered checkstyle modules and from packages given in constructor.
**/
SEARCH_REGISTERED_PACKAGES,
/**
* As SEARCH_REGISTERED_PACKAGES and also try to load class from all of packages given in
* constructor.
* Required for eclipse-cs plugin.
**/
TRY_IN_ALL_REGISTERED_PACKAGES,
}
/** Base package of checkstyle modules checks. */
public static final String BASE_PACKAGE = "com.puppycrawl.tools.checkstyle";
/** Exception message when it is unable to create a class instance. */
public static final String UNABLE_TO_INSTANTIATE_EXCEPTION_MESSAGE =
"PackageObjectFactory.unableToInstantiateExceptionMessage";
/** Exception message when there is ambiguous module name in config file. */
public static final String AMBIGUOUS_MODULE_NAME_EXCEPTION_MESSAGE =
"PackageObjectFactory.ambiguousModuleNameExceptionMessage";
/** Suffix of checks. */
public static final String CHECK_SUFFIX = "Check";
/** Character separate package names in qualified name of java class. */
public static final String PACKAGE_SEPARATOR = ".";
/** Exception message when null class loader is given. */
public static final String NULL_LOADER_MESSAGE = "moduleClassLoader must not be null";
/** Exception message when null package name is given. */
public static final String NULL_PACKAGE_MESSAGE = "package name must not be null";
/** Separator to use in strings. */
public static final String STRING_SEPARATOR = ", ";
/** Map of Checkstyle module names to their fully qualified names. */
private static final Map NAME_TO_FULL_MODULE_NAME = new HashMap<>();
/** A list of package names to prepend to class names. */
private final Set packages;
/** The class loader used to load Checkstyle core and custom modules. */
private final ClassLoader moduleClassLoader;
/** Map of third party Checkstyle module names to the set of their fully qualified names. */
private Map> thirdPartyNameToFullModuleNames;
/** Module load option which defines class search type. */
private ModuleLoadOption moduleLoadOption;
static {
fillShortToFullModuleNamesMap();
}
/**
* Creates a new {@code PackageObjectFactory} instance.
* @param packageNames the list of package names to use
* @param moduleClassLoader class loader used to load Checkstyle
* core and custom modules
*/
public PackageObjectFactory(Set packageNames, ClassLoader moduleClassLoader) {
this(packageNames, moduleClassLoader, ModuleLoadOption.SEARCH_REGISTERED_PACKAGES);
}
/**
* Creates a new {@code PackageObjectFactory} instance.
* @param packageNames the list of package names to use
* @param moduleClassLoader class loader used to load Checkstyle
* core and custom modules
* @param moduleLoadOption loading option
*/
public PackageObjectFactory(Set packageNames, ClassLoader moduleClassLoader,
ModuleLoadOption moduleLoadOption) {
if (moduleClassLoader == null) {
throw new IllegalArgumentException(NULL_LOADER_MESSAGE);
}
if (packageNames.contains(null)) {
throw new IllegalArgumentException(NULL_PACKAGE_MESSAGE);
}
//create a copy of the given set, but retain ordering
packages = new LinkedHashSet<>(packageNames);
this.moduleClassLoader = moduleClassLoader;
this.moduleLoadOption = moduleLoadOption;
}
/**
* Creates a new {@code PackageObjectFactory} instance.
* @param packageName The package name to use
* @param moduleClassLoader class loader used to load Checkstyle
* core and custom modules
*/
public PackageObjectFactory(String packageName, ClassLoader moduleClassLoader) {
if (moduleClassLoader == null) {
throw new IllegalArgumentException(NULL_LOADER_MESSAGE);
}
if (packageName == null) {
throw new IllegalArgumentException(NULL_PACKAGE_MESSAGE);
}
packages = Collections.singleton(packageName);
this.moduleClassLoader = moduleClassLoader;
}
/**
* Creates a new instance of a class from a given name, or that name
* concatenated with "Check". If the name is
* a class name, creates an instance of the named class. Otherwise, creates
* an instance of a class name obtained by concatenating the given name
* to a package name from a given list of package names.
* @param name the name of a class.
* @return the {@code Object} created by loader.
* @throws CheckstyleException if an error occurs.
*/
@Override
public Object createModule(String name) throws CheckstyleException {
Object instance = null;
// if the name is a simple class name, try to find it in maps at first
if (!name.contains(PACKAGE_SEPARATOR)) {
instance = createFromStandardCheckSet(name);
// find the name in third party map
if (instance == null) {
if (thirdPartyNameToFullModuleNames == null) {
thirdPartyNameToFullModuleNames =
generateThirdPartyNameToFullModuleName(moduleClassLoader);
}
instance = createObjectFromMap(name, thirdPartyNameToFullModuleNames);
}
}
if (instance == null) {
instance = createObject(name);
}
if (instance == null
&& moduleLoadOption == ModuleLoadOption.TRY_IN_ALL_REGISTERED_PACKAGES) {
instance = createModuleByTryInEachPackage(name);
}
if (instance == null) {
String attemptedNames = null;
if (!name.contains(PACKAGE_SEPARATOR)) {
final String nameCheck = name + CHECK_SUFFIX;
attemptedNames = joinPackageNamesWithClassName(name, packages)
+ STRING_SEPARATOR + nameCheck + STRING_SEPARATOR
+ joinPackageNamesWithClassName(nameCheck, packages);
}
final LocalizedMessage exceptionMessage = new LocalizedMessage(1,
Definitions.CHECKSTYLE_BUNDLE, UNABLE_TO_INSTANTIATE_EXCEPTION_MESSAGE,
new String[] {name, attemptedNames}, null, getClass(), null);
throw new CheckstyleException(exceptionMessage.getMessage());
}
return instance;
}
/**
* Create object from one of Checkstyle module names.
* @param name name of module.
* @return instance of module.
* @throws CheckstyleException if the class fails to instantiate or there are ambiguous classes.
*/
private Object createFromStandardCheckSet(String name) throws CheckstyleException {
final String fullModuleName = NAME_TO_FULL_MODULE_NAME.get(name);
Object instance = null;
if (fullModuleName == null) {
final String fullCheckModuleName =
NAME_TO_FULL_MODULE_NAME.get(name + CHECK_SUFFIX);
if (fullCheckModuleName != null) {
instance = createObject(fullCheckModuleName);
}
}
else {
instance = createObject(fullModuleName);
}
return instance;
}
/**
* Create object with the help of the supplied map.
* @param name name of module.
* @param map the supplied map.
* @return instance of module if it is found in modules map and no ambiguous classes exist.
* @throws CheckstyleException if the class fails to instantiate or there are ambiguous classes.
*/
private Object createObjectFromMap(String name, Map> map)
throws CheckstyleException {
final Set fullModuleNames = map.get(name);
Object instance = null;
if (fullModuleNames == null) {
final Set fullCheckModuleNames = map.get(name + CHECK_SUFFIX);
if (fullCheckModuleNames != null) {
instance = createObjectFromFullModuleNames(name, fullCheckModuleNames);
}
}
else {
instance = createObjectFromFullModuleNames(name, fullModuleNames);
}
return instance;
}
/**
* Create Object from optional full module names.
* In most case, there should be only one element in {@code fullModuleName}, otherwise
* an exception would be thrown.
* @param name name of module
* @param fullModuleNames the supplied full module names set
* @return instance of module if there is only one element in {@code fullModuleName}
* @throws CheckstyleException if the class fails to instantiate or there are more than one
* element in {@code fullModuleName}
*/
private Object createObjectFromFullModuleNames(String name, Set fullModuleNames)
throws CheckstyleException {
final Object returnValue;
if (fullModuleNames.size() == 1) {
returnValue = createObject(fullModuleNames.iterator().next());
}
else {
final String optionalNames = fullModuleNames.stream()
.sorted()
.collect(Collectors.joining(STRING_SEPARATOR));
final LocalizedMessage exceptionMessage = new LocalizedMessage(1,
Definitions.CHECKSTYLE_BUNDLE, AMBIGUOUS_MODULE_NAME_EXCEPTION_MESSAGE,
new String[] {name, optionalNames}, null, getClass(), null);
throw new CheckstyleException(exceptionMessage.getMessage());
}
return returnValue;
}
/**
* Generate the map of third party Checkstyle module names to the set of their fully qualified
* names.
* @param loader the class loader used to load Checkstyle package names
* @return the map of third party Checkstyle module names to the set of their fully qualified
* names
*/
private Map> generateThirdPartyNameToFullModuleName(ClassLoader loader) {
Map> returnValue;
try {
returnValue = ModuleReflectionUtil.getCheckstyleModules(packages, loader).stream()
.collect(Collectors.groupingBy(Class::getSimpleName,
Collectors.mapping(Class::getCanonicalName, Collectors.toSet())));
}
catch (IOException ignore) {
returnValue = Collections.emptyMap();
}
return returnValue;
}
/**
* Returns simple check name from full modules names map.
* @param fullName name of the class for joining.
* @return simple check name.
*/
public static String getShortFromFullModuleNames(String fullName) {
return NAME_TO_FULL_MODULE_NAME
.entrySet()
.stream()
.filter(entry -> entry.getValue().equals(fullName))
.map(Entry::getKey)
.findFirst()
.orElse(fullName);
}
/**
* Creates a string by joining package names with a class name.
* @param className name of the class for joining.
* @param packages packages names.
* @return a string which is obtained by joining package names with a class name.
*/
private static String joinPackageNamesWithClassName(String className, Set packages) {
return packages.stream().collect(
Collectors.joining(PACKAGE_SEPARATOR + className + STRING_SEPARATOR, "",
PACKAGE_SEPARATOR + className));
}
/**
* Creates a new instance of a named class.
* @param className the name of the class to instantiate.
* @return the {@code Object} created by loader or null.
* @throws CheckstyleException if the class fails to instantiate.
*/
private Object createObject(String className) throws CheckstyleException {
Class> clazz = null;
try {
clazz = Class.forName(className, true, moduleClassLoader);
}
catch (final ReflectiveOperationException | NoClassDefFoundError ignored) {
// ignore the exception
}
Object instance = null;
if (clazz != null) {
try {
final Constructor> declaredConstructor = clazz.getDeclaredConstructor();
declaredConstructor.setAccessible(true);
instance = declaredConstructor.newInstance();
}
catch (final ReflectiveOperationException ex) {
throw new CheckstyleException("Unable to instantiate " + className, ex);
}
}
return instance;
}
/**
* Searching to class with given name (or name concatenated with "Check") in existing
* packages. Returns instance if class found or, otherwise, null.
* @param name the name of a class.
* @return the {@code Object} created by loader.
* @throws CheckstyleException if an error occurs.
*/
private Object createModuleByTryInEachPackage(String name) throws CheckstyleException {
final List possibleNames = packages.stream()
.map(packageName -> packageName + PACKAGE_SEPARATOR + name)
.flatMap(className -> Stream.of(className, className + CHECK_SUFFIX))
.collect(Collectors.toList());
Object instance = null;
for (String possibleName : possibleNames) {
instance = createObject(possibleName);
if (instance != null) {
break;
}
}
return instance;
}
/**
* Fill short-to-full module names map.
*/
private static void fillShortToFullModuleNamesMap() {
fillChecksFromAnnotationPackage();
fillChecksFromBlocksPackage();
fillChecksFromCodingPackage();
fillChecksFromDesignPackage();
fillChecksFromHeaderPackage();
fillChecksFromImportsPackage();
fillChecksFromIndentationPackage();
fillChecksFromJavadocPackage();
fillChecksFromMetricsPackage();
fillChecksFromModifierPackage();
fillChecksFromNamingPackage();
fillChecksFromRegexpPackage();
fillChecksFromSizesPackage();
fillChecksFromWhitespacePackage();
fillModulesFromChecksPackage();
fillModulesFromFilefiltersPackage();
fillModulesFromFiltersPackage();
fillModulesFromCheckstylePackage();
}
/**
* Fill short-to-full module names map with Checks from annotation package.
*/
private static void fillChecksFromAnnotationPackage() {
NAME_TO_FULL_MODULE_NAME.put("AnnotationLocationCheck",
BASE_PACKAGE + ".checks.annotation.AnnotationLocationCheck");
NAME_TO_FULL_MODULE_NAME.put("AnnotationOnSameLineCheck",
BASE_PACKAGE + ".checks.annotation.AnnotationOnSameLineCheck");
NAME_TO_FULL_MODULE_NAME.put("AnnotationUseStyleCheck",
BASE_PACKAGE + ".checks.annotation.AnnotationUseStyleCheck");
NAME_TO_FULL_MODULE_NAME.put("MissingDeprecatedCheck",
BASE_PACKAGE + ".checks.annotation.MissingDeprecatedCheck");
NAME_TO_FULL_MODULE_NAME.put("MissingOverrideCheck",
BASE_PACKAGE + ".checks.annotation.MissingOverrideCheck");
NAME_TO_FULL_MODULE_NAME.put("PackageAnnotationCheck",
BASE_PACKAGE + ".checks.annotation.PackageAnnotationCheck");
NAME_TO_FULL_MODULE_NAME.put("SuppressWarningsCheck",
BASE_PACKAGE + ".checks.annotation.SuppressWarningsCheck");
}
/**
* Fill short-to-full module names map with Checks from blocks package.
*/
private static void fillChecksFromBlocksPackage() {
NAME_TO_FULL_MODULE_NAME.put("AvoidNestedBlocksCheck",
BASE_PACKAGE + ".checks.blocks.AvoidNestedBlocksCheck");
NAME_TO_FULL_MODULE_NAME.put("EmptyBlockCheck",
BASE_PACKAGE + ".checks.blocks.EmptyBlockCheck");
NAME_TO_FULL_MODULE_NAME.put("EmptyCatchBlockCheck",
BASE_PACKAGE + ".checks.blocks.EmptyCatchBlockCheck");
NAME_TO_FULL_MODULE_NAME.put("LeftCurlyCheck",
BASE_PACKAGE + ".checks.blocks.LeftCurlyCheck");
NAME_TO_FULL_MODULE_NAME.put("NeedBracesCheck",
BASE_PACKAGE + ".checks.blocks.NeedBracesCheck");
NAME_TO_FULL_MODULE_NAME.put("RightCurlyCheck",
BASE_PACKAGE + ".checks.blocks.RightCurlyCheck");
}
/**
* Fill short-to-full module names map with Checks from coding package.
*/
// -@cs[ExecutableStatementCount] splitting this method is not reasonable.
private static void fillChecksFromCodingPackage() {
NAME_TO_FULL_MODULE_NAME.put("ArrayTrailingCommaCheck",
BASE_PACKAGE + ".checks.coding.ArrayTrailingCommaCheck");
NAME_TO_FULL_MODULE_NAME.put("AvoidInlineConditionalsCheck",
BASE_PACKAGE + ".checks.coding.AvoidInlineConditionalsCheck");
NAME_TO_FULL_MODULE_NAME.put("CovariantEqualsCheck",
BASE_PACKAGE + ".checks.coding.CovariantEqualsCheck");
NAME_TO_FULL_MODULE_NAME.put("DeclarationOrderCheck",
BASE_PACKAGE + ".checks.coding.DeclarationOrderCheck");
NAME_TO_FULL_MODULE_NAME.put("DefaultComesLastCheck",
BASE_PACKAGE + ".checks.coding.DefaultComesLastCheck");
NAME_TO_FULL_MODULE_NAME.put("EmptyStatementCheck",
BASE_PACKAGE + ".checks.coding.EmptyStatementCheck");
NAME_TO_FULL_MODULE_NAME.put("EqualsAvoidNullCheck",
BASE_PACKAGE + ".checks.coding.EqualsAvoidNullCheck");
NAME_TO_FULL_MODULE_NAME.put("EqualsHashCodeCheck",
BASE_PACKAGE + ".checks.coding.EqualsHashCodeCheck");
NAME_TO_FULL_MODULE_NAME.put("ExplicitInitializationCheck",
BASE_PACKAGE + ".checks.coding.ExplicitInitializationCheck");
NAME_TO_FULL_MODULE_NAME.put("FallThroughCheck",
BASE_PACKAGE + ".checks.coding.FallThroughCheck");
NAME_TO_FULL_MODULE_NAME.put("FinalLocalVariableCheck",
BASE_PACKAGE + ".checks.coding.FinalLocalVariableCheck");
NAME_TO_FULL_MODULE_NAME.put("HiddenFieldCheck",
BASE_PACKAGE + ".checks.coding.HiddenFieldCheck");
NAME_TO_FULL_MODULE_NAME.put("IllegalCatchCheck",
BASE_PACKAGE + ".checks.coding.IllegalCatchCheck");
NAME_TO_FULL_MODULE_NAME.put("IllegalInstantiationCheck",
BASE_PACKAGE + ".checks.coding.IllegalInstantiationCheck");
NAME_TO_FULL_MODULE_NAME.put("IllegalThrowsCheck",
BASE_PACKAGE + ".checks.coding.IllegalThrowsCheck");
NAME_TO_FULL_MODULE_NAME.put("IllegalTokenCheck",
BASE_PACKAGE + ".checks.coding.IllegalTokenCheck");
NAME_TO_FULL_MODULE_NAME.put("IllegalTokenTextCheck",
BASE_PACKAGE + ".checks.coding.IllegalTokenTextCheck");
NAME_TO_FULL_MODULE_NAME.put("IllegalTypeCheck",
BASE_PACKAGE + ".checks.coding.IllegalTypeCheck");
NAME_TO_FULL_MODULE_NAME.put("InnerAssignmentCheck",
BASE_PACKAGE + ".checks.coding.InnerAssignmentCheck");
NAME_TO_FULL_MODULE_NAME.put("MagicNumberCheck",
BASE_PACKAGE + ".checks.coding.MagicNumberCheck");
NAME_TO_FULL_MODULE_NAME.put("MissingCtorCheck",
BASE_PACKAGE + ".checks.coding.MissingCtorCheck");
NAME_TO_FULL_MODULE_NAME.put("MissingSwitchDefaultCheck",
BASE_PACKAGE + ".checks.coding.MissingSwitchDefaultCheck");
NAME_TO_FULL_MODULE_NAME.put("ModifiedControlVariableCheck",
BASE_PACKAGE + ".checks.coding.ModifiedControlVariableCheck");
NAME_TO_FULL_MODULE_NAME.put("MultipleStringLiteralsCheck",
BASE_PACKAGE + ".checks.coding.MultipleStringLiteralsCheck");
NAME_TO_FULL_MODULE_NAME.put("MultipleVariableDeclarationsCheck",
BASE_PACKAGE + ".checks.coding.MultipleVariableDeclarationsCheck");
NAME_TO_FULL_MODULE_NAME.put("NestedForDepthCheck",
BASE_PACKAGE + ".checks.coding.NestedForDepthCheck");
NAME_TO_FULL_MODULE_NAME.put("NestedIfDepthCheck",
BASE_PACKAGE + ".checks.coding.NestedIfDepthCheck");
NAME_TO_FULL_MODULE_NAME.put("NestedTryDepthCheck",
BASE_PACKAGE + ".checks.coding.NestedTryDepthCheck");
NAME_TO_FULL_MODULE_NAME.put("NoCloneCheck",
BASE_PACKAGE + ".checks.coding.NoCloneCheck");
NAME_TO_FULL_MODULE_NAME.put("NoFinalizerCheck",
BASE_PACKAGE + ".checks.coding.NoFinalizerCheck");
NAME_TO_FULL_MODULE_NAME.put("OneStatementPerLineCheck",
BASE_PACKAGE + ".checks.coding.OneStatementPerLineCheck");
NAME_TO_FULL_MODULE_NAME.put("OverloadMethodsDeclarationOrderCheck",
BASE_PACKAGE + ".checks.coding.OverloadMethodsDeclarationOrderCheck");
NAME_TO_FULL_MODULE_NAME.put("PackageDeclarationCheck",
BASE_PACKAGE + ".checks.coding.PackageDeclarationCheck");
NAME_TO_FULL_MODULE_NAME.put("ParameterAssignmentCheck",
BASE_PACKAGE + ".checks.coding.ParameterAssignmentCheck");
NAME_TO_FULL_MODULE_NAME.put("RequireThisCheck",
BASE_PACKAGE + ".checks.coding.RequireThisCheck");
NAME_TO_FULL_MODULE_NAME.put("ReturnCountCheck",
BASE_PACKAGE + ".checks.coding.ReturnCountCheck");
NAME_TO_FULL_MODULE_NAME.put("SimplifyBooleanExpressionCheck",
BASE_PACKAGE + ".checks.coding.SimplifyBooleanExpressionCheck");
NAME_TO_FULL_MODULE_NAME.put("SimplifyBooleanReturnCheck",
BASE_PACKAGE + ".checks.coding.SimplifyBooleanReturnCheck");
NAME_TO_FULL_MODULE_NAME.put("StringLiteralEqualityCheck",
BASE_PACKAGE + ".checks.coding.StringLiteralEqualityCheck");
NAME_TO_FULL_MODULE_NAME.put("SuperCloneCheck",
BASE_PACKAGE + ".checks.coding.SuperCloneCheck");
NAME_TO_FULL_MODULE_NAME.put("SuperFinalizeCheck",
BASE_PACKAGE + ".checks.coding.SuperFinalizeCheck");
NAME_TO_FULL_MODULE_NAME.put("UnnecessaryParenthesesCheck",
BASE_PACKAGE + ".checks.coding.UnnecessaryParenthesesCheck");
NAME_TO_FULL_MODULE_NAME.put("UnnecessarySemicolonAfterTypeMemberDeclarationCheck",
BASE_PACKAGE
+ ".checks.coding.UnnecessarySemicolonAfterTypeMemberDeclarationCheck");
NAME_TO_FULL_MODULE_NAME.put("UnnecessarySemicolonInEnumerationCheck",
BASE_PACKAGE + ".checks.coding.UnnecessarySemicolonInEnumerationCheck");
NAME_TO_FULL_MODULE_NAME.put("UnnecessarySemicolonInTryWithResourcesCheck",
BASE_PACKAGE + ".checks.coding.UnnecessarySemicolonInTryWithResourcesCheck");
NAME_TO_FULL_MODULE_NAME.put("VariableDeclarationUsageDistanceCheck",
BASE_PACKAGE + ".checks.coding.VariableDeclarationUsageDistanceCheck");
}
/**
* Fill short-to-full module names map with Checks from design package.
*/
private static void fillChecksFromDesignPackage() {
NAME_TO_FULL_MODULE_NAME.put("DesignForExtensionCheck",
BASE_PACKAGE + ".checks.design.DesignForExtensionCheck");
NAME_TO_FULL_MODULE_NAME.put("FinalClassCheck",
BASE_PACKAGE + ".checks.design.FinalClassCheck");
NAME_TO_FULL_MODULE_NAME.put("HideUtilityClassConstructorCheck",
BASE_PACKAGE + ".checks.design.HideUtilityClassConstructorCheck");
NAME_TO_FULL_MODULE_NAME.put("InnerTypeLastCheck",
BASE_PACKAGE + ".checks.design.InnerTypeLastCheck");
NAME_TO_FULL_MODULE_NAME.put("InterfaceIsTypeCheck",
BASE_PACKAGE + ".checks.design.InterfaceIsTypeCheck");
NAME_TO_FULL_MODULE_NAME.put("MutableExceptionCheck",
BASE_PACKAGE + ".checks.design.MutableExceptionCheck");
NAME_TO_FULL_MODULE_NAME.put("OneTopLevelClassCheck",
BASE_PACKAGE + ".checks.design.OneTopLevelClassCheck");
NAME_TO_FULL_MODULE_NAME.put("ThrowsCountCheck",
BASE_PACKAGE + ".checks.design.ThrowsCountCheck");
NAME_TO_FULL_MODULE_NAME.put("VisibilityModifierCheck",
BASE_PACKAGE + ".checks.design.VisibilityModifierCheck");
}
/**
* Fill short-to-full module names map with Checks from header package.
*/
private static void fillChecksFromHeaderPackage() {
NAME_TO_FULL_MODULE_NAME.put("HeaderCheck",
BASE_PACKAGE + ".checks.header.HeaderCheck");
NAME_TO_FULL_MODULE_NAME.put("RegexpHeaderCheck",
BASE_PACKAGE + ".checks.header.RegexpHeaderCheck");
}
/**
* Fill short-to-full module names map with Checks from imports package.
*/
private static void fillChecksFromImportsPackage() {
NAME_TO_FULL_MODULE_NAME.put("AvoidStarImportCheck",
BASE_PACKAGE + ".checks.imports.AvoidStarImportCheck");
NAME_TO_FULL_MODULE_NAME.put("AvoidStaticImportCheck",
BASE_PACKAGE + ".checks.imports.AvoidStaticImportCheck");
NAME_TO_FULL_MODULE_NAME.put("CustomImportOrderCheck",
BASE_PACKAGE + ".checks.imports.CustomImportOrderCheck");
NAME_TO_FULL_MODULE_NAME.put("IllegalImportCheck",
BASE_PACKAGE + ".checks.imports.IllegalImportCheck");
NAME_TO_FULL_MODULE_NAME.put("ImportControlCheck",
BASE_PACKAGE + ".checks.imports.ImportControlCheck");
NAME_TO_FULL_MODULE_NAME.put("ImportOrderCheck",
BASE_PACKAGE + ".checks.imports.ImportOrderCheck");
NAME_TO_FULL_MODULE_NAME.put("RedundantImportCheck",
BASE_PACKAGE + ".checks.imports.RedundantImportCheck");
NAME_TO_FULL_MODULE_NAME.put("UnusedImportsCheck",
BASE_PACKAGE + ".checks.imports.UnusedImportsCheck");
}
/**
* Fill short-to-full module names map with Checks from indentation package.
*/
private static void fillChecksFromIndentationPackage() {
NAME_TO_FULL_MODULE_NAME.put("CommentsIndentationCheck",
BASE_PACKAGE + ".checks.indentation.CommentsIndentationCheck");
NAME_TO_FULL_MODULE_NAME.put("IndentationCheck",
BASE_PACKAGE + ".checks.indentation.IndentationCheck");
}
/**
* Fill short-to-full module names map with Checks from javadoc package.
*/
private static void fillChecksFromJavadocPackage() {
NAME_TO_FULL_MODULE_NAME.put("AtclauseOrderCheck",
BASE_PACKAGE + ".checks.javadoc.AtclauseOrderCheck");
NAME_TO_FULL_MODULE_NAME.put("InvalidJavadocPositionCheck",
BASE_PACKAGE + ".checks.javadoc.InvalidJavadocPositionCheck");
NAME_TO_FULL_MODULE_NAME.put("JavadocBlockTagLocationCheck",
BASE_PACKAGE + ".checks.javadoc.JavadocBlockTagLocationCheck");
NAME_TO_FULL_MODULE_NAME.put("JavadocMethodCheck",
BASE_PACKAGE + ".checks.javadoc.JavadocMethodCheck");
NAME_TO_FULL_MODULE_NAME.put("JavadocPackageCheck",
BASE_PACKAGE + ".checks.javadoc.JavadocPackageCheck");
NAME_TO_FULL_MODULE_NAME.put("JavadocParagraphCheck",
BASE_PACKAGE + ".checks.javadoc.JavadocParagraphCheck");
NAME_TO_FULL_MODULE_NAME.put("JavadocStyleCheck",
BASE_PACKAGE + ".checks.javadoc.JavadocStyleCheck");
NAME_TO_FULL_MODULE_NAME.put("JavadocTagContinuationIndentationCheck",
BASE_PACKAGE + ".checks.javadoc.JavadocTagContinuationIndentationCheck");
NAME_TO_FULL_MODULE_NAME.put("JavadocTypeCheck",
BASE_PACKAGE + ".checks.javadoc.JavadocTypeCheck");
NAME_TO_FULL_MODULE_NAME.put("JavadocVariableCheck",
BASE_PACKAGE + ".checks.javadoc.JavadocVariableCheck");
NAME_TO_FULL_MODULE_NAME.put("MissingJavadocMethodCheck",
BASE_PACKAGE + ".checks.javadoc.MissingJavadocMethodCheck");
NAME_TO_FULL_MODULE_NAME.put("MissingJavadocPackageCheck",
BASE_PACKAGE + ".checks.javadoc.MissingJavadocPackageCheck");
NAME_TO_FULL_MODULE_NAME.put("MissingJavadocTypeCheck",
BASE_PACKAGE + ".checks.javadoc.MissingJavadocTypeCheck");
NAME_TO_FULL_MODULE_NAME.put("NonEmptyAtclauseDescriptionCheck",
BASE_PACKAGE + ".checks.javadoc.NonEmptyAtclauseDescriptionCheck");
NAME_TO_FULL_MODULE_NAME.put("SingleLineJavadocCheck",
BASE_PACKAGE + ".checks.javadoc.SingleLineJavadocCheck");
NAME_TO_FULL_MODULE_NAME.put("SummaryJavadocCheck",
BASE_PACKAGE + ".checks.javadoc.SummaryJavadocCheck");
NAME_TO_FULL_MODULE_NAME.put("WriteTagCheck",
BASE_PACKAGE + ".checks.javadoc.WriteTagCheck");
}
/**
* Fill short-to-full module names map with Checks from metrics package.
*/
private static void fillChecksFromMetricsPackage() {
NAME_TO_FULL_MODULE_NAME.put("BooleanExpressionComplexityCheck",
BASE_PACKAGE + ".checks.metrics.BooleanExpressionComplexityCheck");
NAME_TO_FULL_MODULE_NAME.put("ClassDataAbstractionCouplingCheck",
BASE_PACKAGE + ".checks.metrics.ClassDataAbstractionCouplingCheck");
NAME_TO_FULL_MODULE_NAME.put("ClassFanOutComplexityCheck",
BASE_PACKAGE + ".checks.metrics.ClassFanOutComplexityCheck");
NAME_TO_FULL_MODULE_NAME.put("CyclomaticComplexityCheck",
BASE_PACKAGE + ".checks.metrics.CyclomaticComplexityCheck");
NAME_TO_FULL_MODULE_NAME.put("JavaNCSSCheck",
BASE_PACKAGE + ".checks.metrics.JavaNCSSCheck");
NAME_TO_FULL_MODULE_NAME.put("NPathComplexityCheck",
BASE_PACKAGE + ".checks.metrics.NPathComplexityCheck");
}
/**
* Fill short-to-full module names map with Checks from modifier package.
*/
private static void fillChecksFromModifierPackage() {
NAME_TO_FULL_MODULE_NAME.put("ClassMemberImpliedModifierCheck",
BASE_PACKAGE + ".checks.modifier.ClassMemberImpliedModifierCheck");
NAME_TO_FULL_MODULE_NAME.put("InterfaceMemberImpliedModifierCheck",
BASE_PACKAGE + ".checks.modifier.InterfaceMemberImpliedModifierCheck");
NAME_TO_FULL_MODULE_NAME.put("ModifierOrderCheck",
BASE_PACKAGE + ".checks.modifier.ModifierOrderCheck");
NAME_TO_FULL_MODULE_NAME.put("RedundantModifierCheck",
BASE_PACKAGE + ".checks.modifier.RedundantModifierCheck");
}
/**
* Fill short-to-full module names map with Checks from naming package.
*/
private static void fillChecksFromNamingPackage() {
NAME_TO_FULL_MODULE_NAME.put("AbbreviationAsWordInNameCheck",
BASE_PACKAGE + ".checks.naming.AbbreviationAsWordInNameCheck");
NAME_TO_FULL_MODULE_NAME.put("AbstractClassNameCheck",
BASE_PACKAGE + ".checks.naming.AbstractClassNameCheck");
NAME_TO_FULL_MODULE_NAME.put("CatchParameterNameCheck",
BASE_PACKAGE + ".checks.naming.CatchParameterNameCheck");
NAME_TO_FULL_MODULE_NAME.put("ClassTypeParameterNameCheck",
BASE_PACKAGE + ".checks.naming.ClassTypeParameterNameCheck");
NAME_TO_FULL_MODULE_NAME.put("ConstantNameCheck",
BASE_PACKAGE + ".checks.naming.ConstantNameCheck");
NAME_TO_FULL_MODULE_NAME.put("InterfaceTypeParameterNameCheck",
BASE_PACKAGE + ".checks.naming.InterfaceTypeParameterNameCheck");
NAME_TO_FULL_MODULE_NAME.put("LambdaParameterNameCheck",
BASE_PACKAGE + ".checks.naming.LambdaParameterNameCheck");
NAME_TO_FULL_MODULE_NAME.put("LocalFinalVariableNameCheck",
BASE_PACKAGE + ".checks.naming.LocalFinalVariableNameCheck");
NAME_TO_FULL_MODULE_NAME.put("LocalVariableNameCheck",
BASE_PACKAGE + ".checks.naming.LocalVariableNameCheck");
NAME_TO_FULL_MODULE_NAME.put("MemberNameCheck",
BASE_PACKAGE + ".checks.naming.MemberNameCheck");
NAME_TO_FULL_MODULE_NAME.put("MethodNameCheck",
BASE_PACKAGE + ".checks.naming.MethodNameCheck");
NAME_TO_FULL_MODULE_NAME.put("MethodTypeParameterNameCheck",
BASE_PACKAGE + ".checks.naming.MethodTypeParameterNameCheck");
NAME_TO_FULL_MODULE_NAME.put("PackageNameCheck",
BASE_PACKAGE + ".checks.naming.PackageNameCheck");
NAME_TO_FULL_MODULE_NAME.put("ParameterNameCheck",
BASE_PACKAGE + ".checks.naming.ParameterNameCheck");
NAME_TO_FULL_MODULE_NAME.put("StaticVariableNameCheck",
BASE_PACKAGE + ".checks.naming.StaticVariableNameCheck");
NAME_TO_FULL_MODULE_NAME.put("TypeNameCheck",
BASE_PACKAGE + ".checks.naming.TypeNameCheck");
}
/**
* Fill short-to-full module names map with Checks from regexp package.
*/
private static void fillChecksFromRegexpPackage() {
NAME_TO_FULL_MODULE_NAME.put("RegexpCheck",
BASE_PACKAGE + ".checks.regexp.RegexpCheck");
NAME_TO_FULL_MODULE_NAME.put("RegexpMultilineCheck",
BASE_PACKAGE + ".checks.regexp.RegexpMultilineCheck");
NAME_TO_FULL_MODULE_NAME.put("RegexpOnFilenameCheck",
BASE_PACKAGE + ".checks.regexp.RegexpOnFilenameCheck");
NAME_TO_FULL_MODULE_NAME.put("RegexpSinglelineCheck",
BASE_PACKAGE + ".checks.regexp.RegexpSinglelineCheck");
NAME_TO_FULL_MODULE_NAME.put("RegexpSinglelineJavaCheck",
BASE_PACKAGE + ".checks.regexp.RegexpSinglelineJavaCheck");
}
/**
* Fill short-to-full module names map with Checks from sizes package.
*/
private static void fillChecksFromSizesPackage() {
NAME_TO_FULL_MODULE_NAME.put("AnonInnerLengthCheck",
BASE_PACKAGE + ".checks.sizes.AnonInnerLengthCheck");
NAME_TO_FULL_MODULE_NAME.put("ExecutableStatementCountCheck",
BASE_PACKAGE + ".checks.sizes.ExecutableStatementCountCheck");
NAME_TO_FULL_MODULE_NAME.put("FileLengthCheck",
BASE_PACKAGE + ".checks.sizes.FileLengthCheck");
NAME_TO_FULL_MODULE_NAME.put("LineLengthCheck",
BASE_PACKAGE + ".checks.sizes.LineLengthCheck");
NAME_TO_FULL_MODULE_NAME.put("MethodCountCheck",
BASE_PACKAGE + ".checks.sizes.MethodCountCheck");
NAME_TO_FULL_MODULE_NAME.put("MethodLengthCheck",
BASE_PACKAGE + ".checks.sizes.MethodLengthCheck");
NAME_TO_FULL_MODULE_NAME.put("OuterTypeNumberCheck",
BASE_PACKAGE + ".checks.sizes.OuterTypeNumberCheck");
NAME_TO_FULL_MODULE_NAME.put("ParameterNumberCheck",
BASE_PACKAGE + ".checks.sizes.ParameterNumberCheck");
}
/**
* Fill short-to-full module names map with Checks from whitespace package.
*/
private static void fillChecksFromWhitespacePackage() {
NAME_TO_FULL_MODULE_NAME.put("EmptyForInitializerPadCheck",
BASE_PACKAGE + ".checks.whitespace.EmptyForInitializerPadCheck");
NAME_TO_FULL_MODULE_NAME.put("EmptyForIteratorPadCheck",
BASE_PACKAGE + ".checks.whitespace.EmptyForIteratorPadCheck");
NAME_TO_FULL_MODULE_NAME.put("EmptyLineSeparatorCheck",
BASE_PACKAGE + ".checks.whitespace.EmptyLineSeparatorCheck");
NAME_TO_FULL_MODULE_NAME.put("FileTabCharacterCheck",
BASE_PACKAGE + ".checks.whitespace.FileTabCharacterCheck");
NAME_TO_FULL_MODULE_NAME.put("GenericWhitespaceCheck",
BASE_PACKAGE + ".checks.whitespace.GenericWhitespaceCheck");
NAME_TO_FULL_MODULE_NAME.put("MethodParamPadCheck",
BASE_PACKAGE + ".checks.whitespace.MethodParamPadCheck");
NAME_TO_FULL_MODULE_NAME.put("NoLineWrapCheck",
BASE_PACKAGE + ".checks.whitespace.NoLineWrapCheck");
NAME_TO_FULL_MODULE_NAME.put("NoWhitespaceAfterCheck",
BASE_PACKAGE + ".checks.whitespace.NoWhitespaceAfterCheck");
NAME_TO_FULL_MODULE_NAME.put("NoWhitespaceBeforeCheck",
BASE_PACKAGE + ".checks.whitespace.NoWhitespaceBeforeCheck");
NAME_TO_FULL_MODULE_NAME.put("OperatorWrapCheck",
BASE_PACKAGE + ".checks.whitespace.OperatorWrapCheck");
NAME_TO_FULL_MODULE_NAME.put("ParenPadCheck",
BASE_PACKAGE + ".checks.whitespace.ParenPadCheck");
NAME_TO_FULL_MODULE_NAME.put("SeparatorWrapCheck",
BASE_PACKAGE + ".checks.whitespace.SeparatorWrapCheck");
NAME_TO_FULL_MODULE_NAME.put("SingleSpaceSeparatorCheck",
BASE_PACKAGE + ".checks.whitespace.SingleSpaceSeparatorCheck");
NAME_TO_FULL_MODULE_NAME.put("TypecastParenPadCheck",
BASE_PACKAGE + ".checks.whitespace.TypecastParenPadCheck");
NAME_TO_FULL_MODULE_NAME.put("WhitespaceAfterCheck",
BASE_PACKAGE + ".checks.whitespace.WhitespaceAfterCheck");
NAME_TO_FULL_MODULE_NAME.put("WhitespaceAroundCheck",
BASE_PACKAGE + ".checks.whitespace.WhitespaceAroundCheck");
}
/**
* Fill short-to-full module names map with modules from checks package.
*/
private static void fillModulesFromChecksPackage() {
NAME_TO_FULL_MODULE_NAME.put("ArrayTypeStyleCheck",
BASE_PACKAGE + ".checks.ArrayTypeStyleCheck");
NAME_TO_FULL_MODULE_NAME.put("AvoidEscapedUnicodeCharactersCheck",
BASE_PACKAGE + ".checks.AvoidEscapedUnicodeCharactersCheck");
NAME_TO_FULL_MODULE_NAME.put("DescendantTokenCheck",
BASE_PACKAGE + ".checks.DescendantTokenCheck");
NAME_TO_FULL_MODULE_NAME.put("FinalParametersCheck",
BASE_PACKAGE + ".checks.FinalParametersCheck");
NAME_TO_FULL_MODULE_NAME.put("NewlineAtEndOfFileCheck",
BASE_PACKAGE + ".checks.NewlineAtEndOfFileCheck");
NAME_TO_FULL_MODULE_NAME.put("OuterTypeFilenameCheck",
BASE_PACKAGE + ".checks.OuterTypeFilenameCheck");
NAME_TO_FULL_MODULE_NAME.put("OrderedPropertiesCheck",
BASE_PACKAGE + ".checks.OrderedPropertiesCheck");
NAME_TO_FULL_MODULE_NAME.put("SuppressWarningsHolder",
BASE_PACKAGE + ".checks.SuppressWarningsHolder");
NAME_TO_FULL_MODULE_NAME.put("TodoCommentCheck",
BASE_PACKAGE + ".checks.TodoCommentCheck");
NAME_TO_FULL_MODULE_NAME.put("TrailingCommentCheck",
BASE_PACKAGE + ".checks.TrailingCommentCheck");
NAME_TO_FULL_MODULE_NAME.put("TranslationCheck",
BASE_PACKAGE + ".checks.TranslationCheck");
NAME_TO_FULL_MODULE_NAME.put("UncommentedMainCheck",
BASE_PACKAGE + ".checks.UncommentedMainCheck");
NAME_TO_FULL_MODULE_NAME.put("UniquePropertiesCheck",
BASE_PACKAGE + ".checks.UniquePropertiesCheck");
NAME_TO_FULL_MODULE_NAME.put("UpperEllCheck",
BASE_PACKAGE + ".checks.UpperEllCheck");
}
/**
* Fill short-to-full module names map with modules from filefilters package.
*/
private static void fillModulesFromFilefiltersPackage() {
NAME_TO_FULL_MODULE_NAME.put("BeforeExecutionExclusionFileFilter",
BASE_PACKAGE + ".filefilters.BeforeExecutionExclusionFileFilter");
}
/**
* Fill short-to-full module names map with modules from filters package.
*/
private static void fillModulesFromFiltersPackage() {
NAME_TO_FULL_MODULE_NAME.put("SeverityMatchFilter",
BASE_PACKAGE + ".filters.SeverityMatchFilter");
NAME_TO_FULL_MODULE_NAME.put("SuppressWithPlainTextCommentFilter",
BASE_PACKAGE + ".filters.SuppressWithPlainTextCommentFilter");
NAME_TO_FULL_MODULE_NAME.put("SuppressionCommentFilter",
BASE_PACKAGE + ".filters.SuppressionCommentFilter");
NAME_TO_FULL_MODULE_NAME.put("SuppressionFilter",
BASE_PACKAGE + ".filters.SuppressionFilter");
NAME_TO_FULL_MODULE_NAME.put("SuppressionSingleFilter",
BASE_PACKAGE + ".filters.SuppressionSingleFilter");
NAME_TO_FULL_MODULE_NAME.put("SuppressionXpathFilter",
BASE_PACKAGE + ".filters.SuppressionXpathFilter");
NAME_TO_FULL_MODULE_NAME.put("SuppressionXpathSingleFilter",
BASE_PACKAGE + ".filters.SuppressionXpathSingleFilter");
NAME_TO_FULL_MODULE_NAME.put("SuppressWarningsFilter",
BASE_PACKAGE + ".filters.SuppressWarningsFilter");
NAME_TO_FULL_MODULE_NAME.put("SuppressWithNearbyCommentFilter",
BASE_PACKAGE + ".filters.SuppressWithNearbyCommentFilter");
}
/**
* Fill short-to-full module names map with modules from checkstyle package.
*/
private static void fillModulesFromCheckstylePackage() {
NAME_TO_FULL_MODULE_NAME.put("Checker", BASE_PACKAGE + ".Checker");
NAME_TO_FULL_MODULE_NAME.put("TreeWalker", BASE_PACKAGE + ".TreeWalker");
}
}