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*
diff --git a/builder/pom.xml b/builder/pom.xml
index 3e57205..9bf41e3 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
@@ -78,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
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
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..73c88e1 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,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
@@ -36,7 +35,6 @@
builder
ruleset
- plugin
regressions
@@ -55,6 +53,22 @@
2016
+
+
+ The MIT License (MIT)
+ https://opensource.org/licenses/MIT
+
+
+
+
+
+ Paul Campbell
+ pcampbell@kemitix.net
+ Kemitix
+ https://github.com/kemitix/
+
+
+
diff --git a/regressions/pom.xml b/regressions/pom.xml
index 2213e86..6af0db7 100644
--- a/regressions/pom.xml
+++ b/regressions/pom.xml
@@ -13,17 +13,36 @@
Kemitix Checkstyle :: Ruleset :: Regression Tests
- ${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}
+
+
+
+
+
+
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) {
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}
+
+
+
+
+