From 6365459caff8a2428940c0056a73e8ae483e847e Mon Sep 17 00:00:00 2001 From: Luolc Date: Thu, 15 Jun 2017 01:04:11 +0800 Subject: [PATCH] Issue #19: Module Component --- config/findbugs-exclude.xml | 7 + config/import-control.xml | 14 + config/pmd.xml | 10 +- config/suppressions.xml | 2 + pom.xml | 51 +- .../regression/data/ModuleExtractInfo.java | 58 + .../regression/data/ModuleInfo.java | 73 + .../regression/module/ModuleCollector.java | 62 + .../regression/module/ModuleUtils.java | 215 ++ .../regression/module/package-info.java | 23 + .../regression/util/GsonProvider.java | 54 + .../regression/util/package-info.java | 23 + src/main/resources/checkstyle_modules.json | 2340 +++++++++++++++++ .../module/ModuleInfoCollectorTest.java | 111 + .../regression/module/ModuleUtilsTest.java | 107 + .../regression/util/GsonProviderTest.java | 31 + 16 files changed, 3165 insertions(+), 16 deletions(-) create mode 100644 src/main/java/com/github/checkstyle/regression/data/ModuleExtractInfo.java create mode 100644 src/main/java/com/github/checkstyle/regression/data/ModuleInfo.java create mode 100644 src/main/java/com/github/checkstyle/regression/module/ModuleCollector.java create mode 100644 src/main/java/com/github/checkstyle/regression/module/ModuleUtils.java create mode 100644 src/main/java/com/github/checkstyle/regression/module/package-info.java create mode 100644 src/main/java/com/github/checkstyle/regression/util/GsonProvider.java create mode 100644 src/main/java/com/github/checkstyle/regression/util/package-info.java create mode 100644 src/main/resources/checkstyle_modules.json create mode 100644 src/test/java/com/github/checkstyle/regression/module/ModuleInfoCollectorTest.java create mode 100644 src/test/java/com/github/checkstyle/regression/module/ModuleUtilsTest.java create mode 100644 src/test/java/com/github/checkstyle/regression/util/GsonProviderTest.java diff --git a/config/findbugs-exclude.xml b/config/findbugs-exclude.xml index 22c62d1..32f5f4f 100644 --- a/config/findbugs-exclude.xml +++ b/config/findbugs-exclude.xml @@ -15,4 +15,11 @@ + + + + + + + diff --git a/config/import-control.xml b/config/import-control.xml index d0cfe45..b1c38fb 100644 --- a/config/import-control.xml +++ b/config/import-control.xml @@ -7,7 +7,21 @@ + + + + + + + + + + + + + + diff --git a/config/pmd.xml b/config/pmd.xml index b7cf909..6ded469 100644 --- a/config/pmd.xml +++ b/config/pmd.xml @@ -136,10 +136,19 @@ + + + + + + + + - diff --git a/config/suppressions.xml b/config/suppressions.xml index e2acb36..98397b9 100644 --- a/config/suppressions.xml +++ b/config/suppressions.xml @@ -10,4 +10,6 @@ + + diff --git a/pom.xml b/pom.xml index 7cd79a5..38a8aa5 100644 --- a/pom.xml +++ b/pom.xml @@ -23,27 +23,25 @@ - junit - junit - 4.12 - test + org.apache.maven + maven-jxr + 2.5 - org.powermock - powermock-api-mockito - 1.6.6 - test + com.google.code.gson + gson + 2.8.1 - org.powermock - powermock-module-junit4 - 1.6.6 - test + org.immutables + value + 2.5.3 + provided - org.apache.maven - maven-jxr - 2.5 + org.immutables + gson + 2.5.3 org.eclipse.jgit @@ -55,6 +53,26 @@ checkstyle ${checkstyle.version} + + + + junit + junit + 4.12 + test + + + org.powermock + powermock-api-mockito + 1.6.6 + test + + + org.powermock + powermock-module-junit4 + 1.6.6 + test + @@ -271,6 +289,9 @@ + **/GsonAdapters*.class + **/Immutable*.class + **/Modifiable*.class diff --git a/src/main/java/com/github/checkstyle/regression/data/ModuleExtractInfo.java b/src/main/java/com/github/checkstyle/regression/data/ModuleExtractInfo.java new file mode 100644 index 0000000..22566cf --- /dev/null +++ b/src/main/java/com/github/checkstyle/regression/data/ModuleExtractInfo.java @@ -0,0 +1,58 @@ +//////////////////////////////////////////////////////////////////////////////// +// checkstyle: Checks Java source code for adherence to a set of rules. +// Copyright (C) 2001-2017 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.github.checkstyle.regression.data; + +import org.immutables.gson.Gson; +import org.immutables.value.Value; + +/** + * Represents the extract information of a checkstyle module. + * @author LuoLiangchen + */ +@Gson.TypeAdapters +@Value.Immutable +public abstract class ModuleExtractInfo { + /** + * The package name of this module. + * @return the package name of this module + */ + public abstract String packageName(); + + /** + * The name of this module. + * @return the name of this module. + */ + public abstract String name(); + + /** + * The parent of this module. + * The value should be either "TreeWalker" or "Checker". + * @return the parent of this module. + */ + public abstract String parent(); + + /** + * The full qualified name of this module. + * @return the full qualified name of this module + */ + public String fullName() { + return packageName() + "." + name(); + } +} diff --git a/src/main/java/com/github/checkstyle/regression/data/ModuleInfo.java b/src/main/java/com/github/checkstyle/regression/data/ModuleInfo.java new file mode 100644 index 0000000..51195c6 --- /dev/null +++ b/src/main/java/com/github/checkstyle/regression/data/ModuleInfo.java @@ -0,0 +1,73 @@ +//////////////////////////////////////////////////////////////////////////////// +// checkstyle: Checks Java source code for adherence to a set of rules. +// Copyright (C) 2001-2017 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.github.checkstyle.regression.data; + +import java.util.List; + +import org.immutables.value.Value; + +/** + * Represents the related information of a checkstyle module. + * Including the extract module information, change of the module class, change + * of the corresponding test and changed of the utility classes that the module + * depends on. + * @author LuoLiangchen + */ +@Value.Immutable +@Value.Modifiable +public abstract class ModuleInfo { + /** + * The basic information of the module. + * @return the basic information of the module + */ + public abstract ModuleExtractInfo moduleExtractInfo(); + + /** + * The properties of the module. + * @return the properties of the module + */ + public abstract List properties(); + + /** + * The name of the module. + * @return the name of the module + */ + public String name() { + return moduleExtractInfo().name(); + } + + /** + * Represents the property and its settings of a module. + */ + @Value.Immutable + public interface Property { + /** + * The name of the property. + * @return the name of the property + */ + String name(); + + /** + * The value of the property. + * @return the value of the property + */ + String value(); + } +} diff --git a/src/main/java/com/github/checkstyle/regression/module/ModuleCollector.java b/src/main/java/com/github/checkstyle/regression/module/ModuleCollector.java new file mode 100644 index 0000000..39417ba --- /dev/null +++ b/src/main/java/com/github/checkstyle/regression/module/ModuleCollector.java @@ -0,0 +1,62 @@ +//////////////////////////////////////////////////////////////////////////////// +// checkstyle: Checks Java source code for adherence to a set of rules. +// Copyright (C) 2001-2017 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.github.checkstyle.regression.module; + +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import com.github.checkstyle.regression.data.GitChange; +import com.github.checkstyle.regression.data.ModifiableModuleInfo; +import com.github.checkstyle.regression.data.ModuleExtractInfo; +import com.github.checkstyle.regression.data.ModuleInfo; + +/** + * Collects all the necessary information for the generation, in module level. + * @author LuoLiangchen + */ +public final class ModuleCollector { + /** Prevents instantiation. */ + private ModuleCollector() { + } + + /** + * Generates the module updates from a list of changes. + * @param changes the changes source + * @return the module updates generated from the given changes + */ + public static List generate(List changes) { + final Map moduleInfos = new LinkedHashMap<>(); + for (GitChange change : changes) { + if (ModuleUtils.isCheckstyleModule(change)) { + final ModuleExtractInfo extractInfo = + ModuleUtils.convertModuleChangeToExtractInfo(change); + final ModifiableModuleInfo moduleInfo = ModifiableModuleInfo.create() + .setModuleExtractInfo(extractInfo); + moduleInfos.put(extractInfo.fullName(), moduleInfo); + } + } + + return moduleInfos.values().stream() + .map(ModifiableModuleInfo::toImmutable) + .collect(Collectors.toList()); + } +} diff --git a/src/main/java/com/github/checkstyle/regression/module/ModuleUtils.java b/src/main/java/com/github/checkstyle/regression/module/ModuleUtils.java new file mode 100644 index 0000000..61231f7 --- /dev/null +++ b/src/main/java/com/github/checkstyle/regression/module/ModuleUtils.java @@ -0,0 +1,215 @@ +//////////////////////////////////////////////////////////////////////////////// +// checkstyle: Checks Java source code for adherence to a set of rules. +// Copyright (C) 2001-2017 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.github.checkstyle.regression.module; + +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.nio.charset.Charset; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.stream.Collectors; + +import com.github.checkstyle.regression.data.GitChange; +import com.github.checkstyle.regression.data.ImmutableModuleExtractInfo; +import com.github.checkstyle.regression.data.ModuleExtractInfo; +import com.github.checkstyle.regression.util.GsonProvider; +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; + +/** + * Contains utility methods related to checkstyle module. + * @author LuoLiangchen + */ +public final class ModuleUtils { + /** The compiled regex pattern of the path of Java source files. */ + private static final Pattern JAVA_SOURCE_PARTTEN = + Pattern.compile("src/(main|test)/java/(.+)\\.java"); + + // /** The postfix of a test of a checkstyle module. */ + // private static final String TEST_POSTFIX = "Test"; + + /** The full qualified name to module info map. */ + private static final Map NAME_TO_MODULE_INFO; + + /** Prevents instantiation. */ + private ModuleUtils() { + } + + static { + NAME_TO_MODULE_INFO = createNameToModuleInfo(); + } + + /** + * Creates the full qualified name to module info map. + * @return the full qualified name to module info map + */ + private static Map createNameToModuleInfo() { + final InputStream stream = + ModuleUtils.class.getClassLoader().getResourceAsStream("checkstyle_modules.json"); + return getNameToModuleInfoFromInputStream(stream); + } + + /** + * Gets the full qualified name to module info map from the give input stream. + * @param stream the give input stream + * @return the full qualified name to module info map + */ + private static Map getNameToModuleInfoFromInputStream( + InputStream stream) { + final List modules; + final Gson gson = GsonProvider.provideGson(); + + try { + final InputStreamReader reader = + new InputStreamReader(stream, Charset.forName("UTF-8")); + + try { + modules = gson.fromJson(reader, new TypeToken>() { + }.getType()); + } + finally { + reader.close(); + } + } + catch (IOException ex) { + throw new IllegalStateException( + "Failed when loaing hardcoded checkstyle module information", ex); + } + + return modules.stream().collect( + Collectors.toMap(ModuleExtractInfo::fullName, ImmutableModuleExtractInfo::copyOf)); + } + + /** + * Checks whether the corresponding file of a change may be considered as + * a checkstyle module. + * @param change change to check + * @return true if the corresponding file of a change may be considered as + * a checkstyle module + */ + public static boolean isCheckstyleModule(GitChange change) { + final boolean returnValue; + if (isJavaMainSource(change)) { + final String fullName = convertJavaSourcePathToFullName(change.getPath()); + returnValue = NAME_TO_MODULE_INFO.containsKey(fullName); + } + else { + returnValue = false; + } + return returnValue; + } + + // /** + // * Checks whether the corresponding file of a change may be considered as + // * a checkstyle utility class. + // * @param change change to check + // * @return true if the corresponding file of a change may be considered as + // * a checkstyle utility class. + // */ + // public static boolean isCheckstyleUtility(GitChange change) { + // final boolean returnValue; + // if (isJavaMainSource(change)) { + // final String fullName = convertJavaSourcePathToFullName(change.getPath()); + // returnValue = !NAME_TO_MODULE_INFO.containsKey(fullName); + // } + // else { + // returnValue = false; + // } + // return returnValue; + // } + + /** + * Checks whether the corresponding file of a change may be considered as + * a Java main source file. + * @param change change to check + * @return true if the corresponding file of a change may be considered as + * a Java main source file. + */ + private static boolean isJavaMainSource(GitChange change) { + final boolean returnValue; + final Matcher matcher = JAVA_SOURCE_PARTTEN.matcher(change.getPath()); + if (matcher.find()) { + returnValue = "main".equals(matcher.group(1)); + } + else { + returnValue = false; + } + return returnValue; + } + + // /** + // * Checks whether the corresponding file of a change may be considered as + // * a test of checkstyle module. + // * @param change change to check + // * @return true if the corresponding file of a change may be considered as + // * a test of checkstyle module + // */ + // public static boolean isCheckstyleModuleTest(GitChange change) { + // final boolean returnValue; + // if (JAVA_SOURCE_PARTTEN.matcher(change.getPath()).find()) { + // final String fullName = convertJavaSourcePathToFullName(change.getPath()); + // if (fullName.endsWith(TEST_POSTFIX)) { + // returnValue = NAME_TO_MODULE_INFO.containsKey( + // fullName.substring(0, fullName.length() - TEST_POSTFIX.length())); + // } + // else { + // returnValue = false; + // } + // } + // else { + // returnValue = false; + // } + // return returnValue; + // } + + /** + * Converts a {@link GitChange} of checkstyle module to a {@link ModuleExtractInfo}. + * @param change the change to convert + * @return the module info converted from the given change + */ + public static ModuleExtractInfo convertModuleChangeToExtractInfo(GitChange change) { + final String fullName = convertJavaSourcePathToFullName(change.getPath()); + return NAME_TO_MODULE_INFO.get(fullName); + } + + // /** + // * Converts a {@link GitChange} of test to the full name of corresponding checkstyle module. + // * @param change the change to convert + // * @return the full name of corresponding checkstyle module + // */ + // public static String convertModuleTestChangeToModuleFullName(GitChange change) { + // final String testName = convertJavaSourcePathToFullName(change.getPath()); + // return testName.substring(0, testName.length() - TEST_POSTFIX.length()); + // } + + /** + * Converts a path of Java source file to its full qualified name. + * @param path the path of Java source file + * @return the corresponding full qualified name + */ + private static String convertJavaSourcePathToFullName(String path) { + return Arrays.stream(JAVA_SOURCE_PARTTEN.matcher(path).replaceAll("$2").split("/")) + .collect(Collectors.joining(".")); + } +} diff --git a/src/main/java/com/github/checkstyle/regression/module/package-info.java b/src/main/java/com/github/checkstyle/regression/module/package-info.java new file mode 100644 index 0000000..7fe73b5 --- /dev/null +++ b/src/main/java/com/github/checkstyle/regression/module/package-info.java @@ -0,0 +1,23 @@ +//////////////////////////////////////////////////////////////////////////////// +// checkstyle: Checks Java source code for adherence to a set of rules. +// Copyright (C) 2001-2017 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 +//////////////////////////////////////////////////////////////////////////////// + +/** + * Contains the specific config generation strategy and utility classes. + */ +package com.github.checkstyle.regression.module; diff --git a/src/main/java/com/github/checkstyle/regression/util/GsonProvider.java b/src/main/java/com/github/checkstyle/regression/util/GsonProvider.java new file mode 100644 index 0000000..3995427 --- /dev/null +++ b/src/main/java/com/github/checkstyle/regression/util/GsonProvider.java @@ -0,0 +1,54 @@ +//////////////////////////////////////////////////////////////////////////////// +// checkstyle: Checks Java source code for adherence to a set of rules. +// Copyright (C) 2001-2017 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.github.checkstyle.regression.util; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.TypeAdapterFactory; +import com.sun.tools.javac.util.ServiceLoader; + +/** + * Provides the {@link Gson} instance. + * @author LuoLiangchen + */ +public final class GsonProvider { + /** The {@link Gson} instance. */ + private static final Gson GSON; + + /** Prevents instantiation. */ + private GsonProvider() { + } + + static { + final GsonBuilder gsonBuilder = new GsonBuilder(); + for (TypeAdapterFactory factory : ServiceLoader.load(TypeAdapterFactory.class)) { + gsonBuilder.registerTypeAdapterFactory(factory); + } + GSON = gsonBuilder.create(); + } + + /** + * Provides the {@link Gson} instance. + * @return the {@link Gson} instance + */ + public static Gson provideGson() { + return GSON; + } +} diff --git a/src/main/java/com/github/checkstyle/regression/util/package-info.java b/src/main/java/com/github/checkstyle/regression/util/package-info.java new file mode 100644 index 0000000..0b9f1a9 --- /dev/null +++ b/src/main/java/com/github/checkstyle/regression/util/package-info.java @@ -0,0 +1,23 @@ +//////////////////////////////////////////////////////////////////////////////// +// checkstyle: Checks Java source code for adherence to a set of rules. +// Copyright (C) 2001-2017 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 +//////////////////////////////////////////////////////////////////////////////// + +/** + * Contains utility classes for the whole regression-tool project. + */ +package com.github.checkstyle.regression.util; diff --git a/src/main/resources/checkstyle_modules.json b/src/main/resources/checkstyle_modules.json new file mode 100644 index 0000000..b0d5c47 --- /dev/null +++ b/src/main/resources/checkstyle_modules.json @@ -0,0 +1,2340 @@ +[ + { + "name": "Checker", + "packageName": "com.puppycrawl.tools.checkstyle", + "parent": "", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.MessageDispatcher", + "com.puppycrawl.tools.checkstyle.api.RootModule", + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "TreeWalker", + "packageName": "com.puppycrawl.tools.checkstyle", + "parent": "Checker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractFileSetCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.ExternalResourceHolder", + "com.puppycrawl.tools.checkstyle.api.FileSetCheck", + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "ArrayTypeStyleCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "AvoidEscapedUnicodeCharactersCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "DescendantTokenCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "FileContentsHolder", + "packageName": "com.puppycrawl.tools.checkstyle.checks", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "FinalParametersCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "NewlineAtEndOfFileCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks", + "parent": "Checker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractFileSetCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.FileSetCheck", + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "OuterTypeFilenameCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "SuppressWarningsHolder", + "packageName": "com.puppycrawl.tools.checkstyle.checks", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "TodoCommentCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "TrailingCommentCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "TranslationCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks", + "parent": "Checker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractFileSetCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.FileSetCheck", + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "UncommentedMainCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "UniquePropertiesCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks", + "parent": "Checker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractFileSetCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.FileSetCheck", + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "UpperEllCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "AnnotationLocationCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.annotation", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "AnnotationUseStyleCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.annotation", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "MissingDeprecatedCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.annotation", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "MissingOverrideCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.annotation", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "PackageAnnotationCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.annotation", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "SuppressWarningsCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.annotation", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "AvoidNestedBlocksCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.blocks", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "EmptyBlockCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.blocks", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "EmptyCatchBlockCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.blocks", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "LeftCurlyCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.blocks", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "NeedBracesCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.blocks", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "RightCurlyCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.blocks", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "ArrayTrailingCommaCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.coding", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "AvoidInlineConditionalsCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.coding", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "CovariantEqualsCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.coding", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "DeclarationOrderCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.coding", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "DefaultComesLastCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.coding", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "EmptyStatementCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.coding", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "EqualsAvoidNullCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.coding", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "EqualsHashCodeCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.coding", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "ExplicitInitializationCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.coding", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "FallThroughCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.coding", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "FinalLocalVariableCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.coding", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "HiddenFieldCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.coding", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "IllegalCatchCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.coding", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "IllegalInstantiationCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.coding", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "IllegalThrowsCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.coding", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "IllegalTokenCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.coding", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "IllegalTokenTextCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.coding", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "IllegalTypeCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.coding", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "InnerAssignmentCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.coding", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "MagicNumberCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.coding", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "MissingCtorCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.coding", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "MissingSwitchDefaultCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.coding", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "ModifiedControlVariableCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.coding", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "MultipleStringLiteralsCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.coding", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "MultipleVariableDeclarationsCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.coding", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "NestedForDepthCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.coding", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "NestedIfDepthCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.coding", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "NestedTryDepthCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.coding", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "NoCloneCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.coding", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "NoFinalizerCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.coding", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "OneStatementPerLineCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.coding", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "OverloadMethodsDeclarationOrderCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.coding", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "PackageDeclarationCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.coding", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "ParameterAssignmentCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.coding", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "RequireThisCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.coding", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "ReturnCountCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.coding", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "SimplifyBooleanExpressionCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.coding", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "SimplifyBooleanReturnCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.coding", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "StringLiteralEqualityCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.coding", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "SuperCloneCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.coding", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.checks.coding.AbstractSuperCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "SuperFinalizeCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.coding", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.checks.coding.AbstractSuperCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "UnnecessaryParenthesesCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.coding", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "VariableDeclarationUsageDistanceCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.coding", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "DesignForExtensionCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.design", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "FinalClassCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.design", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "HideUtilityClassConstructorCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.design", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "InnerTypeLastCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.design", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "InterfaceIsTypeCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.design", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "MutableExceptionCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.design", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "OneTopLevelClassCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.design", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "ThrowsCountCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.design", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "VisibilityModifierCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.design", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "HeaderCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.header", + "parent": "Checker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.checks.header.AbstractHeaderCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractFileSetCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.ExternalResourceHolder", + "com.puppycrawl.tools.checkstyle.api.FileSetCheck", + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "RegexpHeaderCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.header", + "parent": "Checker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.checks.header.AbstractHeaderCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractFileSetCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.ExternalResourceHolder", + "com.puppycrawl.tools.checkstyle.api.FileSetCheck", + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "AvoidStarImportCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.imports", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "AvoidStaticImportCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.imports", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "CustomImportOrderCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.imports", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "IllegalImportCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.imports", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "ImportControlCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.imports", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.ExternalResourceHolder", + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "ImportOrderCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.imports", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "RedundantImportCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.imports", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "UnusedImportsCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.imports", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "CommentsIndentationCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.indentation", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "IndentationCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.indentation", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "AtclauseOrderCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.javadoc", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.checks.javadoc.AbstractJavadocCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "JavadocMethodCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.javadoc", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.checks.AbstractTypeAwareCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "JavadocPackageCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.javadoc", + "parent": "Checker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractFileSetCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.FileSetCheck", + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "JavadocParagraphCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.javadoc", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.checks.javadoc.AbstractJavadocCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "JavadocStyleCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.javadoc", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "JavadocTagContinuationIndentationCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.javadoc", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.checks.javadoc.AbstractJavadocCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "JavadocTypeCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.javadoc", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "JavadocVariableCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.javadoc", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "NonEmptyAtclauseDescriptionCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.javadoc", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.checks.javadoc.AbstractJavadocCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "SingleLineJavadocCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.javadoc", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.checks.javadoc.AbstractJavadocCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "SummaryJavadocCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.javadoc", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.checks.javadoc.AbstractJavadocCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "WriteTagCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.javadoc", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "BooleanExpressionComplexityCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.metrics", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "ClassDataAbstractionCouplingCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.metrics", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.checks.metrics.AbstractClassCouplingCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "ClassFanOutComplexityCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.metrics", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.checks.metrics.AbstractClassCouplingCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "CyclomaticComplexityCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.metrics", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "JavaNCSSCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.metrics", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "NPathComplexityCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.metrics", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "ModifierOrderCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.modifier", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "RedundantModifierCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.modifier", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "AbbreviationAsWordInNameCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.naming", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "AbstractClassNameCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.naming", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "CatchParameterNameCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.naming", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.checks.naming.AbstractNameCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "ClassTypeParameterNameCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.naming", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.checks.naming.AbstractNameCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "ConstantNameCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.naming", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.checks.naming.AbstractAccessControlNameCheck", + "com.puppycrawl.tools.checkstyle.checks.naming.AbstractNameCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "InterfaceTypeParameterNameCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.naming", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.checks.naming.AbstractNameCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "LocalFinalVariableNameCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.naming", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.checks.naming.AbstractNameCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "LocalVariableNameCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.naming", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.checks.naming.AbstractNameCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "MemberNameCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.naming", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.checks.naming.AbstractAccessControlNameCheck", + "com.puppycrawl.tools.checkstyle.checks.naming.AbstractNameCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "MethodNameCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.naming", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.checks.naming.AbstractAccessControlNameCheck", + "com.puppycrawl.tools.checkstyle.checks.naming.AbstractNameCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "MethodTypeParameterNameCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.naming", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.checks.naming.AbstractNameCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "PackageNameCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.naming", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "ParameterNameCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.naming", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.checks.naming.AbstractNameCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "StaticVariableNameCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.naming", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.checks.naming.AbstractAccessControlNameCheck", + "com.puppycrawl.tools.checkstyle.checks.naming.AbstractNameCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "TypeNameCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.naming", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.checks.naming.AbstractAccessControlNameCheck", + "com.puppycrawl.tools.checkstyle.checks.naming.AbstractNameCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "RegexpCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.regexp", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "RegexpMultilineCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.regexp", + "parent": "Checker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractFileSetCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.FileSetCheck", + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "RegexpOnFilenameCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.regexp", + "parent": "Checker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractFileSetCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.FileSetCheck", + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "RegexpSinglelineCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.regexp", + "parent": "Checker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractFileSetCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.FileSetCheck", + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "RegexpSinglelineJavaCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.regexp", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "AnonInnerLengthCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.sizes", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "ExecutableStatementCountCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.sizes", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "FileLengthCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.sizes", + "parent": "Checker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractFileSetCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.FileSetCheck", + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "LineLengthCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.sizes", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "MethodCountCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.sizes", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "MethodLengthCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.sizes", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "OuterTypeNumberCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.sizes", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "ParameterNumberCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.sizes", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "EmptyForInitializerPadCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.whitespace", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "EmptyForIteratorPadCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.whitespace", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "EmptyLineSeparatorCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.whitespace", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "FileTabCharacterCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.whitespace", + "parent": "Checker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractFileSetCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.FileSetCheck", + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "GenericWhitespaceCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.whitespace", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "MethodParamPadCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.whitespace", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "NoLineWrapCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.whitespace", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "NoWhitespaceAfterCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.whitespace", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "NoWhitespaceBeforeCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.whitespace", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "OperatorWrapCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.whitespace", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "ParenPadCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.whitespace", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.checks.whitespace.AbstractParenPadCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "SeparatorWrapCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.whitespace", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "SingleSpaceSeparatorCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.whitespace", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "TypecastParenPadCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.whitespace", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.checks.whitespace.AbstractParenPadCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "WhitespaceAfterCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.whitespace", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "WhitespaceAroundCheck", + "packageName": "com.puppycrawl.tools.checkstyle.checks.whitespace", + "parent": "TreeWalker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AbstractCheck", + "com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter", + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "BeforeExecutionExclusionFileFilter", + "packageName": "com.puppycrawl.tools.checkstyle.filefilters", + "parent": "Checker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.BeforeExecutionFileFilter", + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "CsvFilter", + "packageName": "com.puppycrawl.tools.checkstyle.filters", + "parent": "Checker", + "hierarchies": [], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.filters.IntFilter" + ] + }, + { + "name": "IntMatchFilter", + "packageName": "com.puppycrawl.tools.checkstyle.filters", + "parent": "Checker", + "hierarchies": [], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.filters.IntFilter" + ] + }, + { + "name": "IntRangeFilter", + "packageName": "com.puppycrawl.tools.checkstyle.filters", + "parent": "Checker", + "hierarchies": [], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.filters.IntFilter" + ] + }, + { + "name": "SeverityMatchFilter", + "packageName": "com.puppycrawl.tools.checkstyle.filters", + "parent": "Checker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Filter", + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "SuppressWarningsFilter", + "packageName": "com.puppycrawl.tools.checkstyle.filters", + "parent": "Checker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Filter", + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "SuppressWithNearbyCommentFilter", + "packageName": "com.puppycrawl.tools.checkstyle.filters", + "parent": "Checker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Filter", + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "SuppressionCommentFilter", + "packageName": "com.puppycrawl.tools.checkstyle.filters", + "parent": "Checker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Filter", + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + }, + { + "name": "SuppressionFilter", + "packageName": "com.puppycrawl.tools.checkstyle.filters", + "parent": "Checker", + "hierarchies": [ + "com.puppycrawl.tools.checkstyle.api.AutomaticBean" + ], + "interfaces": [ + "com.puppycrawl.tools.checkstyle.api.Filter", + "com.puppycrawl.tools.checkstyle.api.ExternalResourceHolder", + "com.puppycrawl.tools.checkstyle.api.Configurable", + "com.puppycrawl.tools.checkstyle.api.Contextualizable" + ] + } +] diff --git a/src/test/java/com/github/checkstyle/regression/module/ModuleInfoCollectorTest.java b/src/test/java/com/github/checkstyle/regression/module/ModuleInfoCollectorTest.java new file mode 100644 index 0000000..5f8257a --- /dev/null +++ b/src/test/java/com/github/checkstyle/regression/module/ModuleInfoCollectorTest.java @@ -0,0 +1,111 @@ +//////////////////////////////////////////////////////////////////////////////// +// checkstyle: Checks Java source code for adherence to a set of rules. +// Copyright (C) 2001-2017 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.github.checkstyle.regression.module; + +import static com.github.checkstyle.regression.internal.TestUtils.assertUtilsClassHasPrivateConstructor; +import static org.junit.Assert.assertEquals; + +import java.util.Arrays; +import java.util.LinkedList; +import java.util.List; + +import org.junit.Test; + +import com.github.checkstyle.regression.data.GitChange; +import com.github.checkstyle.regression.data.ImmutableModuleExtractInfo; +import com.github.checkstyle.regression.data.ImmutableModuleInfo; +import com.github.checkstyle.regression.data.ModuleExtractInfo; +import com.github.checkstyle.regression.data.ModuleInfo; + +public class ModuleInfoCollectorTest { + private static final String BASE_PACKAGE = + "com.puppycrawl.tools.checkstyle"; + + private static final String JAVA_MAIN_SOURCE_PREFIX = + "src/main/java/com/puppycrawl/tools/checkstyle/"; + + private static final String JAVA_TEST_SOURCE_PREFIX = + "src/test/java/com/puppycrawl/tools/checkstyle/"; + + @Test + public void testIsProperUtilsClass() throws Exception { + assertUtilsClassHasPrivateConstructor(ModuleCollector.class); + } + + @Test + public void testGenerateConfigNodesForValidChanges1() { + final GitChange moduleChange = new GitChange( + JAVA_MAIN_SOURCE_PREFIX + "checks/coding/EmptyStatementCheck.java"); + final GitChange testChange = new GitChange( + JAVA_TEST_SOURCE_PREFIX + "checks/coding/EmptyStatementCheckTest.java"); + final GitChange nonRelatedChange = new GitChange( + JAVA_TEST_SOURCE_PREFIX + "checks/NewlineAtEndOfFileCheckTest.java"); + final List changes = Arrays.asList(moduleChange, testChange, nonRelatedChange); + final ModuleExtractInfo moduleExtractInfo = ImmutableModuleExtractInfo.builder() + .name("EmptyStatementCheck") + .packageName(BASE_PACKAGE + ".checks.coding") + .parent("TreeWalker") + .build(); + final List moduleInfos = + ModuleCollector.generate(changes); + final ModuleInfo moduleInfo = ImmutableModuleInfo.builder() + .moduleExtractInfo(moduleExtractInfo) + .build(); + assertEquals(1, moduleInfos.size()); + assertEquals(moduleInfo, moduleInfos.get(0)); + // just for codecov, no need to check this. + assertEquals("EmptyStatementCheck", moduleInfos.get(0).name()); + } + + @Test + public void testGenerateConfigNodesForValidChanges2() { + final GitChange moduleChange = new GitChange( + JAVA_MAIN_SOURCE_PREFIX + "checks/NewlineAtEndOfFileCheck.java"); + final GitChange testChange = new GitChange( + JAVA_TEST_SOURCE_PREFIX + "checks/NewlineAtEndOfFileCheckTest.java"); + final GitChange nonRelatedChange = new GitChange( + JAVA_TEST_SOURCE_PREFIX + "checks/coding/EmptyStatementCheckTest.java"); + final List changes = Arrays.asList(moduleChange, testChange, nonRelatedChange); + final ModuleExtractInfo moduleExtractInfo = ImmutableModuleExtractInfo.builder() + .name("NewlineAtEndOfFileCheck") + .packageName(BASE_PACKAGE + ".checks") + .parent("Checker") + .build(); + final List moduleInfos = + ModuleCollector.generate(changes); + final ModuleInfo moduleInfo = ImmutableModuleInfo.builder() + .moduleExtractInfo(moduleExtractInfo) + .build(); + assertEquals(1, moduleInfos.size()); + assertEquals(moduleInfo, moduleInfos.get(0)); + } + + @Test + public void testGenerateConfigNodesForInvalidChanges() { + final List changes = new LinkedList<>(); + changes.add(new GitChange( + JAVA_MAIN_SOURCE_PREFIX + "PackageObjectFactory.java")); + changes.add(new GitChange("src/main/java/Bar.java")); + changes.add(new GitChange("foo/A.java")); + final List moduleInfos = + ModuleCollector.generate(changes); + assertEquals(0, moduleInfos.size()); + } +} diff --git a/src/test/java/com/github/checkstyle/regression/module/ModuleUtilsTest.java b/src/test/java/com/github/checkstyle/regression/module/ModuleUtilsTest.java new file mode 100644 index 0000000..928f3d6 --- /dev/null +++ b/src/test/java/com/github/checkstyle/regression/module/ModuleUtilsTest.java @@ -0,0 +1,107 @@ +//////////////////////////////////////////////////////////////////////////////// +// checkstyle: Checks Java source code for adherence to a set of rules. +// Copyright (C) 2001-2017 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.github.checkstyle.regression.module; + +import static com.github.checkstyle.regression.internal.TestUtils.assertUtilsClassHasPrivateConstructor; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; +import static org.mockito.Mockito.doThrow; +import static org.mockito.Mockito.spy; + +import java.io.IOException; +import java.io.InputStream; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; + +import org.junit.Test; + +import com.github.checkstyle.regression.data.GitChange; +import com.github.checkstyle.regression.data.ImmutableModuleExtractInfo; +import com.github.checkstyle.regression.data.ModuleExtractInfo; + +public class ModuleUtilsTest { + private static final String BASE_PACKAGE = "com.puppycrawl.tools.checkstyle"; + + private static final String JAVA_MAIN_SOURCE_PREFIX = + "src/main/java/com/puppycrawl/tools/checkstyle/"; + + @Test + public void testIsProperUtilsClass() throws Exception { + assertUtilsClassHasPrivateConstructor(ModuleUtils.class); + } + + @Test + public void testIsCheckstyleModule() { + final GitChange change = new GitChange( + JAVA_MAIN_SOURCE_PREFIX + "checks/coding/EmptyStatementCheck.java"); + final boolean result = ModuleUtils.isCheckstyleModule(change); + assertTrue(result); + } + + @Test + public void testIsCheckstyleModuleNonModule() { + final GitChange change = new GitChange( + JAVA_MAIN_SOURCE_PREFIX + "PackageObjectFactory.java"); + final boolean result = ModuleUtils.isCheckstyleModule(change); + assertFalse(result); + } + + @Test + public void testIsCheckstyleModuleNonMainFile() { + final boolean result = + ModuleUtils.isCheckstyleModule(new GitChange("src/test/java/foo/Foo.java")); + assertFalse(result); + } + + @Test + public void testGetNameToModuleInfoFromInputStreamWithException() throws Exception { + final Method method = ModuleUtils.class.getDeclaredMethod( + "getNameToModuleInfoFromInputStream", InputStream.class); + method.setAccessible(true); + final InputStream is = spy(ModuleUtils.class.getClassLoader() + .getResourceAsStream("checkstyle_modules.json")); + doThrow(IOException.class).when(is).close(); + + try { + method.invoke(ModuleUtils.class, is); + fail("Exception is expected"); + } + catch (InvocationTargetException ex) { + assertEquals("Failed when loaing hardcoded checkstyle module information", + ex.getTargetException().getMessage()); + } + } + + @Test + public void testConvertModuleChangeToModuleInfo() { + final GitChange change = new GitChange( + JAVA_MAIN_SOURCE_PREFIX + "checks/coding/EmptyStatementCheck.java"); + final ModuleExtractInfo moduleExtractInfo = + ModuleUtils.convertModuleChangeToExtractInfo(change); + final ModuleExtractInfo expected = ImmutableModuleExtractInfo.builder() + .name("EmptyStatementCheck") + .packageName(BASE_PACKAGE + ".checks.coding") + .parent("TreeWalker") + .build(); + assertEquals(expected, moduleExtractInfo); + } +} diff --git a/src/test/java/com/github/checkstyle/regression/util/GsonProviderTest.java b/src/test/java/com/github/checkstyle/regression/util/GsonProviderTest.java new file mode 100644 index 0000000..23a4f18 --- /dev/null +++ b/src/test/java/com/github/checkstyle/regression/util/GsonProviderTest.java @@ -0,0 +1,31 @@ +//////////////////////////////////////////////////////////////////////////////// +// checkstyle: Checks Java source code for adherence to a set of rules. +// Copyright (C) 2001-2017 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.github.checkstyle.regression.util; + +import static com.github.checkstyle.regression.internal.TestUtils.assertUtilsClassHasPrivateConstructor; + +import org.junit.Test; + +public class GsonProviderTest { + @Test + public void testIsProperUtilsClass() throws Exception { + assertUtilsClassHasPrivateConstructor(GsonProvider.class); + } +}