From 4328e49c7fe276b001dd7352b7eafc7989de6e8f Mon Sep 17 00:00:00 2001 From: Paul Campbell Date: Thu, 13 Jul 2017 15:55:00 +0100 Subject: [PATCH 01/26] version: set to 3.4.0-SNAPSHOT --- builder/pom.xml | 2 +- plugin/pom.xml | 2 +- pom.xml | 2 +- regressions/pom.xml | 2 +- ruleset/pom.xml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/builder/pom.xml b/builder/pom.xml index 1581267..3e57205 100644 --- a/builder/pom.xml +++ b/builder/pom.xml @@ -7,7 +7,7 @@ net.kemitix kemitix-checkstyle-ruleset-parent - 3.3.0 + 3.4.0-SNAPSHOT kemitix-checkstyle-ruleset-builder diff --git a/plugin/pom.xml b/plugin/pom.xml index a89b75d..78fc434 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -7,7 +7,7 @@ net.kemitix kemitix-checkstyle-ruleset-parent - 3.3.0 + 3.4.0-SNAPSHOT kemitix-checkstyle-ruleset-maven-plugin diff --git a/pom.xml b/pom.xml index 2cadc77..0510099 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ kemitix-checkstyle-ruleset-parent - 3.3.0 + 3.4.0-SNAPSHOT pom Kemitix Checkstyle :: Ruleset :: Parent diff --git a/regressions/pom.xml b/regressions/pom.xml index 5ee54fa..2213e86 100644 --- a/regressions/pom.xml +++ b/regressions/pom.xml @@ -6,7 +6,7 @@ net.kemitix kemitix-checkstyle-ruleset-parent - 3.3.0 + 3.4.0-SNAPSHOT kemitix-checkstyle-ruleset-regressions diff --git a/ruleset/pom.xml b/ruleset/pom.xml index 573adc8..bed0366 100644 --- a/ruleset/pom.xml +++ b/ruleset/pom.xml @@ -7,7 +7,7 @@ net.kemitix kemitix-checkstyle-ruleset-parent - 3.3.0 + 3.4.0-SNAPSHOT kemitix-checkstyle-ruleset From 43cefe4c6d1f5d16d973f9a1a4bd75725e6ca2ed Mon Sep 17 00:00:00 2001 From: Paul Campbell Date: Wed, 3 Jan 2018 06:52:42 +0000 Subject: [PATCH 02/26] Ignore pom.xml.versionsBackup files --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 7933d63..0ba5348 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,8 @@ *.ear *.zip +pom.xml.versionsBackup + # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml hs_err_pid* From 5f142c9a0dded279ff4171314521a3365900c1db Mon Sep 17 00:00:00 2001 From: Paul Campbell Date: Wed, 3 Jan 2018 20:25:21 +0000 Subject: [PATCH 03/26] Remove plugin module - replaced by a tile from kemitix-maven-tiles --- plugin/pom.xml | 74 ------- .../ruleset/plugin/CheckConfiguration.java | 53 ----- .../checkstyle/ruleset/plugin/CheckMojo.java | 99 ---------- .../ruleset/plugin/CheckstyleExecutor.java | 51 ----- .../plugin/DefaultCheckstyleExecutor.java | 186 ------------------ .../ruleset/plugin/DefaultPluginExecutor.java | 79 -------- .../ruleset/plugin/PluginExecutor.java | 114 ----------- .../ruleset/plugin/package-info.java | 22 --- .../plugin/CheckConfigurationTest.java | 26 --- .../ruleset/plugin/CheckMojoTest.java | 80 -------- .../plugin/DefaultCheckstyleExecutorTest.java | 161 --------------- .../plugin/DefaultPluginExecutorTest.java | 177 ----------------- pom.xml | 1 - 13 files changed, 1123 deletions(-) delete mode 100644 plugin/pom.xml delete mode 100644 plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/CheckConfiguration.java delete mode 100644 plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/CheckMojo.java delete mode 100644 plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/CheckstyleExecutor.java delete mode 100644 plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/DefaultCheckstyleExecutor.java delete mode 100644 plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/DefaultPluginExecutor.java delete mode 100644 plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/PluginExecutor.java delete mode 100644 plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/package-info.java delete mode 100644 plugin/src/test/java/net/kemitix/checkstyle/ruleset/plugin/CheckConfigurationTest.java delete mode 100644 plugin/src/test/java/net/kemitix/checkstyle/ruleset/plugin/CheckMojoTest.java delete mode 100644 plugin/src/test/java/net/kemitix/checkstyle/ruleset/plugin/DefaultCheckstyleExecutorTest.java delete mode 100644 plugin/src/test/java/net/kemitix/checkstyle/ruleset/plugin/DefaultPluginExecutorTest.java diff --git a/plugin/pom.xml b/plugin/pom.xml deleted file mode 100644 index 78fc434..0000000 --- a/plugin/pom.xml +++ /dev/null @@ -1,74 +0,0 @@ - - - 4.0.0 - - - net.kemitix - kemitix-checkstyle-ruleset-parent - 3.4.0-SNAPSHOT - - - kemitix-checkstyle-ruleset-maven-plugin - maven-plugin - Kemitix Checkstyle :: Ruleset :: Plugin - Checkstyle configuration using the Kemitix Checkstyle Ruleset - - - 3.5.0 - 3.5 - 3.5 - 2.3.0 - 1.0.0 - - - - - org.apache.maven - maven-plugin-api - ${maven.version} - - - org.apache.maven - maven-core - ${maven.version} - - - org.apache.maven.plugin-tools - maven-plugin-annotations - ${maven-plugin-annotations.version} - provided - - - org.twdata.maven - mojo-executor - ${mojo-executor.version} - - - me.andrz - map-builder - ${map-builder.version} - - - org.assertj - assertj-core - test - - - org.mockito - mockito-core - test - - - - - - - org.apache.maven.plugins - maven-plugin-plugin - ${maven-plugin-plugin.version} - - - - diff --git a/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/CheckConfiguration.java b/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/CheckConfiguration.java deleted file mode 100644 index 32572db..0000000 --- a/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/CheckConfiguration.java +++ /dev/null @@ -1,53 +0,0 @@ -/** - * The MIT License (MIT) - * - * Copyright (c) 2017 Paul Campbell - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of this software - * and associated documentation files (the "Software"), to deal in the Software without restriction, - * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all copies - * or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE - * AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -package net.kemitix.checkstyle.ruleset.plugin; - -import lombok.Builder; -import lombok.Getter; -import org.apache.maven.artifact.repository.ArtifactRepository; -import org.apache.maven.execution.MavenSession; -import org.apache.maven.plugin.BuildPluginManager; -import org.apache.maven.project.MavenProject; - -/** - * Configuration for performing a Checkstyle Check. - * - * @author Paul Campbell (pcampbell@kemitix.net) - */ -@Getter -@Builder -class CheckConfiguration { - - private MavenProject mavenProject; - - private MavenSession mavenSession; - - private ArtifactRepository artifactRepository; - - private BuildPluginManager pluginManager; - - private String rulesetVersion; - - private String sourceDirectory; - - private String level; -} diff --git a/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/CheckMojo.java b/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/CheckMojo.java deleted file mode 100644 index 07f2d0c..0000000 --- a/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/CheckMojo.java +++ /dev/null @@ -1,99 +0,0 @@ -/** - * The MIT License (MIT) - * - * Copyright (c) 2017 Paul Campbell - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of this software - * and associated documentation files (the "Software"), to deal in the Software without restriction, - * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all copies - * or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE - * AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -package net.kemitix.checkstyle.ruleset.plugin; - -import lombok.Setter; -import org.apache.maven.artifact.repository.ArtifactRepository; -import org.apache.maven.execution.MavenSession; -import org.apache.maven.model.Build; -import org.apache.maven.model.Plugin; -import org.apache.maven.model.io.xpp3.MavenXpp3Reader; -import org.apache.maven.plugin.AbstractMojo; -import org.apache.maven.plugin.BuildPluginManager; -import org.apache.maven.plugin.MojoExecutionException; -import org.apache.maven.plugin.MojoFailureException; -import org.apache.maven.plugins.annotations.Component; -import org.apache.maven.plugins.annotations.LifecyclePhase; -import org.apache.maven.plugins.annotations.Mojo; -import org.apache.maven.plugins.annotations.Parameter; -import org.apache.maven.project.MavenProject; - -/** - * Runs the Checkstyle Maven Plugin with the Kemitix Checkstyle Ruleset. - * - * @author Paul Campbell (pcampbell@kemitix.net) - */ -@Mojo(name = "check", defaultPhase = LifecyclePhase.VALIDATE) -public class CheckMojo extends AbstractMojo { - - private static final String KEMITIX_GROUPID = "net.kemitix"; - - private static final String KEMITIX_ARTIFACTID = "kemitix-checkstyle-ruleset"; - - @Setter - private CheckstyleExecutor checkstyleExecutor = - new DefaultCheckstyleExecutor(new DefaultPluginExecutor(), new MavenXpp3Reader()); - - @Setter - @Parameter(defaultValue = "${project}", readonly = true) - private MavenProject mavenProject; - - @Setter - @Parameter(defaultValue = "${session}", readonly = true) - private MavenSession mavenSession; - - @Setter - @Parameter(defaultValue = "${localRepository}", readonly = true, required = true) - private ArtifactRepository artifactRepository; - - @Parameter(name = "level", defaultValue = "5-complexity", readonly = true) - private String level = "5-complexity"; - - @Setter - @Component - private BuildPluginManager pluginManager; - - @Override - public final void execute() throws MojoExecutionException, MojoFailureException { - checkstyleExecutor.setLog(getLog()); - CheckConfiguration config = getCheckConfiguration(); - checkstyleExecutor.performCheck(config); - } - - private CheckConfiguration getCheckConfiguration() { - final Plugin rulesetPlugin = getRulesetPlugin(); - final Build build = mavenProject.getBuild(); - return CheckConfiguration.builder() - .mavenProject(mavenProject) - .mavenSession(mavenSession) - .artifactRepository(artifactRepository) - .pluginManager(pluginManager) - .rulesetVersion(rulesetPlugin.getVersion()) - .sourceDirectory(build.getSourceDirectory()) - .level(level) - .build(); - } - - private Plugin getRulesetPlugin() { - return mavenProject.getPlugin(KEMITIX_GROUPID + ":" + KEMITIX_ARTIFACTID + "-maven-plugin"); - } -} diff --git a/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/CheckstyleExecutor.java b/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/CheckstyleExecutor.java deleted file mode 100644 index d40db6a..0000000 --- a/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/CheckstyleExecutor.java +++ /dev/null @@ -1,51 +0,0 @@ -/** - * The MIT License (MIT) - * - * Copyright (c) 2017 Paul Campbell - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of this software - * and associated documentation files (the "Software"), to deal in the Software without restriction, - * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all copies - * or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE - * AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -package net.kemitix.checkstyle.ruleset.plugin; - -import org.apache.maven.plugin.MojoExecutionException; -import org.apache.maven.plugin.MojoFailureException; -import org.apache.maven.plugin.logging.Log; - -/** - * Executes the Checkstyle plugin. - * - * @author Paul Campbell (pcampbell@kemitix.net) - */ -interface CheckstyleExecutor { - - /** - * Execute Checkstyle Check. - * - * @param configuration The Configuration - * - * @throws MojoExecutionException on execution error - * @throws MojoFailureException on execution failure - */ - void performCheck(CheckConfiguration configuration) throws MojoExecutionException, MojoFailureException; - - /** - * Set the logger to use. - * - * @param log the logger. - */ - void setLog(Log log); -} diff --git a/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/DefaultCheckstyleExecutor.java b/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/DefaultCheckstyleExecutor.java deleted file mode 100644 index f3f066c..0000000 --- a/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/DefaultCheckstyleExecutor.java +++ /dev/null @@ -1,186 +0,0 @@ -/** - * The MIT License (MIT) - * - * Copyright (c) 2017 Paul Campbell - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of this software - * and associated documentation files (the "Software"), to deal in the Software without restriction, - * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all copies - * or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE - * AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -package net.kemitix.checkstyle.ruleset.plugin; - -import lombok.Getter; -import lombok.RequiredArgsConstructor; -import lombok.Setter; -import lombok.val; -import org.apache.maven.artifact.Artifact; -import org.apache.maven.artifact.DefaultArtifact; -import org.apache.maven.artifact.handler.ArtifactHandler; -import org.apache.maven.artifact.handler.DefaultArtifactHandler; -import org.apache.maven.artifact.repository.ArtifactRepository; -import org.apache.maven.model.Dependency; -import org.apache.maven.model.Model; -import org.apache.maven.model.Plugin; -import org.apache.maven.model.io.xpp3.MavenXpp3Reader; -import org.apache.maven.plugin.MojoExecutionException; -import org.apache.maven.plugin.MojoFailureException; -import org.apache.maven.plugin.logging.Log; -import org.codehaus.plexus.util.xml.Xpp3Dom; -import org.codehaus.plexus.util.xml.pull.XmlPullParserException; -import org.twdata.maven.mojoexecutor.MojoExecutor; - -import java.io.File; -import java.io.FileReader; -import java.io.IOException; -import java.io.Reader; -import java.util.List; -import java.util.Properties; - -/** - * Default implementation of {@link CheckstyleExecutor}. - * - * @author Paul Campbell (pcampbell@kemitix.net) - */ -@SuppressWarnings("classfanoutcomplexity") -@RequiredArgsConstructor -public class DefaultCheckstyleExecutor implements CheckstyleExecutor { - - private static final String CHECKSTYLE_GROUPID = "com.puppycrawl.tools"; - - private static final String CHECKSTYLE_ARTIFACTID = "checkstyle"; - - private static final String SEVNTU_GROUPID = "com.github.sevntu-checkstyle"; - - private static final String SEVNTU_ARTIFACTID = "sevntu-checkstyle-maven-plugin"; - - private static final String KEMITIX_GROUPID = "net.kemitix"; - - private static final String KEMITIX_ARTIFACTID = "kemitix-checkstyle-ruleset"; - - private static final String APACHE_PLUGIN_GROUPID = "org.apache.maven.plugins"; - - private static final String APACHE_PLUGIN_ARTIFACTID = "maven-checkstyle-plugin"; - - private static final String CONFIG_LOCATION = "configLocation"; - - private static final String SOURCE_DIR = "sourceDirectory"; - - private static final ArtifactHandler POM_ARTIFACT_HANDLER = new DefaultArtifactHandler("pom"); - - private static final String PLUGIN_ARTIFACT_ID = KEMITIX_ARTIFACTID + "-parent"; - - private final PluginExecutor pluginExecutor; - - private final MavenXpp3Reader mavenXpp3Reader; - - @Setter - @Getter - private Log log; - - private String rulesetVersion; - - @Override - public final void performCheck(final CheckConfiguration config) - throws MojoExecutionException, MojoFailureException { - rulesetVersion = config.getRulesetVersion(); - val properties = getProperties(config.getArtifactRepository()); - - // configure - val checkstylePlugin = getPlugin(properties); - final String sourceDirectory = config.getSourceDirectory(); - final String level = config.getLevel(); - info("Ruleset: %s", level); - final String configFile = String.format("net/kemitix/checkstyle-%s.xml", level); - final Xpp3Dom configuration = pluginExecutor.configuration(pluginExecutor.element(CONFIG_LOCATION, configFile), - pluginExecutor.element(SOURCE_DIR, sourceDirectory) - ); - final MojoExecutor.ExecutionEnvironment environment = pluginExecutor.executionEnvironment(config); - - // run - pluginExecutor.executeMojo(checkstylePlugin, "check", configuration, environment); - info("Checkstyle complete"); - } - - private String getProperty(final Properties properties, final String key) { - val property = properties.getProperty(key); - debug("%s: %s", key, property); - return property; - } - - private Plugin getPlugin(final Properties properties) { - // get versions from pom.xml properties - val pluginVersion = getProperty(properties, "maven-checkstyle-plugin.version"); - val checkstyleVersion = getProperty(properties, "checkstyle.version"); - val sevntuVersion = getProperty(properties, "sevntu.version"); - info("Checkstyle %s (plugin: %s, sevntu: %s, ruleset: %s)", checkstyleVersion, - pluginVersion, sevntuVersion, rulesetVersion - ); - - // create checkstyle dependencies - val checkstyle = getCheckstyleDependency(checkstyleVersion); - val sevntu = getSevntuDependency(sevntuVersion); - val ruleset = getRulesetDependency(); - final List dependencies = pluginExecutor.dependencies(checkstyle, sevntu, ruleset); - - return pluginExecutor.plugin(APACHE_PLUGIN_GROUPID, APACHE_PLUGIN_ARTIFACTID, pluginVersion, dependencies); - } - - private Dependency getRulesetDependency() { - return pluginExecutor.dependency(KEMITIX_GROUPID, KEMITIX_ARTIFACTID, rulesetVersion); - } - - private Dependency getSevntuDependency(final String sevntuVersion) { - return pluginExecutor.dependency(SEVNTU_GROUPID, SEVNTU_ARTIFACTID, sevntuVersion); - } - - private Dependency getCheckstyleDependency(final String checkstyleVersion) { - return pluginExecutor.dependency(CHECKSTYLE_GROUPID, CHECKSTYLE_ARTIFACTID, checkstyleVersion); - } - - private Properties getProperties(final ArtifactRepository artifactRepository) throws MojoFailureException { - // load properties from the plugin pom.xml - final Artifact pluginArtifact = getPluginArtifact(artifactRepository); - try { - final File pomFile = pluginArtifact.getFile(); - return parsePomFile(pomFile).getProperties(); - } catch (XmlPullParserException | IOException e) { - throw new MojoFailureException("Can't load properties from plugin's pom.xml", e); - } - } - - private Model parsePomFile(final File pomFile) throws IOException, XmlPullParserException { - final Reader pomReader = new FileReader(pomFile); - return mavenXpp3Reader.read(pomReader); - } - - private Artifact getPluginArtifact(final ArtifactRepository artifactRepository) { - final Artifact templateArtifact = getRulesetArtifactTemplate(); - return artifactRepository.find(templateArtifact); - } - - private DefaultArtifact getRulesetArtifactTemplate() { - return new DefaultArtifact(KEMITIX_GROUPID, PLUGIN_ARTIFACT_ID, rulesetVersion, null, "", null, - POM_ARTIFACT_HANDLER - ); - } - - private void info(final String format, final Object... args) { - getLog().info(String.format(format, args)); - } - - private void debug(final String format, final Object... args) { - getLog().debug(String.format(format, args)); - } -} diff --git a/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/DefaultPluginExecutor.java b/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/DefaultPluginExecutor.java deleted file mode 100644 index b176c2d..0000000 --- a/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/DefaultPluginExecutor.java +++ /dev/null @@ -1,79 +0,0 @@ -/** - * The MIT License (MIT) - * - * Copyright (c) 2017 Paul Campbell - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of this software - * and associated documentation files (the "Software"), to deal in the Software without restriction, - * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all copies - * or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE - * AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -package net.kemitix.checkstyle.ruleset.plugin; - -import org.apache.maven.model.Dependency; -import org.apache.maven.model.Plugin; -import org.apache.maven.plugin.MojoExecutionException; -import org.codehaus.plexus.util.xml.Xpp3Dom; -import org.twdata.maven.mojoexecutor.MojoExecutor; - -import java.util.List; - -/** - * Wrapper for {@link org.twdata.maven.mojoexecutor.MojoExecutor}. - * - * @author Paul Campbell (pcampbell@kemitix.net). - */ -public final class DefaultPluginExecutor implements PluginExecutor { - - @Override - public MojoExecutor.Element element(final String key, final String value) { - return MojoExecutor.element(key, value); - } - - @Override - public Xpp3Dom configuration(final MojoExecutor.Element... elements) { - return MojoExecutor.configuration(elements); - } - - @Override - public MojoExecutor.ExecutionEnvironment executionEnvironment(final CheckConfiguration config) { - return MojoExecutor.executionEnvironment( - config.getMavenProject(), config.getMavenSession(), config.getPluginManager()); - } - - @Override - public void executeMojo( - final Plugin plugin, final String goal, final Xpp3Dom configuration, - final MojoExecutor.ExecutionEnvironment env - ) throws MojoExecutionException { - MojoExecutor.executeMojo(plugin, goal, configuration, env); - } - - @Override - public Dependency dependency(final String groupid, final String artifactid, final String version) { - return MojoExecutor.dependency(groupid, artifactid, version); - } - - @Override - public List dependencies(final Dependency... dependencies) { - return MojoExecutor.dependencies(dependencies); - } - - @Override - public Plugin plugin( - final String groupid, final String artifactid, final String version, final List dependencies - ) { - return MojoExecutor.plugin(groupid, artifactid, version, dependencies); - } -} diff --git a/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/PluginExecutor.java b/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/PluginExecutor.java deleted file mode 100644 index 91caeaf..0000000 --- a/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/PluginExecutor.java +++ /dev/null @@ -1,114 +0,0 @@ -/** - * The MIT License (MIT) - * - * Copyright (c) 2017 Paul Campbell - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of this software - * and associated documentation files (the "Software"), to deal in the Software without restriction, - * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all copies - * or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE - * AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -package net.kemitix.checkstyle.ruleset.plugin; - -import org.apache.maven.model.Dependency; -import org.apache.maven.model.Plugin; -import org.apache.maven.plugin.MojoExecutionException; -import org.codehaus.plexus.util.xml.Xpp3Dom; -import org.twdata.maven.mojoexecutor.MojoExecutor; - -import java.util.List; - -/** - * Interface for wrapping calls to static methods on {@link org.twdata.maven.mojoexecutor.MojoExecutor}. - * - * @author Paul Campbell (pcampbell@kemitix.net). - */ -public interface PluginExecutor { - - /** - * Constructs the element with a textual body. - * - * @param name The element name - * @param value The element text value - * - * @return The element object - */ - MojoExecutor.Element element(String name, String value); - - /** - * Builds the configuration for the goal using Elements. - * - * @param elements A list of elements for the configuration section - * - * @return The elements transformed into the Maven-native XML format - */ - Xpp3Dom configuration(MojoExecutor.Element... elements); - - /** - * Constructs the {@link MojoExecutor.ExecutionEnvironment} instance fluently. - * - * @param configuration The Configuration - * - * @return The execution environment - */ - MojoExecutor.ExecutionEnvironment executionEnvironment(CheckConfiguration configuration); - - /** - * Entry point for executing a mojo. - * - * @param plugin The plugin to execute - * @param goal The goal to execute - * @param configuration The execution configuration - * @param env The execution environment - * - * @throws MojoExecutionException If there are any exceptions locating or executing the mojo - */ - void executeMojo( - Plugin plugin, String goal, Xpp3Dom configuration, MojoExecutor.ExecutionEnvironment env - ) throws MojoExecutionException; - - /** - * Defines a dependency. - * - * @param groupId The group id - * @param artifactId The artifact id - * @param version The plugin version - * - * @return the dependency instance - */ - Dependency dependency(String groupId, String artifactId, String version); - - /** - * Creates a list of dependencies. - * - * @param dependencies the dependencies - * - * @return A list of dependencies - */ - List dependencies(Dependency... dependencies); - - /** - * Defines a plugin. - * - * @param groupId The group id - * @param artifactId The artifact id - * @param version The plugin version - * @param dependencies The plugin dependencies - * - * @return The plugin instance - */ - Plugin plugin( - String groupId, String artifactId, String version, List dependencies - ); -} diff --git a/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/package-info.java b/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/package-info.java deleted file mode 100644 index a2bf527..0000000 --- a/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/package-info.java +++ /dev/null @@ -1,22 +0,0 @@ -/** - * The MIT License (MIT) - * - * Copyright (c) 2017 Paul Campbell - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of this software - * and associated documentation files (the "Software"), to deal in the Software without restriction, - * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all copies - * or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE - * AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -package net.kemitix.checkstyle.ruleset.plugin; diff --git a/plugin/src/test/java/net/kemitix/checkstyle/ruleset/plugin/CheckConfigurationTest.java b/plugin/src/test/java/net/kemitix/checkstyle/ruleset/plugin/CheckConfigurationTest.java deleted file mode 100644 index 15c63ac..0000000 --- a/plugin/src/test/java/net/kemitix/checkstyle/ruleset/plugin/CheckConfigurationTest.java +++ /dev/null @@ -1,26 +0,0 @@ -package net.kemitix.checkstyle.ruleset.plugin; - -import org.junit.Test; - -import static org.assertj.core.api.Assertions.assertThat; - -/** - * @author Paul Campbell (pcampbell@kemitix.net). - */ -public class CheckConfigurationTest { - - @Test - public void toStringCoverage() { - //given - final String rulesetVersion = "ruleset version"; - final String sourceDirectory = "source directory"; - //when - final String result = CheckConfiguration.builder() - .rulesetVersion(rulesetVersion) - .sourceDirectory(sourceDirectory) - .toString(); - //then - assertThat(result).contains("rulesetVersion=ruleset version") - .contains("sourceDirectory=source directory"); - } -} diff --git a/plugin/src/test/java/net/kemitix/checkstyle/ruleset/plugin/CheckMojoTest.java b/plugin/src/test/java/net/kemitix/checkstyle/ruleset/plugin/CheckMojoTest.java deleted file mode 100644 index 86e540f..0000000 --- a/plugin/src/test/java/net/kemitix/checkstyle/ruleset/plugin/CheckMojoTest.java +++ /dev/null @@ -1,80 +0,0 @@ -package net.kemitix.checkstyle.ruleset.plugin; - -import org.apache.maven.artifact.repository.ArtifactRepository; -import org.apache.maven.execution.MavenSession; -import org.apache.maven.model.Build; -import org.apache.maven.model.Plugin; -import org.apache.maven.plugin.BuildPluginManager; -import org.apache.maven.plugin.MojoExecutionException; -import org.apache.maven.plugin.MojoFailureException; -import org.apache.maven.project.MavenProject; -import org.junit.Before; -import org.junit.Test; -import org.mockito.ArgumentCaptor; -import org.mockito.Captor; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.BDDMockito.given; -import static org.mockito.BDDMockito.then; - -/** - * Tests for {@link CheckMojo}. - * - * @author Paul Campbell (pcampbell@kemitix.net) - */ -public class CheckMojoTest { - - @Mock - private CheckstyleExecutor checkstyleExecutor; - - @Mock - private MavenProject mavenProject; - - @Mock - private MavenSession mavenSession; - - @Mock - private ArtifactRepository artifactRepository; - - @Mock - private BuildPluginManager pluginManager; - - @Captor - private ArgumentCaptor configuration; - - @Mock - private Plugin rulesetPlugin; - - @Mock - private Build build; - - @Before - public void setUp() { - MockitoAnnotations.initMocks(this); - } - - @Test - public void canExecute() throws MojoFailureException, MojoExecutionException { - //given - final CheckMojo mojo = new CheckMojo(); - mojo.setCheckstyleExecutor(checkstyleExecutor); - mojo.setMavenProject(mavenProject); - mojo.setMavenSession(mavenSession); - mojo.setArtifactRepository(artifactRepository); - mojo.setPluginManager(pluginManager); - given(mavenProject.getPlugin(any())).willReturn(rulesetPlugin); - given(mavenProject.getBuild()).willReturn(build); - //when - mojo.execute(); - //then - then(checkstyleExecutor).should() - .performCheck(configuration.capture()); - assertThat(configuration.getValue()).returns(mavenProject, CheckConfiguration::getMavenProject) - .returns(mavenSession, CheckConfiguration::getMavenSession) - .returns(artifactRepository, CheckConfiguration::getArtifactRepository) - .returns(pluginManager, CheckConfiguration::getPluginManager); - } -} diff --git a/plugin/src/test/java/net/kemitix/checkstyle/ruleset/plugin/DefaultCheckstyleExecutorTest.java b/plugin/src/test/java/net/kemitix/checkstyle/ruleset/plugin/DefaultCheckstyleExecutorTest.java deleted file mode 100644 index b7de3cb..0000000 --- a/plugin/src/test/java/net/kemitix/checkstyle/ruleset/plugin/DefaultCheckstyleExecutorTest.java +++ /dev/null @@ -1,161 +0,0 @@ -package net.kemitix.checkstyle.ruleset.plugin; - -import org.apache.maven.artifact.Artifact; -import org.apache.maven.artifact.repository.ArtifactRepository; -import org.apache.maven.execution.MavenSession; -import org.apache.maven.model.Dependency; -import org.apache.maven.model.Model; -import org.apache.maven.model.Plugin; -import org.apache.maven.model.io.xpp3.MavenXpp3Reader; -import org.apache.maven.plugin.BuildPluginManager; -import org.apache.maven.plugin.MojoExecutionException; -import org.apache.maven.plugin.MojoFailureException; -import org.apache.maven.plugin.logging.Log; -import org.apache.maven.project.MavenProject; -import org.codehaus.plexus.util.xml.Xpp3Dom; -import org.codehaus.plexus.util.xml.pull.XmlPullParserException; -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.TemporaryFolder; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; -import org.twdata.maven.mojoexecutor.MojoExecutor; - -import java.io.File; -import java.io.FileReader; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; -import java.util.Properties; - -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.BDDMockito.given; -import static org.mockito.BDDMockito.then; - -/** - * Tests for {@link DefaultCheckstyleExecutor}. - * - * @author Paul Campbell (pcampbell@kemitix.net) - */ -public class DefaultCheckstyleExecutorTest { - - @Rule - public TemporaryFolder folder = new TemporaryFolder(); - - @Mock - private PluginExecutor pluginExecutor; - - @Mock - private MavenProject mavenProject; - - @Mock - private MavenSession mavenSession; - - @Mock - private ArtifactRepository artifactRepository; - - @Mock - private BuildPluginManager pluginManager; - - @Mock - private Plugin rulesetPlugin; - - @Mock - private Log log; - - private DefaultCheckstyleExecutor checkstyleExecutor; - - private String level; - - @Mock - private Artifact artifact; - - @Mock - private MavenXpp3Reader mavenXpp3Reader; - - @Mock - private Model pomModel; - - @Mock - private MojoExecutor.Element configElement; - - @Mock - private MojoExecutor.Element sourceElement; - - @Mock - private Xpp3Dom pluginConfig; - - @Mock - private MojoExecutor.ExecutionEnvironment env; - - @Mock - private Dependency checkstyle; - - @Mock - private Dependency sevntu; - - @Mock - private Dependency ruleset; - - @Before - public void setUp() { - MockitoAnnotations.initMocks(this); - level = "test level"; - checkstyleExecutor = new DefaultCheckstyleExecutor(pluginExecutor, mavenXpp3Reader); - checkstyleExecutor.setLog(log); - } - - @Test - public void canPerformCheck() - throws MojoFailureException, MojoExecutionException, IOException, XmlPullParserException { - //given - final CheckConfiguration configuration = CheckConfiguration.builder() - .mavenProject(mavenProject) - .mavenSession(mavenSession) - .artifactRepository(artifactRepository) - .pluginManager(pluginManager) - .rulesetVersion("ruleset version") - .level(level) - .build(); - - given(artifactRepository.find(any())).willReturn(artifact); - final File artifactFile = folder.newFile("pom.xml"); - given(artifact.getFile()).willReturn(artifactFile); - given(mavenXpp3Reader.read(any(FileReader.class))).willReturn(pomModel); - final Properties properties = new Properties(); - given(pomModel.getProperties()).willReturn(properties); - given(pluginExecutor.element(eq("configLocation"), any())).willReturn(configElement); - given(pluginExecutor.element(eq("sourceDirectory"), any())).willReturn(sourceElement); - given(pluginExecutor.configuration(configElement, sourceElement)).willReturn(pluginConfig); - given(pluginExecutor.executionEnvironment(configuration)).willReturn(env); - final List dependencies = new ArrayList<>(); - dependencies.add(checkstyle); - dependencies.add(sevntu); - dependencies.add(ruleset); - final String pluginVersion = "plugin version"; - final String checkstyleVersion = "checkstyle version"; - final String sevntuVersion = "sevntu version"; - final String rulesetVersion = "ruleset version"; - given(pluginExecutor.dependencies(checkstyle, sevntu, ruleset)).willReturn(dependencies); - given(pluginExecutor.dependency("com.puppycrawl.tools", "checkstyle", checkstyleVersion)).willReturn( - checkstyle); - given(pluginExecutor.dependency( - "com.github.sevntu.checkstyle", "sevntu-checkstyle-maven-plugin", sevntuVersion)).willReturn(sevntu); - given(pluginExecutor.dependency("net.kemitix", "kemtiix-checkstyle-ruleset", rulesetVersion)).willReturn( - ruleset); - properties.setProperty("maven-checkstyle-plugin.version", pluginVersion); - properties.setProperty("checkstyle.version", checkstyleVersion); - properties.setProperty("sevntu.version", sevntuVersion); - given(pluginExecutor.plugin( - eq("org.apache.maven.plugins"), eq("maven-checkstyle-plugin"), eq(pluginVersion), any())).willReturn( - rulesetPlugin); - //when - checkstyleExecutor.performCheck(configuration); - //then - - then(pluginExecutor).should() - .executeMojo(rulesetPlugin, "check", pluginConfig, env); - } -} diff --git a/plugin/src/test/java/net/kemitix/checkstyle/ruleset/plugin/DefaultPluginExecutorTest.java b/plugin/src/test/java/net/kemitix/checkstyle/ruleset/plugin/DefaultPluginExecutorTest.java deleted file mode 100644 index ba5f6b2..0000000 --- a/plugin/src/test/java/net/kemitix/checkstyle/ruleset/plugin/DefaultPluginExecutorTest.java +++ /dev/null @@ -1,177 +0,0 @@ -package net.kemitix.checkstyle.ruleset.plugin; - -import org.apache.maven.execution.MavenSession; -import org.apache.maven.model.Dependency; -import org.apache.maven.model.Plugin; -import org.apache.maven.plugin.BuildPluginManager; -import org.apache.maven.plugin.InvalidPluginDescriptorException; -import org.apache.maven.plugin.MojoExecutionException; -import org.apache.maven.plugin.MojoFailureException; -import org.apache.maven.plugin.PluginConfigurationException; -import org.apache.maven.plugin.PluginDescriptorParsingException; -import org.apache.maven.plugin.PluginManagerException; -import org.apache.maven.plugin.PluginNotFoundException; -import org.apache.maven.plugin.PluginResolutionException; -import org.apache.maven.plugin.descriptor.MojoDescriptor; -import org.apache.maven.plugin.descriptor.PluginDescriptor; -import org.apache.maven.project.MavenProject; -import org.codehaus.plexus.configuration.PlexusConfiguration; -import org.codehaus.plexus.util.xml.Xpp3Dom; -import org.junit.Before; -import org.junit.Test; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; -import org.twdata.maven.mojoexecutor.MojoExecutor; - -import java.util.List; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.BDDMockito.given; -import static org.mockito.BDDMockito.then; - -/** - * Tests for {@link DefaultPluginExecutor}. - * - * @author Paul Campbell (pcampbell@kemitix.net) - */ -public class DefaultPluginExecutorTest { - - private PluginExecutor pluginExecutor; - - @Mock - private MavenProject mavenProject; - - @Mock - private MavenSession mavenSession; - - @Mock - private BuildPluginManager pluginManager; - - @Mock - private Plugin plugin; - - @Mock - private Xpp3Dom configuration; - - @Mock - private PluginDescriptor pluginDescriptor; - - @Mock - private MojoDescriptor mojoDescriptor; - - @Mock - private PlexusConfiguration mojoConfiguration; - - @Before - public void setUp() { - MockitoAnnotations.initMocks(this); - pluginExecutor = new DefaultPluginExecutor(); - } - - @Test - public void canElement() { - //when - final MojoExecutor.Element element = pluginExecutor.element("name", "value"); - //then - assertThat(element.toDom()).returns("name", Xpp3Dom::getName) - .returns("value", Xpp3Dom::getValue); - } - - @Test - public void canConfiguration() { - //given - final MojoExecutor.Element alpha = pluginExecutor.element("alpha", "first"); - final MojoExecutor.Element beta = pluginExecutor.element("beta", "second"); - //when - final Xpp3Dom configuration = pluginExecutor.configuration(alpha, beta); - //then - assertThat(configuration.getChild("alpha")).returns("alpha", Xpp3Dom::getName) - .returns("first", Xpp3Dom::getValue); - assertThat(configuration.getChild("beta")).returns("beta", Xpp3Dom::getName) - .returns("second", Xpp3Dom::getValue); - } - - @Test - public void canExecutionEnvironment() { - //given - final CheckConfiguration configuration = createCheckConfiguration(); - //when - final MojoExecutor.ExecutionEnvironment environment = pluginExecutor.executionEnvironment(configuration); - //then - assertThat(environment).returns(mavenProject, MojoExecutor.ExecutionEnvironment::getMavenProject) - .returns(mavenSession, MojoExecutor.ExecutionEnvironment::getMavenSession) - .returns(pluginManager, MojoExecutor.ExecutionEnvironment::getPluginManager); - } - - private CheckConfiguration createCheckConfiguration() { - return CheckConfiguration.builder() - .mavenProject(mavenProject) - .mavenSession(mavenSession) - .pluginManager(pluginManager) - .build(); - } - - @Test - public void canExecuteMojo() - throws MojoExecutionException, InvalidPluginDescriptorException, PluginResolutionException, - PluginDescriptorParsingException, PluginNotFoundException, PluginManagerException, - PluginConfigurationException, MojoFailureException { - //given - final String goal = "check"; - final MojoExecutor.ExecutionEnvironment environment = - pluginExecutor.executionEnvironment(createCheckConfiguration()); - given(mavenSession.getCurrentProject()).willReturn(mavenProject); - given(pluginManager.loadPlugin(eq(plugin), any(), any())).willReturn(pluginDescriptor); - given(pluginDescriptor.getMojo(goal)).willReturn(mojoDescriptor); - given(mojoDescriptor.getMojoConfiguration()).willReturn(mojoConfiguration); - given(mojoConfiguration.getAttributeNames()).willReturn(new String[]{}); - given(mojoConfiguration.getChildren()).willReturn(new PlexusConfiguration[]{}); - //when - pluginExecutor.executeMojo(plugin, goal, configuration, environment); - //then - then(pluginManager).should() - .executeMojo(eq(mavenSession), any()); - } - - @Test - public void canDependency() { - //given - final String groupId = "groupId"; - final String artifactId = "artifactId"; - final String version = "version"; - //when - final Dependency dependency = pluginExecutor.dependency(groupId, artifactId, version); - //then - assertThat(dependency).returns(groupId, Dependency::getGroupId) - .returns(artifactId, Dependency::getArtifactId) - .returns(version, Dependency::getVersion); - } - - @Test - public void canDependencies() { - //given - final Dependency dependency = pluginExecutor.dependency("groupId", "artifactId", "version"); - //when - final List dependencies = pluginExecutor.dependencies(dependency); - //then - assertThat(dependencies).containsExactly(dependency); - } - - @Test - public void canPlugin() { - //given - final String groupId = "groupId"; - final String artifactId = "artifactId"; - final String version = "version"; - final List dependencies = pluginExecutor.dependencies(pluginExecutor.dependency("pg", "pa", "pv")); - //when - final Plugin plugin = pluginExecutor.plugin(groupId, artifactId, version, dependencies); - //then - assertThat(plugin).returns(groupId, Plugin::getGroupId) - .returns(artifactId, Plugin::getArtifactId) - .returns(version, Plugin::getVersion) - .returns(dependencies, Plugin::getDependencies); - } -} diff --git a/pom.xml b/pom.xml index 0510099..a244e9f 100644 --- a/pom.xml +++ b/pom.xml @@ -36,7 +36,6 @@ builder ruleset - plugin regressions From 020635841ad4c6e442d7904c973017571f8d308b Mon Sep 17 00:00:00 2001 From: Paul Campbell Date: Wed, 3 Jan 2018 20:26:36 +0000 Subject: [PATCH 04/26] Remove kemitix-parent from pom ancestry --- builder/pom.xml | 9 +++++++++ pom.xml | 24 ++++++++++++++++++------ 2 files changed, 27 insertions(+), 6 deletions(-) diff --git a/builder/pom.xml b/builder/pom.xml index 3e57205..41955e9 100644 --- a/builder/pom.xml +++ b/builder/pom.xml @@ -3,6 +3,9 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 + + 1.16.18 + net.kemitix @@ -32,6 +35,12 @@ 2016 + + org.projectlombok + lombok + ${lombok.version} + provided + org.springframework.boot spring-boot-starter diff --git a/pom.xml b/pom.xml index a244e9f..ab36d19 100644 --- a/pom.xml +++ b/pom.xml @@ -3,13 +3,8 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - - net.kemitix - kemitix-parent - 3.0.0 - - + net.kemitix kemitix-checkstyle-ruleset-parent 3.4.0-SNAPSHOT pom @@ -18,6 +13,7 @@ Parent POM for the Kemitix Checkstyle Ruleset and it's Builder + 1.8 2.17 8.0 1.24.1 @@ -54,6 +50,22 @@ 2016 + + + The MIT License (MIT) + https://opensource.org/licenses/MIT + + + + + + Paul Campbell + pcampbell@kemitix.net + Kemitix + https://github.com/kemitix/ + + + From a115a76458fbf48c0b26c71197f8481aa15c778b Mon Sep 17 00:00:00 2001 From: Paul Campbell Date: Wed, 3 Jan 2018 20:30:04 +0000 Subject: [PATCH 05/26] Use tiles in ruleset --- pom.xml | 3 ++ ruleset/pom.xml | 100 ++++++++---------------------------------------- 2 files changed, 20 insertions(+), 83 deletions(-) diff --git a/pom.xml b/pom.xml index ab36d19..73c88e1 100644 --- a/pom.xml +++ b/pom.xml @@ -13,7 +13,10 @@ Parent POM for the Kemitix Checkstyle Ruleset and it's Builder + 2.10 + 0.1.1 1.8 + 2.17 8.0 1.24.1 diff --git a/ruleset/pom.xml b/ruleset/pom.xml index bed0366..978c095 100644 --- a/ruleset/pom.xml +++ b/ruleset/pom.xml @@ -16,87 +16,21 @@ Kemitix Checkstyle :: Ruleset Checkstyle Ruleset for use by packages derived from kemitix-parent - - 2.10.4 - 3.0.1 - 1.6 - 2.8.2 - - - - - release - - - - - org.apache.maven.plugins - maven-javadoc-plugin - ${maven-javadoc-plugin.version} - - - attach-javadocs - verify - - jar - - - - - - - org.apache.maven.plugins - maven-source-plugin - ${maven-source-plugin.version} - - - attach-sources - verify - - jar-no-fork - - - - - - - org.apache.maven.plugins - maven-gpg-plugin - ${maven-gpg-plugin.version} - - ${gpg.passphrase} - - - - sign-artifacts - verify - - sign - - - - - - - org.apache.maven.plugins - maven-deploy-plugin - ${maven-deploy-plugin.version} - - - - - - - - - sonatype-nexus-snapshots - Sonatype Nexus Snapshots - https://oss.sonatype.org/content/repositories/snapshots/ - - - sonatype-nexus-staging - Nexus Release Repository - https://oss.sonatype.org/service/local/staging/deploy/maven2/ - - + + + + io.repaint.maven + tiles-maven-plugin + ${tiles-maven-plugin.version} + true + + + net.kemitix.tiles:maven-plugins-tile:${kemitix-tiles.version} + net.kemitix.tiles:enforcer-tile:${kemitix-tiles.version} + net.kemitix.tiles:release-tile:${kemitix-tiles.version} + + + + + From 70423a81c67421f03a0e5ed06ddc241ad41c1335 Mon Sep 17 00:00:00 2001 From: Paul Campbell Date: Wed, 3 Jan 2018 20:34:29 +0000 Subject: [PATCH 06/26] Use tiles in regressions - with disabled ruleset Need to figure out how to exclude the generated Immutables class from checkstyle analysis --- regressions/pom.xml | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/regressions/pom.xml b/regressions/pom.xml index 2213e86..24f9dd5 100644 --- a/regressions/pom.xml +++ b/regressions/pom.xml @@ -14,16 +14,36 @@ ${project.version} - 5-complexity + 0-disabled + net.kemitix.checkstyle.regressions true + 2.5.6 org.immutables value + ${immutables-value.version} provided + + + + + io.repaint.maven + tiles-maven-plugin + ${tiles-maven-plugin.version} + true + + + net.kemitix.tiles:all-tiles:${kemitix-tiles.version} + + + + + + From 372b8e0f3c561caeede54f8d35898634ca8e8aed Mon Sep 17 00:00:00 2001 From: Paul Campbell Date: Wed, 3 Jan 2018 20:35:06 +0000 Subject: [PATCH 07/26] Use tiles in builder --- builder/pom.xml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/builder/pom.xml b/builder/pom.xml index 41955e9..9bf41e3 100644 --- a/builder/pom.xml +++ b/builder/pom.xml @@ -87,6 +87,17 @@ + + io.repaint.maven + tiles-maven-plugin + ${tiles-maven-plugin.version} + true + + + net.kemitix.tiles:all-tiles:${kemitix-tiles.version} + + + org.springframework.boot spring-boot-maven-plugin From 87358bfe9205359ce638c0bd48005fbd90508780 Mon Sep 17 00:00:00 2001 From: Paul Campbell Date: Wed, 3 Jan 2018 20:35:56 +0000 Subject: [PATCH 08/26] Update builder tests --- .../ruleset/builder/CheckstyleWriter.java | 5 +- .../builder/DefaultRuleClassLocator.java | 2 + .../ruleset/builder/CheckstyleWriterTest.java | 13 ++--- .../builder/DefaultRuleClassLocatorTest.java | 52 ++++++++++++++++--- .../ruleset/builder/RuleLevelTest.java | 25 +++++++++ .../ruleset/builder/RulesPropertiesTest.java | 6 +-- 6 files changed, 83 insertions(+), 20 deletions(-) create mode 100644 builder/src/test/java/net/kemitix/checkstyle/ruleset/builder/RuleLevelTest.java diff --git a/builder/src/main/java/net/kemitix/checkstyle/ruleset/builder/CheckstyleWriter.java b/builder/src/main/java/net/kemitix/checkstyle/ruleset/builder/CheckstyleWriter.java index 95a5a04..5c9e137 100644 --- a/builder/src/main/java/net/kemitix/checkstyle/ruleset/builder/CheckstyleWriter.java +++ b/builder/src/main/java/net/kemitix/checkstyle/ruleset/builder/CheckstyleWriter.java @@ -22,7 +22,6 @@ package net.kemitix.checkstyle.ruleset.builder; import com.speedment.common.mapstream.MapStream; -import lombok.NonNull; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import lombok.val; @@ -58,13 +57,13 @@ class CheckstyleWriter implements CommandLineRunner { private final RuleClassLocator ruleClassLocator; @Override - public void run(final String... args) throws Exception { + public void run(final String... args) { Stream.of(RuleLevel.values()) .filter(level -> !level.equals(RuleLevel.UNSPECIFIED)) .forEach(this::writeCheckstyleFile); } - private void writeCheckstyleFile(@NonNull final RuleLevel ruleLevel) { + private void writeCheckstyleFile(final RuleLevel ruleLevel) { val xmlFile = outputProperties.getDirectory() .resolve(outputProperties.getRulesetFiles() .get(ruleLevel)); diff --git a/builder/src/main/java/net/kemitix/checkstyle/ruleset/builder/DefaultRuleClassLocator.java b/builder/src/main/java/net/kemitix/checkstyle/ruleset/builder/DefaultRuleClassLocator.java index 6a91c6b..0df04a6 100644 --- a/builder/src/main/java/net/kemitix/checkstyle/ruleset/builder/DefaultRuleClassLocator.java +++ b/builder/src/main/java/net/kemitix/checkstyle/ruleset/builder/DefaultRuleClassLocator.java @@ -28,6 +28,7 @@ import javax.annotation.PostConstruct; import java.util.AbstractMap; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -62,6 +63,7 @@ public class DefaultRuleClassLocator implements RuleClassLocator { } private String getCanonicalClassName(final RuleSource source, final String name) { + Objects.requireNonNull(checkClasses, "init() method not called"); return checkClasses.get(source) .stream() .sorted() diff --git a/builder/src/test/java/net/kemitix/checkstyle/ruleset/builder/CheckstyleWriterTest.java b/builder/src/test/java/net/kemitix/checkstyle/ruleset/builder/CheckstyleWriterTest.java index 9f057ff..a5ca9e0 100644 --- a/builder/src/test/java/net/kemitix/checkstyle/ruleset/builder/CheckstyleWriterTest.java +++ b/builder/src/test/java/net/kemitix/checkstyle/ruleset/builder/CheckstyleWriterTest.java @@ -7,8 +7,6 @@ import org.junit.Before; import org.junit.Test; import org.junit.rules.ExpectedException; import org.junit.rules.TemporaryFolder; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; import java.io.IOException; import java.nio.charset.StandardCharsets; @@ -24,6 +22,7 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.mockito.ArgumentMatchers.any; import static org.mockito.BDDMockito.given; +import static org.mockito.Mockito.mock; /** * Tests for {@link CheckstyleWriter}. @@ -58,12 +57,10 @@ public class CheckstyleWriterTest { private Path outputDirectory; - @Mock - private RuleClassLocator ruleClassLocator; + private RuleClassLocator ruleClassLocator = mock(RuleClassLocator.class); @Before public void setUp() throws Exception { - MockitoAnnotations.initMocks(this); ruleName = "RegexpOnFilename"; ruleClassname = "com.puppycrawl.tools.checkstyle.checks.regexp.RegexpOnFilenameCheck"; outputProperties = new OutputProperties(); @@ -90,7 +87,7 @@ public class CheckstyleWriterTest { given(ruleClassLocator.apply(any())).willReturn(ruleClassname); } - private Map.Entry getOutputFile(final RuleLevel level) throws IOException { + private Map.Entry getOutputFile(final RuleLevel level) { final String xmlFile = String.format("checkstyle-%s.xml", level.toString()); return new AbstractMap.SimpleImmutableEntry<>(level, xmlFile); } @@ -202,7 +199,7 @@ public class CheckstyleWriterTest { // throw RTE if template not found @Test - public void throwRteIfTemplateNotFound() throws Exception { + public void throwRteIfTemplateNotFound() { //given templateProperties.setCheckstyleXml(Paths.get("garbage")); //when @@ -214,7 +211,7 @@ public class CheckstyleWriterTest { // throw RTE if error writing file @Test - public void throwRteIfErrorWritingFile() throws Exception { + public void throwRteIfErrorWritingFile() { //given final String imaginary = String.join(FILE_SEPARATOR, "", "..", "imaginary"); outputProperties.setDirectory(Paths.get(imaginary)); diff --git a/builder/src/test/java/net/kemitix/checkstyle/ruleset/builder/DefaultRuleClassLocatorTest.java b/builder/src/test/java/net/kemitix/checkstyle/ruleset/builder/DefaultRuleClassLocatorTest.java index e8ea62a..a342ae6 100644 --- a/builder/src/test/java/net/kemitix/checkstyle/ruleset/builder/DefaultRuleClassLocatorTest.java +++ b/builder/src/test/java/net/kemitix/checkstyle/ruleset/builder/DefaultRuleClassLocatorTest.java @@ -2,14 +2,15 @@ package net.kemitix.checkstyle.ruleset.builder; import org.junit.Before; import org.junit.Test; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; import java.util.Collections; import java.util.List; import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatNullPointerException; +import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.mockito.BDDMockito.given; +import static org.mockito.Mockito.mock; /** * Tests for {@link DefaultRuleClassLocator}. @@ -20,17 +21,15 @@ public class DefaultRuleClassLocatorTest { private DefaultRuleClassLocator subject; - @Mock - private PackageScanner packageScanner; + private PackageScanner packageScanner = mock(PackageScanner.class); @Before public void setUp() { - MockitoAnnotations.initMocks(this); subject = new DefaultRuleClassLocator(packageScanner); } @Test - public void canLookupRule() { + public void canLookupRuleWithClassNameEndingInCheck() { //given final String rulename = "RegexpOnFilename"; final String expected = "com.puppycrawl.tools.checkstyle.checks.regexp.RegexpOnFilenameCheck"; @@ -46,6 +45,47 @@ public class DefaultRuleClassLocatorTest { assertThat(result).isEqualTo(expected); } + @Test + public void canLookupRuleWithClassNameMatchingRuleName() { + //given + final String rulename = "RegexpOnFilename"; + final String expected = "com.puppycrawl.tools.checkstyle.checks.regexp.RegexpOnFilename"; + final List checkstyleClasses = Collections.singletonList(expected); + final List sevntuClasses = Collections.emptyList(); + given(packageScanner.apply(RuleSource.CHECKSTYLE)).willReturn(checkstyleClasses.stream()); + given(packageScanner.apply(RuleSource.SEVNTU)).willReturn(sevntuClasses.stream()); + subject.init(); + final Rule rule = createCheckstyleRule(rulename); + //when + final String result = subject.apply(rule); + //then + assertThat(result).isEqualTo(expected); + } + + @Test + public void throwsExceptionWhenCheckstyleClassNotFound() { + //given + final String rulename = "RegexpOnFilename"; + final String expected = "com.puppycrawl.tools.checkstyle.checks.regexp.RegexpOnFilenameNoMatch"; + final List checkstyleClasses = Collections.singletonList(expected); + final List sevntuClasses = Collections.emptyList(); + given(packageScanner.apply(RuleSource.CHECKSTYLE)).willReturn(checkstyleClasses.stream()); + given(packageScanner.apply(RuleSource.SEVNTU)).willReturn(sevntuClasses.stream()); + subject.init(); + final Rule rule = createCheckstyleRule(rulename); + //then + assertThatThrownBy(() -> subject.apply(rule)) + .isInstanceOf(CheckstyleClassNotFoundException.class) + .hasMessage("No class found to implement RegexpOnFilename"); + } + + @Test + public void throwsNullPointerExceptionWhenInitNotCalled() { + assertThatNullPointerException() + .isThrownBy(() -> subject.apply(new Rule())) + .withMessage("init() method not called"); + } + private Rule createCheckstyleRule(final String rulename) { final Rule rule = new Rule(); rule.setSource(RuleSource.CHECKSTYLE); diff --git a/builder/src/test/java/net/kemitix/checkstyle/ruleset/builder/RuleLevelTest.java b/builder/src/test/java/net/kemitix/checkstyle/ruleset/builder/RuleLevelTest.java new file mode 100644 index 0000000..fce27f6 --- /dev/null +++ b/builder/src/test/java/net/kemitix/checkstyle/ruleset/builder/RuleLevelTest.java @@ -0,0 +1,25 @@ +package net.kemitix.checkstyle.ruleset.builder; + +import org.junit.Test; + +import java.util.stream.Stream; + +import static org.assertj.core.api.Assertions.assertThat; + +public class RuleLevelTest { + + private final String[] ruleLevelStrings = + {"DISABLED", "LAYOUT", "NAMING", "JAVADOC", "TWEAKS", "COMPLEXITY", "UNSPECIFIED"}; + + @Test + public void valuesToString() { + assertThat(Stream.of(RuleLevel.values()) + .map(RuleLevel::toString)).containsExactly(ruleLevelStrings); + } + + @Test + public void stringValueOf() { + assertThat(Stream.of(ruleLevelStrings) + .map(RuleLevel::valueOf)).containsExactly(RuleLevel.values()); + } +} diff --git a/builder/src/test/java/net/kemitix/checkstyle/ruleset/builder/RulesPropertiesTest.java b/builder/src/test/java/net/kemitix/checkstyle/ruleset/builder/RulesPropertiesTest.java index 119ce11..1dd4136 100644 --- a/builder/src/test/java/net/kemitix/checkstyle/ruleset/builder/RulesPropertiesTest.java +++ b/builder/src/test/java/net/kemitix/checkstyle/ruleset/builder/RulesPropertiesTest.java @@ -15,16 +15,16 @@ public class RulesPropertiesTest { private RulesProperties rulesProperties; @Before - public void setUp() throws Exception { + public void setUp() { rulesProperties = new RulesProperties(); } @Test - public void getEmpty() throws Exception { + public void getEmpty() { assertThat(rulesProperties.getRules()).isEmpty(); } @Test - public void getContent() throws Exception { + public void getContent() { //given final Rule rule = new Rule(); //when From 97d0cef4e75efe88c841c41d76353916f519096e Mon Sep 17 00:00:00 2001 From: Paul Campbell Date: Fri, 5 Jan 2018 22:21:19 +0000 Subject: [PATCH 09/26] Mark regressions to run with checkstyle disbled for normal builds Enable checkstyle when checking that regressions are being caught. --- regressions/pom.xml | 3 +-- .../regressions/AvoidDefaultSerializableInInnerClasses.java | 1 - .../main/java/net/kemitix/checkstyle/regressions/Basic.java | 2 +- .../checkstyle/regressions/EmptyPublicCtorInClass.java | 1 - .../checkstyle/regressions/ExplicitInitialization.java | 4 ---- .../checkstyle/regressions/FinalizeImplementation.java | 2 +- .../kemitix/checkstyle/regressions/MoveVariableInsideIf.java | 1 - 7 files changed, 3 insertions(+), 11 deletions(-) diff --git a/regressions/pom.xml b/regressions/pom.xml index 24f9dd5..6af0db7 100644 --- a/regressions/pom.xml +++ b/regressions/pom.xml @@ -13,7 +13,7 @@ Kemitix Checkstyle :: Ruleset :: Regression Tests - ${project.version} + 0-disabled net.kemitix.checkstyle.regressions true @@ -29,7 +29,6 @@ - diff --git a/regressions/src/main/java/net/kemitix/checkstyle/regressions/AvoidDefaultSerializableInInnerClasses.java b/regressions/src/main/java/net/kemitix/checkstyle/regressions/AvoidDefaultSerializableInInnerClasses.java index 1ac2c72..51f1157 100644 --- a/regressions/src/main/java/net/kemitix/checkstyle/regressions/AvoidDefaultSerializableInInnerClasses.java +++ b/regressions/src/main/java/net/kemitix/checkstyle/regressions/AvoidDefaultSerializableInInnerClasses.java @@ -33,7 +33,6 @@ public class AvoidDefaultSerializableInInnerClasses { /** * Inner class should not use default implementations of {@code readObject()} and {@code writeObject()}. */ - @SuppressWarnings("avoiddefaultserializableininnerclasses") public class InnerClass implements Serializable { } diff --git a/regressions/src/main/java/net/kemitix/checkstyle/regressions/Basic.java b/regressions/src/main/java/net/kemitix/checkstyle/regressions/Basic.java index 050b9c6..f269c44 100644 --- a/regressions/src/main/java/net/kemitix/checkstyle/regressions/Basic.java +++ b/regressions/src/main/java/net/kemitix/checkstyle/regressions/Basic.java @@ -22,7 +22,7 @@ package net.kemitix.checkstyle.regressions; /** - * Sample class. + * Sample class with no checkstyle issues. * * @author Paul Campbell (pcampbell@kemitix.net) */ diff --git a/regressions/src/main/java/net/kemitix/checkstyle/regressions/EmptyPublicCtorInClass.java b/regressions/src/main/java/net/kemitix/checkstyle/regressions/EmptyPublicCtorInClass.java index 1ce63b0..0c49972 100644 --- a/regressions/src/main/java/net/kemitix/checkstyle/regressions/EmptyPublicCtorInClass.java +++ b/regressions/src/main/java/net/kemitix/checkstyle/regressions/EmptyPublicCtorInClass.java @@ -31,7 +31,6 @@ public class EmptyPublicCtorInClass { /** * Useless empty public constructors. */ - @SuppressWarnings("emptypublicctorinclass") EmptyPublicCtorInClass() { } diff --git a/regressions/src/main/java/net/kemitix/checkstyle/regressions/ExplicitInitialization.java b/regressions/src/main/java/net/kemitix/checkstyle/regressions/ExplicitInitialization.java index 8742195..9c20896 100644 --- a/regressions/src/main/java/net/kemitix/checkstyle/regressions/ExplicitInitialization.java +++ b/regressions/src/main/java/net/kemitix/checkstyle/regressions/ExplicitInitialization.java @@ -37,16 +37,12 @@ class ExplicitInitialization { private Object validObject = new Object(); - @SuppressWarnings("explicitinitialization") private Boolean invalidBoolean = null; - @SuppressWarnings("explicitinitialization") private Integer invalidInteger = null; - @SuppressWarnings("explicitinitialization") private String invalidString = null; - @SuppressWarnings("explicitinitialization") private Object invalidObject = null; } diff --git a/regressions/src/main/java/net/kemitix/checkstyle/regressions/FinalizeImplementation.java b/regressions/src/main/java/net/kemitix/checkstyle/regressions/FinalizeImplementation.java index 738f7de..849afb7 100644 --- a/regressions/src/main/java/net/kemitix/checkstyle/regressions/FinalizeImplementation.java +++ b/regressions/src/main/java/net/kemitix/checkstyle/regressions/FinalizeImplementation.java @@ -31,7 +31,7 @@ class FinalizeImplementation { /** * Negates effect of superclass finalize. */ - @SuppressWarnings({"PMD.EmptyFinalizer", "nofinalizer", "finalizeimplementation"}) + @SuppressWarnings("PMD.EmptyFinalizer") protected void finalize() { // doesn't call super.finalize() } diff --git a/regressions/src/main/java/net/kemitix/checkstyle/regressions/MoveVariableInsideIf.java b/regressions/src/main/java/net/kemitix/checkstyle/regressions/MoveVariableInsideIf.java index 6e6151f..81c76d3 100644 --- a/regressions/src/main/java/net/kemitix/checkstyle/regressions/MoveVariableInsideIf.java +++ b/regressions/src/main/java/net/kemitix/checkstyle/regressions/MoveVariableInsideIf.java @@ -41,7 +41,6 @@ class MoveVariableInsideIf { * * @return value */ - @SuppressWarnings("movevariableinsideif") protected String invalid() { String variable = input.substring(1); if (condition) { From 5776ac35bb4e5ccc2817cf05acdf3a03d1c04fc1 Mon Sep 17 00:00:00 2001 From: Paul Campbell Date: Fri, 5 Jan 2018 22:44:24 +0000 Subject: [PATCH 10/26] Switch to using kemitix-travis-support --- .gitmodules | 3 +++ .travis-support | 1 + .travis.yml | 11 ++++++----- codesigning.asc.enc | Bin 0 -> 20752 bytes travis-ci/codesigning.asc.enc | Bin 20752 -> 0 bytes travis-ci/travis-coveralls-report.sh | 3 --- travis-ci/travis-deploy.sh | 18 ----------------- travis-ci/travis-settings.xml | 28 --------------------------- 8 files changed, 10 insertions(+), 54 deletions(-) create mode 100644 .gitmodules create mode 160000 .travis-support create mode 100644 codesigning.asc.enc delete mode 100644 travis-ci/codesigning.asc.enc delete mode 100755 travis-ci/travis-coveralls-report.sh delete mode 100755 travis-ci/travis-deploy.sh delete mode 100644 travis-ci/travis-settings.xml diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..c50d110 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule ".travis-support"] + path = .travis-support + url = https://github.com/kemitix/kemitix-travis-support.git diff --git a/.travis-support b/.travis-support new file mode 160000 index 0000000..b8593e5 --- /dev/null +++ b/.travis-support @@ -0,0 +1 @@ +Subproject commit b8593e541ba9a11447fa9559a83e5f99097ca4d2 diff --git a/.travis.yml b/.travis.yml index d43d3d8..0d1d54a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,11 +7,12 @@ cache: install: true script: "./mvnw clean install" after_success: -- "./travis-ci/travis-coveralls-report.sh" +- sh .travis-support/coveralls.sh - bash <(curl -s https://codecov.io/bash) -- "./travis-ci/travis-deploy.sh" +deploy: + provider: script + script: sh .travis-support/deploy.sh + on: + branch: master env: global: - - secure: Aq+1PsvZoRPi4/yvKfF9b7PFPb6BGwjBKwva3nJznT7yDO7H2QjpZEs8csvnobdNf5zCdSJGifcxhQjKpwD1YF5Y3Szw9bSFBE0UsNmuJY0Ls92fqSwEJmfs81gEs2VLgdXTP1jt4t2hzjyY77C1t3wQYjLebZ25tza2N6cl8xQDL9uq35kdgfE3oy/Alws7Kgf2rO7N5BibKTIau0a4qcRJIIOK/2/8hhCt/9ER9SgDwwmNeicfDQ9afau90ONqoKszhIiiOY3m2ml8UiZTCATTYr8FsiEd704sMWiWiwXoH1gCII8YZAvBv7gh2ZY6PC/BOaaqXpA3BULOFX2ROtauLFnFJANXUL7lHaclzXMjf/hLQBWgFeYomud1f7zaN4uS2ow+PdgMGeeh8qAv9Iri5u6+hS3sm4XPyIkFK9mlnLLVMDEtZkZZf4+YzyUp0Fxk02ShfBdjTvfWo7A1+RFuR+gy5lIYpqhof1AHEKiINFvs7mgmQarvNVbm+qT19vHwhvE5umovWw+k1vykO3/ulzE6u36aeNGpqCzEXmDRbxzmigDsQA0hMuiiaLcS7uh2YrSkG8N96Pd07U0DqiaCrTB7zqaBmCfMlLtdd2pJMyQXLksyxaGbxTcgC13s2ROUfuOzk40sA0nByILveht+NqrCxlYcwitWi/8ITZU= - - secure: fyBNtzMfKiERJWfvfSPr6jk/TKwHIM3H7EAjtr2SY18cyLz/oHVxp99x2pOkyZz5RVtMapmbKIil0eXP3+Ws2YqOTYHNPBCLNVSmkgBzB4NLiOYWE91OytFVDxeotRT++NvEkWXSjnFtfhpBw1UEfWyP/lkdA+qeOQwfh66mUydQ1Ic3xt/88GGvZwhuNk5fWW0UmlIQY5g7QnLZKf24w4vkkhhswDieNPUvNDjpv1ZamvTYYB8dhtzWmwOY6pTrEOXlFg7g8pgFA5IQHSeFSPKZEMdERkffeN5acXDA6cUsinzuwHcJ7ASlmbw2jWLwwyZFIDI+qDpJ1qK9XBg9eHNMiDlM9FMeEsHOy2CeFytnvVcJEhFlqdWeH8lIa1jNO8p4+5njJI1/kIjVXIzihuljYgenbGxhPZ+gyD1YtmFdu2zt3MLIhysdc92CCR+W46QPLWpI2tufaPm7lQ65/hLReNF6uS+EAi9d45kfczizDpCOn+oqxEYe5zLsZB0Di3zj3cEHxBqq46ROKuLCeXGnREro5H2YTz+HPOI7KVyYF+nvlEproGfcLImH9sxCQFaYXAU5Bv5fgOFa1qmMN3Ku+oMsmuo6LIJPclxcRjT7iy1Qxokgqe9A+fQEMhM24URndxjd8nu444taSm5/xxxF04gxM/Zk07/WXxNfuGo= - - secure: RYNyODJtcTu/A2pWOLGOfrcR3aiqFUpKk8NqScHlEX1uB1XoRlXl2EoXwD+8v4CPdTkEisz1cPUwFGMI+aq5qCN724Hyefvon5RV1bqbntDzbt8uaOaCVb2V0yXsrRXM4HHhbmEjZWlvZJtxf2Un9yxCOly3VOZh9UUMv/8sf+lp5ijOzFlLbcOXc5d+DbqhuuP7rypp34OXnDV6jo4qaeEbcucruo9ZS1kQ4vRKWQSpDCOuxYOaYF2lS2T3LNnrfhH/fXgwx1K/oSytwVZAw2Qcx+5m0A9lwB4c6Cn3BiJUv7QaCduWXhoMxudXh1spT6WzGFw8HqypmvfLt2+DQtUOKFlJz76Q8w+GpwJCtzbXNd6KHqIeL3o3Tq48FViB06aN4NceaFyj3POM+QEkozNao+DguKVaB5gzOFmPTC8QCf8U/2HRfyw2/2tAgK27loaolXumCg/yfvr0vPsX6B3dAAC2gbWemaiZxkue/Wivkx+3dRJvutcHBs/dkhvxL6nkOW4rY79dHcnl33Lmyf5UWkkoNkrcT4r+1eXYB5nRAkAnwVK8xlpMVTQNB6b2TXnrvqhoi2wTbWNyu0rSTDifgY1NTYGqA0w5hlZtUi7xqxa/i8qBvOJXX4wrvCL8JCDEvzzqJ4MJ6Ajwi67TVPjf8vb8nMW1hETDeuJ20jY= diff --git a/codesigning.asc.enc b/codesigning.asc.enc new file mode 100644 index 0000000000000000000000000000000000000000..7869c2d39c656c9ca6f77a9a3d3f0ca9f0a00052 GIT binary patch literal 20752 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ⅇ>;5{d5@GW1wplzH< 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 T!6w2Nyfz_4osNDJLU|-)i}h0X diff --git a/travis-ci/travis-coveralls-report.sh b/travis-ci/travis-coveralls-report.sh deleted file mode 100755 index aab1704..0000000 --- a/travis-ci/travis-coveralls-report.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env bash - -./mvnw --projects builder,plugin test jacoco:report coveralls:report diff --git a/travis-ci/travis-deploy.sh b/travis-ci/travis-deploy.sh deleted file mode 100755 index d5f7775..0000000 --- a/travis-ci/travis-deploy.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/usr/bin/env bash - -if [ "$TRAVIS_BRANCH" = 'master' ] && [ "$TRAVIS_PULL_REQUEST" == 'false' ]; then - echo "Preparing to deploy to nexus..." - openssl aes-256-cbc -K $encrypted_efec3258f55d_key -iv $encrypted_efec3258f55d_iv \ - -in travis-ci/codesigning.asc.enc -out travis-ci/codesigning.asc -d - echo "Signing key decrypted" - gpg --batch --fast-import travis-ci/codesigning.asc - echo "Signing key imported" - ./mvnw --projects .,plugin,ruleset --settings travis-ci/travis-settings.xml \ - -Dskip-Tests=true -P release -B deploy - echo "Deploy complete" -else - echo "Not deploying" - echo " TRAVIS_BRANCH: $TRAVIS_BRANCH" - echo " TRAVIS_PULL_REQUEST: $TRAVIS_PULL_REQUEST" -fi - diff --git a/travis-ci/travis-settings.xml b/travis-ci/travis-settings.xml deleted file mode 100644 index e2d8c63..0000000 --- a/travis-ci/travis-settings.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - sonatype-nexus-snapshots - kemitix - ${env.CI_DEPLOY_PASSWORD} - - - sonatype-nexus-staging - kemitix - ${env.CI_DEPLOY_PASSWORD} - - - - - gpg-sign - - true - - - gpg - ${env.CI_DEPLOY_GPG_KEYNAME} - ${env.CI_DEPLOY_GPG_PASSPHRASE} - - - - From fa9cc33a4d6029f36526dd0da1a09725f6b0ff32 Mon Sep 17 00:00:00 2001 From: Paul Campbell Date: Sat, 6 Jan 2018 08:17:38 +0000 Subject: [PATCH 11/26] Remove requirement for @auther in Type Javadoc --- builder/src/main/resources/application.yml | 2 -- builder/src/main/resources/rules/JavadocType.md | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/builder/src/main/resources/application.yml b/builder/src/main/resources/application.yml index b6f3195..9f298ad 100644 --- a/builder/src/main/resources/application.yml +++ b/builder/src/main/resources/application.yml @@ -451,8 +451,6 @@ rules: enabled: true source: CHECKSTYLE uri: http://checkstyle.sourceforge.net/config_javadoc.html#JavadocType - properties: - authorFormat: ^.+ (\S+@[\S.]+)$ - name: JavaNCSS parent: TREEWALKER diff --git a/builder/src/main/resources/rules/JavadocType.md b/builder/src/main/resources/rules/JavadocType.md index 982268a..100a1f0 100644 --- a/builder/src/main/resources/rules/JavadocType.md +++ b/builder/src/main/resources/rules/JavadocType.md @@ -1,2 +1,2 @@ -Checks the format for Javadoc for classes and enums. Javadoc must be present, not have any unknown tags and not missing any `@param` tags. The `@author` tag must have a name and, in brackets, an email address. +Checks the format for Javadoc for classes and enums. Javadoc must be present, not have any unknown tags and not missing any `@param` tags. From f20517a8e789225782cdf278512207b00312809a Mon Sep 17 00:00:00 2001 From: Paul Campbell Date: Sat, 6 Jan 2018 08:18:05 +0000 Subject: [PATCH 12/26] Disable Header check --- builder/src/main/resources/application.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/builder/src/main/resources/application.yml b/builder/src/main/resources/application.yml index 9f298ad..a0a716e 100644 --- a/builder/src/main/resources/application.yml +++ b/builder/src/main/resources/application.yml @@ -324,7 +324,7 @@ rules: name: Header parent: CHECKER level: LAYOUT - enabled: true + enabled: false source: CHECKSTYLE uri: http://checkstyle.sourceforge.net/config_header.html#Header properties: From e18668dea74a729a3183c850bb8f33519253ae4d Mon Sep 17 00:00:00 2001 From: Paul Campbell Date: Sat, 6 Jan 2018 08:18:23 +0000 Subject: [PATCH 13/26] Disable AvoidStarImport check --- builder/src/main/resources/application.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/builder/src/main/resources/application.yml b/builder/src/main/resources/application.yml index a0a716e..cfef9b7 100644 --- a/builder/src/main/resources/application.yml +++ b/builder/src/main/resources/application.yml @@ -101,7 +101,7 @@ rules: name: AvoidStarImport parent: TREEWALKER level: LAYOUT - enabled: true + enabled: false source: CHECKSTYLE uri: http://checkstyle.sourceforge.net/config_imports.html#AvoidStarImport - From 84013ee1aedada8e04e5c0f298c3170cfafcc549 Mon Sep 17 00:00:00 2001 From: Paul Campbell Date: Sat, 6 Jan 2018 08:18:39 +0000 Subject: [PATCH 14/26] Disable AvoidStaticImport check --- builder/src/main/resources/application.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/builder/src/main/resources/application.yml b/builder/src/main/resources/application.yml index cfef9b7..7fde44e 100644 --- a/builder/src/main/resources/application.yml +++ b/builder/src/main/resources/application.yml @@ -108,7 +108,7 @@ rules: name: AvoidStaticImport parent: TREEWALKER level: COMPLEXITY - enabled: true + enabled: false source: CHECKSTYLE uri: http://checkstyle.sourceforge.net/config_imports.html#AvoidStaticImport properties: From c8c6b1ae57f2979a375f9c27c48a55fe29a3e8f6 Mon Sep 17 00:00:00 2001 From: Paul Campbell Date: Sat, 6 Jan 2018 08:21:58 +0000 Subject: [PATCH 15/26] Disable JavadocPackage check --- builder/src/main/resources/application.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/builder/src/main/resources/application.yml b/builder/src/main/resources/application.yml index 7fde44e..5920a78 100644 --- a/builder/src/main/resources/application.yml +++ b/builder/src/main/resources/application.yml @@ -427,7 +427,7 @@ rules: name: JavadocPackage parent: CHECKER level: JAVADOC - enabled: true + enabled: false source: CHECKSTYLE uri: http://checkstyle.sourceforge.net/config_javadoc.html#JavadocPackage - From 309ace6c76a7c93adcab64e9042d54756a4da542 Mon Sep 17 00:00:00 2001 From: Paul Campbell Date: Sat, 6 Jan 2018 19:45:18 +0000 Subject: [PATCH 16/26] Specify lombok version in parent pom --- builder/pom.xml | 4 ---- pom.xml | 6 ++++++ 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/builder/pom.xml b/builder/pom.xml index 9bf41e3..14958c7 100644 --- a/builder/pom.xml +++ b/builder/pom.xml @@ -3,9 +3,6 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - - 1.16.18 - net.kemitix @@ -38,7 +35,6 @@ org.projectlombok lombok - ${lombok.version} provided diff --git a/pom.xml b/pom.xml index 73c88e1..f0f0723 100644 --- a/pom.xml +++ b/pom.xml @@ -23,6 +23,7 @@ Brussels-SR3 1.5.4.RELEASE + 1.16.18 2.3.5 1.0.0 4.3.0 @@ -88,6 +89,11 @@ pom import + + org.projectlombok + lombok + ${lombok.version} + com.speedment.common mapstream From 0399d8c0f36077d04d2f8bd13dc068f13aa41412 Mon Sep 17 00:00:00 2001 From: Paul Campbell Date: Sat, 6 Jan 2018 19:45:32 +0000 Subject: [PATCH 17/26] Upgrade kemitix-tiles to 0.2.0 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index f0f0723..f2d68f3 100644 --- a/pom.xml +++ b/pom.xml @@ -14,7 +14,7 @@ 2.10 - 0.1.1 + 0.2.0 1.8 2.17 From 023717a29379ec069c3991f939c2d3338d537484 Mon Sep 17 00:00:00 2001 From: Paul Campbell Date: Sat, 6 Jan 2018 19:45:53 +0000 Subject: [PATCH 18/26] Upgrade checkstyle to 8.7 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index f2d68f3..dda6be8 100644 --- a/pom.xml +++ b/pom.xml @@ -18,8 +18,8 @@ 1.8 2.17 - 8.0 1.24.1 + 8.7 Brussels-SR3 1.5.4.RELEASE From 51f6025271b67869f0879765b7dfdc7f30373af3 Mon Sep 17 00:00:00 2001 From: Paul Campbell Date: Sat, 6 Jan 2018 19:46:12 +0000 Subject: [PATCH 19/26] Upgrade sevntu to 1.26.0 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index dda6be8..331233a 100644 --- a/pom.xml +++ b/pom.xml @@ -18,8 +18,8 @@ 1.8 2.17 - 1.24.1 8.7 + 1.26.0 Brussels-SR3 1.5.4.RELEASE From 2fb22ec10b1a2c52d0e0c0891464a4befbb1a4aa Mon Sep 17 00:00:00 2001 From: Paul Campbell Date: Sat, 6 Jan 2018 19:46:27 +0000 Subject: [PATCH 20/26] Upgrade Spring Platform to Burssels-SR6 (Spring Boot 1.5.9) --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 331233a..1b291e4 100644 --- a/pom.xml +++ b/pom.xml @@ -21,9 +21,9 @@ 8.7 1.26.0 - Brussels-SR3 - 1.5.4.RELEASE 1.16.18 + Brussels-SR6 + 1.5.9.RELEASE 2.3.5 1.0.0 4.3.0 From 9326227a29562f5f583fd7521e9ca65309ddd5a7 Mon Sep 17 00:00:00 2001 From: Paul Campbell Date: Sat, 6 Jan 2018 19:46:55 +0000 Subject: [PATCH 21/26] Upgrade mockito to 2.13.0 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 1b291e4..a4f4a9b 100644 --- a/pom.xml +++ b/pom.xml @@ -29,8 +29,8 @@ 4.3.0 2.5.6 - 2.8.47 3.8.0 + 2.13.0 From 1c714e4b53680c0edc33d0bb4f961494d387eec5 Mon Sep 17 00:00:00 2001 From: Paul Campbell Date: Sat, 6 Jan 2018 19:47:07 +0000 Subject: [PATCH 22/26] Upgrade assertj to 3.9.0 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index a4f4a9b..264263b 100644 --- a/pom.xml +++ b/pom.xml @@ -29,8 +29,8 @@ 4.3.0 2.5.6 - 3.8.0 2.13.0 + 3.9.0 From e8452d8c19e1318a038ee47351d899903752f3ce Mon Sep 17 00:00:00 2001 From: Paul Campbell Date: Sun, 7 Jan 2018 19:29:36 +0000 Subject: [PATCH 23/26] Make modules independant of root pom * Revert kemitix-maven-tiles to 0.1.1 until release * Move pom details from root to ruleset pom --- builder/pom.xml | 84 ++++++++++++++++++++++----------- pom.xml | 111 +------------------------------------------- regressions/pom.xml | 15 ++++-- ruleset/pom.xml | 39 ++++++++++++++-- 4 files changed, 103 insertions(+), 146 deletions(-) diff --git a/builder/pom.xml b/builder/pom.xml index 14958c7..25caf35 100644 --- a/builder/pom.xml +++ b/builder/pom.xml @@ -6,36 +6,59 @@ net.kemitix - kemitix-checkstyle-ruleset-parent - 3.4.0-SNAPSHOT + kemitix-parent + 5.0.3 + - kemitix-checkstyle-ruleset-builder + net.kemitix.checkstyle + ruleset-builder jar + 3.4.0-SNAPSHOT - Kemitix Checkstyle :: Ruleset :: Builder - Builder for the Kemitix Checkstyle Ruleset + + 1.8 + 2.10 + 0.1.1 - - https://github.com/kemitix/kemitix-checkstyle-ruleset/issues - GitHub Issues - + 8.7 + 1.26.0 + 1.16.18 + Brussels-SR6 + 1.5.9.RELEASE + 2.3.5 + 1.0.0 + 2.13.0 + 3.9.0 + - - https://github.com/kemitix/kemitix-checkstyle-ruleset - scm:git:git://github.com/kemitix/kemitix-checkstyle-ruleset.git - scm:git:git@github.com:kemitix/kemitix-checkstyle-ruleset.git - - - https://github.com/kemitix/kemitix-checkstyle-ruleset - - 2016 + + + + io.spring.platform + platform-bom + ${spring-platform.version} + pom + import + + + org.projectlombok lombok - provided + ${lombok.version} + + + org.mockito + mockito-core + ${mockito.version} + + + org.assertj + assertj-core + ${assertj.version} org.springframework.boot @@ -59,6 +82,7 @@ com.speedment.common mapstream + ${mapstream.version} org.springframework.boot @@ -68,16 +92,19 @@ me.andrz map-builder + ${map-builder.version} test com.puppycrawl.tools checkstyle + ${checkstyle.version} com.github.sevntu-checkstyle sevntu-checks + ${sevntu.version} @@ -90,7 +117,15 @@ true - net.kemitix.tiles:all-tiles:${kemitix-tiles.version} + net.kemitix.tiles:maven-plugins-tile:${kemitix-tiles.version} + net.kemitix.tiles:enforcer-tile:${kemitix-tiles.version} + net.kemitix.tiles:compiler-tile:${kemitix-tiles.version} + + net.kemitix.tiles:huntbugs-tile:${kemitix-tiles.version} + net.kemitix.tiles:pmd-tile:${kemitix-tiles.version} + net.kemitix.tiles:testing-tile:${kemitix-tiles.version} + net.kemitix.tiles:coverage-tile:${kemitix-tiles.version} + net.kemitix.tiles:pitest-tile:${kemitix-tiles.version} @@ -104,18 +139,11 @@ - - repackage - + repackage - - org.eluder.coveralls - coveralls-maven-plugin - ${coveralls-maven-plugin.version} - diff --git a/pom.xml b/pom.xml index 264263b..4738877 100644 --- a/pom.xml +++ b/pom.xml @@ -4,122 +4,15 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - net.kemitix - kemitix-checkstyle-ruleset-parent + net.kemitix.checkstyle + ruleset-root 3.4.0-SNAPSHOT pom - Kemitix Checkstyle :: Ruleset :: Parent - Parent POM for the Kemitix Checkstyle Ruleset and it's Builder - - - 2.10 - 0.2.0 - 1.8 - - 2.17 - 8.7 - 1.26.0 - - 1.16.18 - Brussels-SR6 - 1.5.9.RELEASE - 2.3.5 - 1.0.0 - 4.3.0 - 2.5.6 - - 2.13.0 - 3.9.0 - - builder ruleset regressions - - https://github.com/kemitix/kemitix-checkstyle-ruleset/issues - GitHub Issues - - - - scm:git:git@github.com:kemitix/kemitix-checkstyle-ruleset.git - scm:git:git@github.com:kemitix/kemitix-checkstyle-ruleset.git - git@github.com:kemitix/kemitix-checkstyle-ruleset.git - - - https://github.com/kemitix/kemitix-checkstyle-ruleset - - 2016 - - - - The MIT License (MIT) - https://opensource.org/licenses/MIT - - - - - - Paul Campbell - pcampbell@kemitix.net - Kemitix - https://github.com/kemitix/ - - - - - - - com.puppycrawl.tools - checkstyle - ${checkstyle.version} - - - com.github.sevntu-checkstyle - sevntu-checks - ${sevntu.version} - - - io.spring.platform - platform-bom - ${spring-platform.version} - pom - import - - - org.projectlombok - lombok - ${lombok.version} - - - com.speedment.common - mapstream - ${mapstream.version} - - - org.mockito - mockito-core - ${mockito.version} - - - org.assertj - assertj-core - ${assertj.version} - - - me.andrz - map-builder - ${map-builder.version} - - - org.immutables - value - ${immutables-value.version} - - - - diff --git a/regressions/pom.xml b/regressions/pom.xml index 6af0db7..fd4f078 100644 --- a/regressions/pom.xml +++ b/regressions/pom.xml @@ -5,14 +5,19 @@ 4.0.0 net.kemitix - kemitix-checkstyle-ruleset-parent - 3.4.0-SNAPSHOT + kemitix-parent + 5.0.3 + - kemitix-checkstyle-ruleset-regressions - Kemitix Checkstyle :: Ruleset :: Regression Tests + net.kemitix.checkstyle + ruleset-regressions + 3.4.0-SNAPSHOT + 2.10 + 0.1.1 + 0-disabled net.kemitix.checkstyle.regressions @@ -38,7 +43,7 @@ true - net.kemitix.tiles:all-tiles:${kemitix-tiles.version} + net.kemitix.tiles:checkstyle-tile:${kemitix-tiles.version} diff --git a/ruleset/pom.xml b/ruleset/pom.xml index 978c095..aa275de 100644 --- a/ruleset/pom.xml +++ b/ruleset/pom.xml @@ -6,15 +6,45 @@ net.kemitix - kemitix-checkstyle-ruleset-parent - 3.4.0-SNAPSHOT + kemitix-parent + 5.0.3 + kemitix-checkstyle-ruleset + 3.4.0-SNAPSHOT jar - Kemitix Checkstyle :: Ruleset - Checkstyle Ruleset for use by packages derived from kemitix-parent + Kemitix Checkstyle Ruleset + A Checkstyle Ruleset + https://github.com/kemitix/kemitix-checkstyle-ruleset + + + 2.10 + 0.1.1 + + + + + The MIT License (MIT) + https://opensource.org/licenses/MIT + + + + + + Paul Campbell + pcampbell@kemitix.net + Kemitix + https://github.com/kemitix/ + + + + + scm:git:git@github.com:kemitix/kemitix-checkstyle-ruleset.git + scm:git:git@github.com:kemitix/kemitix-checkstyle-ruleset.git + git@github.com:kemitix/kemitix-checkstyle-ruleset.git + @@ -33,4 +63,5 @@ + From 56d36da8c9278fd2c7e4fb0eeb550d48c356aa7f Mon Sep 17 00:00:00 2001 From: Paul Campbell Date: Sun, 7 Jan 2018 20:01:54 +0000 Subject: [PATCH 24/26] version set to 3.4.0 --- builder/pom.xml | 2 +- pom.xml | 2 +- regressions/pom.xml | 2 +- ruleset/pom.xml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/builder/pom.xml b/builder/pom.xml index 25caf35..f9cde35 100644 --- a/builder/pom.xml +++ b/builder/pom.xml @@ -14,7 +14,7 @@ net.kemitix.checkstyle ruleset-builder jar - 3.4.0-SNAPSHOT + 3.4.0 1.8 diff --git a/pom.xml b/pom.xml index 4738877..c7d9a5f 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ net.kemitix.checkstyle ruleset-root - 3.4.0-SNAPSHOT + 3.4.0 pom diff --git a/regressions/pom.xml b/regressions/pom.xml index fd4f078..d003dc9 100644 --- a/regressions/pom.xml +++ b/regressions/pom.xml @@ -12,7 +12,7 @@ net.kemitix.checkstyle ruleset-regressions - 3.4.0-SNAPSHOT + 3.4.0 2.10 diff --git a/ruleset/pom.xml b/ruleset/pom.xml index aa275de..1b8913f 100644 --- a/ruleset/pom.xml +++ b/ruleset/pom.xml @@ -12,7 +12,7 @@ kemitix-checkstyle-ruleset - 3.4.0-SNAPSHOT + 3.4.0 jar Kemitix Checkstyle Ruleset From 9982864c15399d21fcbcc931209a9a8841c86b61 Mon Sep 17 00:00:00 2001 From: Paul Campbell Date: Sun, 7 Jan 2018 20:05:28 +0000 Subject: [PATCH 25/26] CHANGELOG --- CHANGELOG | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index ef8fa5e..39bc793 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,17 @@ CHANGELOG ========= +3.4.0 +----- + +* Disable Header check +* Remove requirement for `@author` in Type Javadoc +* Disable AvoidStarImport check +* Disable AvoidStaticImport check +* Disable JavadocPackage check +* Upgrade `checkstyle` to 8.7 +* Upgrade `sevntu-checkstyle` to 1.26.0 + 3.3.0 ----- From 0a03122f803a255b4f2070249807232e9a8a6caa Mon Sep 17 00:00:00 2001 From: Paul Campbell Date: Sun, 7 Jan 2018 20:06:08 +0000 Subject: [PATCH 26/26] Upgrade kemitix-maven-tiles to 0.2.0 --- builder/pom.xml | 2 +- regressions/pom.xml | 2 +- ruleset/pom.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/builder/pom.xml b/builder/pom.xml index f9cde35..b5b8c7a 100644 --- a/builder/pom.xml +++ b/builder/pom.xml @@ -19,7 +19,7 @@ 1.8 2.10 - 0.1.1 + 0.2.0 8.7 1.26.0 diff --git a/regressions/pom.xml b/regressions/pom.xml index d003dc9..f9540a2 100644 --- a/regressions/pom.xml +++ b/regressions/pom.xml @@ -16,7 +16,7 @@ 2.10 - 0.1.1 + 0.2.0 0-disabled diff --git a/ruleset/pom.xml b/ruleset/pom.xml index 1b8913f..30ab568 100644 --- a/ruleset/pom.xml +++ b/ruleset/pom.xml @@ -21,7 +21,7 @@ 2.10 - 0.1.1 + 0.2.0