diff options
author | vempo <vitaliy.emporopulo@amdocs.com> | 2018-08-12 14:17:59 +0300 |
---|---|---|
committer | Avi Gaffa <avi.gaffa@amdocs.com> | 2018-08-14 07:05:19 +0000 |
commit | 1929d75c6856e212979c3a9c7950dfd717d3bb98 (patch) | |
tree | 6b2c10c40d1b6d70b280407ebed3196e76688e49 | |
parent | 1a4db8f598590cc63b6d94a8dac3489b20365f9b (diff) |
Removed execution of PMD from build
Change-Id: I52d55e2585c56118c685745c00e52c2838b76d04
Issue-ID: SDC-1065
Signed-off-by: vempo <vitaliy.emporopulo@amdocs.com>
16 files changed, 2 insertions, 1101 deletions
diff --git a/build-tools/pom.xml b/build-tools/pom.xml deleted file mode 100644 index 1ef90189ae..0000000000 --- a/build-tools/pom.xml +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" - 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"> - - <!-- This dependency must be referenced from a plugin configuration only --> - - <modelVersion>4.0.0</modelVersion> - - <artifactId>build-tools</artifactId> - - <parent> - <groupId>org.openecomp.sdc</groupId> - <artifactId>sdc-main</artifactId> - <version>1.3.0-SNAPSHOT</version> - </parent> - -</project>
\ No newline at end of file diff --git a/build-tools/src/main/resources/build-pmd-ruleset.xml b/build-tools/src/main/resources/build-pmd-ruleset.xml deleted file mode 100644 index dd8984a970..0000000000 --- a/build-tools/src/main/resources/build-pmd-ruleset.xml +++ /dev/null @@ -1,42 +0,0 @@ -<?xml version="1.0"?> -<ruleset name="SDC Essential Rule-set" - xmlns="http://pmd.sourceforge.net/ruleset/2.0.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://pmd.sourceforge.net/ruleset/2.0.0 http://pmd.sourceforge.net/ruleset_2_0_0.xsd http://pmd.sourceforge.net/ruleset/2.0.0 "> - - <description> - Essential rules according to SonarQube. Note that it is impossible to make PMD rules exactly match the - SonarQube ones, but they will probably catch about 90% of violations before they get into the source control. - The advantage is that PMD can be ran locally on any development setup and does not require a license. - </description> - - <!-- - All available Java rule-sets: https://pmd.github.io/pmd-5.6.1/pmd-java/rules/index.html - --> - - <!-- Blocker severity in SonarQube --> - <rule ref="rulesets/java/strictexception.xml/AvoidCatchingThrowable"/> - <rule ref="rulesets/java/empty.xml/EmptyCatchBlock"> - <properties> - <property name="allowCommentedBlocks" value="true"/> - </properties> - </rule> - - <!-- THERE IS NO GOOD RULE TO CATCH NULL DEREFERENCING IN PMD --> - <rule ref="rulesets/java/basic.xml/MisplacedNullCheck"/> - <rule ref="rulesets/java/basic.xml/BrokenNullCheck"/> - - - <rule ref="rulesets/java/design.xml/CloseResource"> - <properties> - <property name="types" - value="java.sql.Connection,java.sql.Statement,java.sql.ResultSet,java.io.OutputStream,java.net.URLConnection,java.io.InputStream,java.io.FileInputStream,java.io.FileOutputStream,java.util.zip.ZipOutputStream,java.util.zip.ZipInputStream,java.util.jar.JarInputStream,java.util.jar.JarOutputStream,java.io.BufferedReader,java.io.BufferedWriter"/> - </properties> - </rule> - <rule ref="rulesets/java/basic.xml/OverrideBothEqualsAndHashcode"/> - - <!-- - Critical severity in SonarQube. Should be empty until all Critical have been fixed. - --> - -</ruleset>
\ No newline at end of file diff --git a/common/pom.xml b/common/pom.xml index 29344ec3af..cd6c3d8b5e 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -75,13 +75,6 @@ <groupId>org.openecomp.sdc.onboarding</groupId> <artifactId>compile-helper-plugin</artifactId> <version>${project.version}</version> - <dependencies> - <dependency> - <groupId>org.openecomp.sdc.onboarding</groupId> - <artifactId>pmd-helper-plugin</artifactId> - <version>${project.version}</version> - </dependency> - </dependencies> <executions> <execution> <goals> @@ -107,88 +100,6 @@ </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-pmd-plugin</artifactId> - <version>${maven.pmd.plugin.version}</version> - <dependencies> - <dependency> - <groupId>org.openecomp.sdc</groupId> - <artifactId>build-tools</artifactId> - <version>${build.tools.version}</version> - </dependency> - <dependency> - <groupId>net.sourceforge.pmd</groupId> - <artifactId>pmd-core</artifactId> - <version>${pmd.core.version}</version> - </dependency> - <dependency> - <groupId>net.sourceforge.pmd</groupId> - <artifactId>pmd-java</artifactId> - <version>${pmd.java.version}</version> - </dependency> - </dependencies> - <configuration> - <skip>${skipPMD}</skip> - <showPmdLog>false</showPmdLog> - <analysisCache>false</analysisCache> - <analysisCacheLocation>${project.build.directory}/pmd/pmd.cache</analysisCacheLocation> - <failOnViolation>false</failOnViolation> - <printFailingErrors>false</printFailingErrors> - <format>csv</format> - <targetDirectory>${project.build.directory}/pmd</targetDirectory> - <includeTests>true</includeTests> - <linkXRef>false</linkXRef> - <aggregate>false</aggregate> - <rulesets> - <ruleset>/category/java/bestpractices.xml</ruleset> - <ruleset>/category/java/codestyle.xml</ruleset> - <ruleset>/category/java/design.xml</ruleset> - <ruleset>/category/java/errorprone.xml</ruleset> - <ruleset>/category/java/multithreading.xml</ruleset> - <ruleset>/category/java/performance.xml</ruleset> - <ruleset>/category/java/security.xml</ruleset> - </rulesets> - </configuration> - <executions> - <execution> - <goals> - <goal>check</goal> - </goals> - <phase>integration-test</phase> - </execution> - </executions> - </plugin> - <plugin> - <groupId>org.openecomp.sdc.onboarding</groupId> - <artifactId>pmd-helper-plugin</artifactId> - <version>${project.version}</version> - <executions> - <execution> - <goals> - <goal>init-pmd-helper</goal> - <goal>post-verify-helper</goal> - </goals> - </execution> - </executions> - <configuration> - <excludePackaging>pom</excludePackaging> - <pmdTargetLocation>${project.build.directory}/pmd/pmd.xml</pmdTargetLocation> - <pmdFailureReportLocation>${project.build.directory}/pmd.txt</pmdFailureReportLocation> - <pmdReportFile>${project.build.directory}/pmd/pmd.csv</pmdReportFile> - <persistingModuleCoordinates>org.openecomp.sdc:build-data-installer</persistingModuleCoordinates> - <pmdCurrentStateFilePath> - org.openecomp.sdc:sdc-onboarding/target/build-data/pmdState.dat - </pmdCurrentStateFilePath> - <pmdStateFile>${project.build.outputDirectory}/pmd.dat</pmdStateFile> - <compiledFilesList> - ${project.build.directory}/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst - </compiledFilesList> - <compiledTestFilesList> - ${project.build.directory}/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst - </compiledTestFilesList> - </configuration> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>${mvn.jar.version}</version> <configuration> diff --git a/onboarding/pom.xml b/onboarding/pom.xml index ea3f95dd59..2b1b7dd321 100644 --- a/onboarding/pom.xml +++ b/onboarding/pom.xml @@ -16,7 +16,6 @@ <modules> <module>../openecomp-be/tools/artifact-copy-plugin</module> <module>../openecomp-be/tools/compile-helper-plugin</module> - <module>../openecomp-be/tools/pmd-helper-plugin</module> <module>../common</module> <module>../openecomp-be</module> <module>../openecomp-be/tools/build-data-installer</module> @@ -110,12 +109,8 @@ <zusammen-state-store.version>1.0.1</zusammen-state-store.version> <zusammen-collaboration-store.version>1.0.1</zusammen-collaboration-store.version> <zusammen-index-store.version>1.0.0</zusammen-index-store.version> - <pmd.version>5.8.1</pmd.version> <build.tools.version>${project.version}</build.tools.version> <togglz.version>2.4.1.Final</togglz.version> - <maven.pmd.plugin.version>3.9.0</maven.pmd.plugin.version> - <pmd.java.version>6.3.0</pmd.java.version> - <pmd.core.version>6.3.0</pmd.core.version> </properties> <dependencyManagement> diff --git a/openecomp-be/pom.xml b/openecomp-be/pom.xml index b603499d5e..6cfc23a7a8 100644 --- a/openecomp-be/pom.xml +++ b/openecomp-be/pom.xml @@ -87,13 +87,6 @@ <groupId>org.openecomp.sdc.onboarding</groupId> <artifactId>compile-helper-plugin</artifactId> <version>${project.version}</version> - <dependencies> - <dependency> - <groupId>org.openecomp.sdc.onboarding</groupId> - <artifactId>pmd-helper-plugin</artifactId> - <version>${project.version}</version> - </dependency> - </dependencies> <executions> <execution> <goals> @@ -118,87 +111,6 @@ </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-pmd-plugin</artifactId> - <version>${maven.pmd.plugin.version}</version> - <dependencies> - <dependency> - <groupId>org.openecomp.sdc</groupId> - <artifactId>build-tools</artifactId> - <version>${build.tools.version}</version> - </dependency> - <dependency> - <groupId>net.sourceforge.pmd</groupId> - <artifactId>pmd-core</artifactId> - <version>${pmd.core.version}</version> - </dependency> - <dependency> - <groupId>net.sourceforge.pmd</groupId> - <artifactId>pmd-java</artifactId> - <version>${pmd.java.version}</version> - </dependency> - </dependencies> - <configuration> - <skip>${skipPMD}</skip> - <showPmdLog>false</showPmdLog> - <analysisCache>false</analysisCache> - <analysisCacheLocation>${project.build.directory}/pmd/pmd.cache</analysisCacheLocation> - <failOnViolation>false</failOnViolation> - <printFailingErrors>false</printFailingErrors> - <format>csv</format> - <targetDirectory>${project.build.directory}/pmd</targetDirectory> - <includeTests>true</includeTests> - <linkXRef>false</linkXRef> - <aggregate>false</aggregate> - <rulesets> - <ruleset>/category/java/bestpractices.xml</ruleset> - <ruleset>/category/java/codestyle.xml</ruleset> - <ruleset>/category/java/design.xml</ruleset> - <ruleset>/category/java/errorprone.xml</ruleset> - <ruleset>/category/java/multithreading.xml</ruleset> - <ruleset>/category/java/performance.xml</ruleset> - <ruleset>/category/java/security.xml</ruleset> - </rulesets> - </configuration> - <executions> - <execution> - <goals> - <goal>check</goal> - </goals> - <phase>integration-test</phase> - </execution> - </executions> - </plugin> - <plugin> - <groupId>org.openecomp.sdc.onboarding</groupId> - <artifactId>pmd-helper-plugin</artifactId> - <version>${project.version}</version> - <executions> - <execution> - <goals> - <goal>init-pmd-helper</goal> - <goal>post-verify-helper</goal> - </goals> - </execution> - </executions> - <configuration> - <excludePackaging>pom</excludePackaging> - <pmdTargetLocation>${project.build.directory}/pmd/pmd.xml</pmdTargetLocation> - <pmdFailureReportLocation>${project.build.directory}/pmd.txt</pmdFailureReportLocation> - <pmdReportFile>${project.build.directory}/pmd/pmd.csv</pmdReportFile> - <persistingModuleCoordinates>org.openecomp.sdc:build-data-installer</persistingModuleCoordinates> - <pmdCurrentStateFilePath>org.openecomp.sdc:sdc-onboarding/target/build-data/pmdState.dat - </pmdCurrentStateFilePath> - <pmdStateFile>${project.build.outputDirectory}/pmd.dat</pmdStateFile> - <compiledFilesList> - ${project.build.directory}/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst - </compiledFilesList> - <compiledTestFilesList> - ${project.build.directory}/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst - </compiledTestFilesList> - </configuration> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>${mvn.jar.version}</version> <configuration> diff --git a/openecomp-be/tools/artifact-copy-plugin/pom.xml b/openecomp-be/tools/artifact-copy-plugin/pom.xml index b06b4a9e58..7eb7d4c6fc 100644 --- a/openecomp-be/tools/artifact-copy-plugin/pom.xml +++ b/openecomp-be/tools/artifact-copy-plugin/pom.xml @@ -11,10 +11,9 @@ <artifactId>sdc-onboarding</artifactId> <groupId>org.openecomp.sdc</groupId> <version>1.3.0-SNAPSHOT</version> - <relativePath>../../../onboarding</relativePath> + <relativePath>../../../onboarding/pom.xml</relativePath> </parent> <properties> - <skipPMD>true</skipPMD> <classes>classes/**/*.class</classes> <mavenStatus>maven-status/**</mavenStatus> <skipTestRun>true</skipTestRun> diff --git a/openecomp-be/tools/build-data-installer/pom.xml b/openecomp-be/tools/build-data-installer/pom.xml index 2d79e472e9..74890ad55d 100644 --- a/openecomp-be/tools/build-data-installer/pom.xml +++ b/openecomp-be/tools/build-data-installer/pom.xml @@ -4,44 +4,18 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> - <groupId>org.openecomp.sdc</groupId> <artifactId>build-data-installer</artifactId> <parent> <artifactId>sdc-onboarding</artifactId> <groupId>org.openecomp.sdc</groupId> <version>1.3.0-SNAPSHOT</version> - <relativePath>../../../onboarding</relativePath> + <relativePath>../../../onboarding/pom.xml</relativePath> </parent> - <properties> - <skipPMD>true</skipPMD> - </properties> <build> <plugins> <plugin> <groupId>org.openecomp.sdc.onboarding</groupId> - <artifactId>pmd-helper-plugin</artifactId> - <version>${project.version}</version> - <executions> - <execution> - <goals> - <goal>init-pmd-helper</goal> - <goal>post-verify-helper</goal> - </goals> - </execution> - </executions> - <configuration> - <excludePackaging>pom</excludePackaging> - <pmdTargetLocation>${project.build.directory}/pmd/pmd.xml</pmdTargetLocation> - <pmdReportFile>${project.build.directory}/pmd/pmd.csv</pmdReportFile> - <pmdFailureReportLocation>${project.build.directory}/pmd.txt</pmdFailureReportLocation> - <persistingModuleCoordinates>org.openecomp.sdc:build-data-installer</persistingModuleCoordinates> - <pmdCurrentStateFilePath>org.openecomp.sdc:sdc-onboarding/target/build-data/pmdState.dat</pmdCurrentStateFilePath> - <pmdStateFile>${project.build.outputDirectory}/pmd.dat</pmdStateFile> - </configuration> - </plugin> - <plugin> - <groupId>org.openecomp.sdc.onboarding</groupId> <artifactId>artifact-copy-plugin</artifactId> <version>${project.version}</version> <executions> diff --git a/openecomp-be/tools/pmd-helper-plugin/pom.xml b/openecomp-be/tools/pmd-helper-plugin/pom.xml deleted file mode 100644 index 2442ae5401..0000000000 --- a/openecomp-be/tools/pmd-helper-plugin/pom.xml +++ /dev/null @@ -1,46 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" - 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"> - <modelVersion>4.0.0</modelVersion> - - <groupId>org.openecomp.sdc.onboarding</groupId> - <artifactId>pmd-helper-plugin</artifactId> - <packaging>maven-plugin</packaging> - - <parent> - <artifactId>sdc-onboarding</artifactId> - <groupId>org.openecomp.sdc</groupId> - <version>1.3.0-SNAPSHOT</version> - <relativePath>../../../onboarding</relativePath> - </parent> - <properties> - <skipPMD>true</skipPMD> - <classes>classes/**/*.class</classes> - <mavenStatus>maven-status/**</mavenStatus> - </properties> - - <dependencies> - <dependency> - <groupId>org.apache.maven</groupId> - <artifactId>maven-core</artifactId> - <version>${maven-core.version}</version> - </dependency> - <dependency> - <groupId>org.apache.maven.plugin-tools</groupId> - <artifactId>maven-plugin-annotations</artifactId> - <version>${maven-plugin-annotations.version}</version> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-plugin-plugin</artifactId> - <version>${maven-plugin-plugin.version}</version> - </plugin> - </plugins> - </build> - -</project>
\ No newline at end of file diff --git a/openecomp-be/tools/pmd-helper-plugin/src/main/java/org/openecomp/sdc/onboarding/pmd/InitializationHelperMojo.java b/openecomp-be/tools/pmd-helper-plugin/src/main/java/org/openecomp/sdc/onboarding/pmd/InitializationHelperMojo.java deleted file mode 100644 index 5b4d5fd131..0000000000 --- a/openecomp-be/tools/pmd-helper-plugin/src/main/java/org/openecomp/sdc/onboarding/pmd/InitializationHelperMojo.java +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright © 2018 European Support Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on a "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.openecomp.sdc.onboarding.pmd; - -import org.apache.maven.plugin.AbstractMojo; -import org.apache.maven.plugin.MojoExecutionException; -import org.apache.maven.plugin.MojoFailureException; -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.plugins.annotations.ResolutionScope; -import org.apache.maven.project.MavenProject; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.ObjectOutputStream; -import java.io.OutputStream; -import java.io.UncheckedIOException; -import java.nio.file.Files; -import java.nio.file.Paths; -import java.nio.file.StandardCopyOption; -import java.util.List; -import java.util.Map; - -import static org.openecomp.sdc.onboarding.pmd.PMDHelperUtils.*; - -@Mojo(name = "init-pmd-helper", threadSafe = true, defaultPhase = LifecyclePhase.PREPARE_PACKAGE, - requiresDependencyResolution = ResolutionScope.NONE) -public class InitializationHelperMojo extends AbstractMojo { - - private static final String SKIP_PMD = "skipPMD"; - - @Parameter(defaultValue = "${project}", readonly = true) - private MavenProject project; - @Parameter(defaultValue = "${project.artifact.groupId}:${project.artifact.artifactId}") - private String moduleCoordinates; - @Parameter - private File pmdTargetLocation; - @Parameter - private File pmdReportFile; - @Parameter - private String persistingModuleCoordinates; - @Parameter - private File pmdStateFile; - @Parameter - private String pmdCurrentStateFilePath; - @Parameter - private String excludePackaging; - - static { - PMDState.setHistoricState(readCurrentPMDState("pmd.dat")); - } - - public void execute() throws MojoExecutionException, MojoFailureException { - if (project.getPackaging().equals(excludePackaging)) { - return; - } - if (moduleCoordinates.equals(persistingModuleCoordinates)) { - pmdStateFile.getParentFile().mkdirs(); - try (OutputStream os = new FileOutputStream(pmdStateFile); - ObjectOutputStream oos = new ObjectOutputStream(os)) { - File f = getStateFile(pmdCurrentStateFilePath.substring(0, pmdCurrentStateFilePath.indexOf('/')), - project, pmdCurrentStateFilePath); - Map<String, List<Violation>> data = readCurrentPMDState(f); - if (PMDState.getHistoricState() != null) { - PMDState.getHistoricState().putAll(data); - oos.writeObject(PMDState.getHistoricState()); - } else { - oos.writeObject(data); - } - if (Paths.get(f.getParentFile().getAbsolutePath(), "compileState.dat").toFile().exists()) { - Files.copy(Paths.get(f.getParentFile().getAbsolutePath(), "compileState.dat"), - Paths.get(pmdStateFile.getParentFile().getAbsolutePath(), "compile.dat"), - StandardCopyOption.REPLACE_EXISTING); - } - } catch (IOException e) { - throw new UncheckedIOException(e); - } - return; - } - if (project.getProperties().containsKey(SKIP_PMD) && Boolean.TRUE.equals(Boolean.valueOf( - project.getProperties().getProperty(SKIP_PMD)))) { - return; - } - pmdTargetLocation.getParentFile().mkdirs(); - try (InputStream is = this.getClass().getResourceAsStream("/pmd-empty.xml"); - OutputStream os = new FileOutputStream(pmdTargetLocation)) { - String text = readInputStream(is); - os.write(text.getBytes()); - } catch (IOException ioe) { - throw new UncheckedIOException(ioe); - } - } - -} diff --git a/openecomp-be/tools/pmd-helper-plugin/src/main/java/org/openecomp/sdc/onboarding/pmd/PMDHelperUtils.java b/openecomp-be/tools/pmd-helper-plugin/src/main/java/org/openecomp/sdc/onboarding/pmd/PMDHelperUtils.java deleted file mode 100644 index 55f6175184..0000000000 --- a/openecomp-be/tools/pmd-helper-plugin/src/main/java/org/openecomp/sdc/onboarding/pmd/PMDHelperUtils.java +++ /dev/null @@ -1,243 +0,0 @@ -package org.openecomp.sdc.onboarding.pmd; - -import org.apache.maven.plugin.logging.Log; -import org.apache.maven.project.MavenProject; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.ObjectInputStream; -import java.io.ObjectOutputStream; -import java.io.OutputStream; -import java.io.UncheckedIOException; -import java.nio.file.Files; -import java.nio.file.StandardOpenOption; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Scanner; -import java.util.Set; -import java.util.concurrent.atomic.AtomicInteger; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -public class PMDHelperUtils { - - private PMDHelperUtils() { - // default constructor. donot remove. - } - - private static Map<String, String> pmdLink = new HashMap<>(); - - static { - pmdLink.put("one", "errorprone"); - pmdLink.put("ign", "design"); - pmdLink.put("ing", "multithreading"); - pmdLink.put("nce", "performance"); - pmdLink.put("ity", "security"); - pmdLink.put("yle", "codestyle"); - pmdLink.put("ces", "bestpractices"); - } - - static String readInputStream(InputStream is) { - try (Scanner s = new Scanner(is).useDelimiter("\\A")) { - return s.hasNext() ? s.next() : ""; - } - } - - static File getStateFile(String moduleCoordinate, MavenProject proj, String filePath) { - return new File(getTopParentProject(moduleCoordinate, proj).getBasedir(), - filePath.substring(filePath.indexOf('/') + 1)); - } - - private static MavenProject getTopParentProject(String moduleCoordinate, MavenProject proj) { - if (getModuleCoordinate(proj).equals(moduleCoordinate) || proj.getParent() == null) { - return proj; - } else { - return getTopParentProject(moduleCoordinate, proj.getParent()); - } - } - - private static String getModuleCoordinate(MavenProject project) { - return project.getGroupId() + ":" + project.getArtifactId(); - } - - private static <T> T readState(String fileName, Class<T> clazz) { - try (InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(fileName); - ObjectInputStream ois = new ObjectInputStream(is)) { - return clazz.cast(ois.readObject()); - } catch (Exception ioe) { - return null; - } - } - - static <T> T readState(File file, Class<T> clazz) { - try (InputStream is = new FileInputStream(file); ObjectInputStream ois = new ObjectInputStream(is)) { - return clazz.cast(ois.readObject()); - } catch (Exception ioe) { - return null; - } - } - - static boolean evaluateCodeQuality(Map<String, List<Violation>> stats, Map<String, List<Violation>> current, - File file, Log logger) { - boolean qualityCheckPassed = true; - Map<String, String> table = new HashMap<>(); - Set<String> classes = current.keySet(); - int counter = 0; - for (String clazz : classes) { - List<Violation> orgViolation = stats.get(clazz) == null ? new ArrayList<>() : stats.get(clazz); - List<Violation> currViolation = current.get(clazz) == null ? new ArrayList<>() : current.get(clazz); - if (diffViolation(orgViolation, currViolation) > 0) { - Map<String, Integer> lDetails = diffCategory(orgViolation, currViolation); - for (String cat : lDetails.keySet()) { - String lineNo = getLineNumbers(currViolation, cat); - table.put(++counter + clazz, cat + ":" + lDetails.get(cat) + ":" + lineNo); - } - } - } - if (!table.isEmpty()) { - qualityCheckPassed = false; - try { - Files.write(file.toPath(), - new Table(getTableHeaders(true), getContents(table, true)).drawTable().getBytes(), - StandardOpenOption.CREATE); - } catch (IOException e) { - throw new UncheckedIOException(e); - } - logger.error(new Table(getTableHeaders(false), getContents(table, false)).drawTable()); - } - return qualityCheckPassed; - } - - private static ArrayList<String> getTableHeaders(boolean addLink) { - ArrayList<String> list = new ArrayList<>(); - list.add("Class Name"); - list.add("Rule Category"); - list.add("Rule Name"); - list.add("Fix"); - list.add("Source Line No"); - if (addLink) { - list.add("Help Link"); - } - return list; - } - - private static ArrayList<ArrayList<String>> getContents(Map<String, String> data, boolean addLink) { - ArrayList<ArrayList<String>> list = new ArrayList<>(); - Pattern p = Pattern.compile("(.*):(.*):(.*):(.*)"); - for (String s : data.keySet()) { - ArrayList<String> l = new ArrayList<>(); - l.add(s.substring(s.indexOf("::") + 2)); - Matcher m = p.matcher(data.get(s)); - if (m.find()) { - l.add(m.group(1)); - l.add(m.group(2)); - l.add(m.group(3) + " at least"); - l.add(m.group(4)); - if (addLink) { - l.add("http://pmd.sourceforge.net/snapshot/pmd_rules_java_" + getLinkCategory(m.group(1)) + ".html#" - + m.group(2).toLowerCase()); - } - } - list.add(l); - } - return list; - } - - private static String getLinkCategory(String cat) { - for (String category : pmdLink.keySet()) { - if (cat.contains(category)) { - return pmdLink.get(category); - } - } - return "ERROR"; - } - - private static int diffViolation(List<Violation> org, List<Violation> curr) { - int diff = 0; - if (org == null || org.isEmpty()) { - if (curr != null && !curr.isEmpty()) { - diff = curr.size(); - } - } else { - if (curr != null && !curr.isEmpty()) { - diff = curr.size() - org.size(); - } - } - return diff; - } - - private static Map<String, Integer> diffCategory(List<Violation> org, List<Violation> curr) { - Map<String, AtomicInteger> currData = new HashMap<>(); - Map<String, AtomicInteger> orgData = new HashMap<>(); - countViolations(curr, currData); - countViolations(org, orgData); - Map<String, Integer> val = new HashMap<>(); - for (String cat : currData.keySet()) { - if (orgData.get(cat) == null) { - val.put(cat, currData.get(cat).intValue()); - } else if (currData.get(cat).intValue() > orgData.get(cat).intValue()) { - val.put(cat, currData.get(cat).intValue() - orgData.get(cat).intValue()); - } - } - return val; - } - - private static void countViolations(List<Violation> violations, Map<String, AtomicInteger> store){ - for (Violation v : violations) { - if (store.get(v.getCategory() + ":" + v.getRule()) == null) { - store.put(v.getCategory() + ":" + v.getRule(), new AtomicInteger(1)); - } else { - store.get(v.getCategory() + ":" + v.getRule()).incrementAndGet(); - } - } - } - - private static void processOriginalViolations(List<Violation> org){ - - } - private static String getLineNumbers(List<Violation> vList, String category) { - String val = ""; - boolean firstOver = false; - for (Violation v : vList) { - if (category.equals(v.getCategory() + ":" + v.getRule())) { - if (firstOver) { - val += ","; - } - val += v.getLine(); - firstOver = true; - } - } - return val; - } - - static Map<String, List<Violation>> readCurrentPMDState(String fileName) { - Map<String, List<Violation>> val = readState(fileName, HashMap.class); - return val == null ? new HashMap<>() : val; - } - - static Map<String, List<Violation>> readCurrentPMDState(File file) { - Map<String, List<Violation>> val = readState(file, HashMap.class); - return val == null ? new HashMap<>() : val; - } - - static void writeCurrentPMDState(File file, Map<String, List<Violation>> data) { - try (OutputStream os = new FileOutputStream(file); ObjectOutputStream oos = new ObjectOutputStream(os)) { - oos.writeObject(data); - } catch (IOException ioe) { - throw new UncheckedIOException(ioe); - } - } - - static boolean isReportEmpty(File reportFile){ - try { - return !reportFile.exists() || Files.readAllLines(reportFile.toPath()).size()<=1; - } catch (IOException e) { - throw new UncheckedIOException(e); - } - } -} diff --git a/openecomp-be/tools/pmd-helper-plugin/src/main/java/org/openecomp/sdc/onboarding/pmd/PMDState.java b/openecomp-be/tools/pmd-helper-plugin/src/main/java/org/openecomp/sdc/onboarding/pmd/PMDState.java deleted file mode 100644 index 2602fff2c6..0000000000 --- a/openecomp-be/tools/pmd-helper-plugin/src/main/java/org/openecomp/sdc/onboarding/pmd/PMDState.java +++ /dev/null @@ -1,74 +0,0 @@ -package org.openecomp.sdc.onboarding.pmd; - -import java.io.File; -import java.io.IOException; -import java.nio.file.Files; -import java.util.HashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -public class PMDState { - - private static Map<String, List<Violation>> data = new HashMap<>(); - private static Map<String, List<Violation>> historicState = null; - private static Pattern p = - Pattern.compile("\"(.*)\",\"(.*)\",\"(.*)\",\"(.*)\",\"(.*)\",\"(.*)\",\"(.*)\",\"(.*)\""); - - public static boolean addViolation(String line, String fileLocation) { - Matcher m = p.matcher(line); - if (m.find()) { - if (m.group(3).indexOf("generated-sources") != -1) { - return true; - } - String mainOrTest = - m.group(3).indexOf(File.separator + "test" + File.separator) == -1 ? "[MAIN] " : "[TEST] "; - List<Violation> list = data.get(fileLocation + "::" + mainOrTest + m.group(2) + "." + m.group(3).substring( - m.group(3).lastIndexOf(File.separatorChar) + 1)); - if (list == null) { - list = new LinkedList<>(); - data.put(fileLocation + "::" + mainOrTest + m.group(2) + "." + m.group(3).substring( - m.group(3).lastIndexOf(File.separatorChar) + 1), list); - } - - list.add(new Violation(m.group(7), m.group(8), m.group(6), Integer.parseInt(m.group(4)), - Integer.parseInt(m.group(5)))); - return true; - } - return false; - } - - public static void reset(File mainFile, File testFile, String moduleCoordinates) throws IOException { - data.clear(); - init(mainFile, moduleCoordinates, "[MAIN] "); - init(testFile, moduleCoordinates, "[TEST] "); - } - - private static void init(File file, String moduleCoordinates, String maiOrTest) throws IOException { - if (file.exists()) { - List<String> coll = Files.readAllLines(file.toPath()); - for (String line : coll) { - if (line.indexOf("$") == -1) { - data.put(moduleCoordinates + "::" + maiOrTest + line.substring(0, line.indexOf('.')) - .replace(File.separator, ".") + ".java", - new LinkedList<>()); - } - } - } - } - - public static Map<String, List<Violation>> getState() { - return data; - } - - public static void setHistoricState(Map<String, List<Violation>> data) { - historicState = data; - } - - public static Map<String, List<Violation>> getHistoricState() { - return historicState; - } - -} diff --git a/openecomp-be/tools/pmd-helper-plugin/src/main/java/org/openecomp/sdc/onboarding/pmd/Table.java b/openecomp-be/tools/pmd-helper-plugin/src/main/java/org/openecomp/sdc/onboarding/pmd/Table.java deleted file mode 100644 index 68eafd0117..0000000000 --- a/openecomp-be/tools/pmd-helper-plugin/src/main/java/org/openecomp/sdc/onboarding/pmd/Table.java +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Copyright © 2018 European Support Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on a "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.openecomp.sdc.onboarding.pmd; - -import java.util.ArrayList; -import java.util.List; - -public class Table { - - private final int TABLEPADDING = 1; - private final char SEPERATOR_CHAR = '-'; - - private ArrayList<String> headers; - private ArrayList<ArrayList<String>> table; - private ArrayList<Integer> maxLength; - - public Table(ArrayList<String> headersIn, ArrayList<ArrayList<String>> content) { - this.headers = headersIn; - this.maxLength = new ArrayList<Integer>(); - for (int i = 0; i < headers.size(); i++) { - maxLength.add(headers.get(i).length()); - } - this.table = content; - calcMaxLengthAll(); - } - - public String drawTable() { - StringBuilder sb = new StringBuilder(); - StringBuilder sbRowSep = new StringBuilder(); - StringBuffer padder = new StringBuffer(); - String rowSeperator = ""; - - for (int i = 0; i < TABLEPADDING; i++) { - padder.append(" "); - } - - for (int i = 0; i < maxLength.size(); i++) { - sbRowSep.append("|"); - for (int j = 0; j < maxLength.get(i) + (TABLEPADDING * 2); j++) { - sbRowSep.append(SEPERATOR_CHAR); - } - } - sbRowSep.append("|"); - rowSeperator = sbRowSep.toString(); - - sb.append(rowSeperator); - sb.append("\n"); - sb.append("|"); - for (int i = 0; i < headers.size(); i++) { - sb.append(padder); - sb.append(headers.get(i)); - for (int k = 0; k < (maxLength.get(i) - headers.get(i).length()); k++) { - sb.append(" "); - } - sb.append(padder); - sb.append("|"); - } - sb.append("\n"); - sb.append(rowSeperator); - sb.append("\n"); - - for (int i = 0; i < table.size(); i++) { - ArrayList<String> tempRow = table.get(i); - sb.append("|"); - for (int j = 0; j < tempRow.size(); j++) { - sb.append(padder); - sb.append(tempRow.get(j)); - for (int k = 0; k < (maxLength.get(j) - tempRow.get(j).length()); k++) { - sb.append(" "); - } - sb.append(padder); - sb.append("|"); - } - sb.append("\n"); - sb.append(rowSeperator); - sb.append("\n"); - } - return sb.toString(); - } - - private void calcMaxLengthAll() { - for (int i = 0; i < table.size(); i++) { - List<String> temp = table.get(i); - for (int j = 0; j < temp.size(); j++) { - if (temp.get(j).length() > maxLength.get(j)) { - maxLength.set(j, temp.get(j).length()); - } - } - } - } - -} - diff --git a/openecomp-be/tools/pmd-helper-plugin/src/main/java/org/openecomp/sdc/onboarding/pmd/VerifyHelperMojo.java b/openecomp-be/tools/pmd-helper-plugin/src/main/java/org/openecomp/sdc/onboarding/pmd/VerifyHelperMojo.java deleted file mode 100644 index 0785696ca0..0000000000 --- a/openecomp-be/tools/pmd-helper-plugin/src/main/java/org/openecomp/sdc/onboarding/pmd/VerifyHelperMojo.java +++ /dev/null @@ -1,185 +0,0 @@ -/* - * Copyright © 2018 European Support Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on a "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.openecomp.sdc.onboarding.pmd; - -import org.apache.maven.execution.MavenSession; -import org.apache.maven.plugin.AbstractMojo; -import org.apache.maven.plugin.MojoExecutionException; -import org.apache.maven.plugin.MojoFailureException; -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.plugins.annotations.ResolutionScope; -import org.apache.maven.project.MavenProject; - -import java.io.File; -import java.io.IOException; -import java.io.UncheckedIOException; -import java.nio.file.Files; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import static org.openecomp.sdc.onboarding.pmd.PMDHelperUtils.*; - -@Mojo(name = "post-verify-helper", threadSafe = true, defaultPhase = LifecyclePhase.VERIFY, - requiresDependencyResolution = ResolutionScope.NONE) -public class VerifyHelperMojo extends AbstractMojo { - - private static final String SKIP_PMD = "skipPMD"; - - @Parameter(defaultValue = "${project}", readonly = true) - private MavenProject project; - @Parameter(defaultValue = "${project.artifact.groupId}:${project.artifact.artifactId}") - private String moduleCoordinates; - @Parameter(defaultValue = "${session}") - private MavenSession session; - @Parameter - private File pmdTargetLocation; - @Parameter - private File pmdReportFile; - @Parameter - private File pmdStateFile; - @Parameter - private String pmdCurrentStateFilePath; - @Parameter - private String excludePackaging; - @Parameter - private Boolean validatePMDReport = Boolean.FALSE; - @Parameter - private String persistingModuleCoordinates; - @Parameter - private File pmdFailureReportLocation; - @Parameter - private File compiledFilesList; - @Parameter - private File compiledTestFilesList; - - private static File pmdCurrentStateFile; - - public void execute() throws MojoExecutionException, MojoFailureException { - if (project.getPackaging().equals(excludePackaging)) { - return; - } - init(); - warnDataIssuesIfAny(); - - if (Boolean.FALSE.equals(Boolean.valueOf(project.getProperties().getProperty(SKIP_PMD))) && !isReportEmpty( - pmdReportFile)) { - Map<String, List<Violation>> data = readCurrentPMDState(pmdCurrentStateFile); - Map<String, List<Violation>> cv = readCurrentModulePMDReport(); - data.putAll(cv); - boolean error = false; - if (!PMDState.getHistoricState().isEmpty() && !PMDHelperUtils - .evaluateCodeQuality(PMDState.getHistoricState(), cv, - pmdFailureReportLocation, getLog())) { - error = true; - if (validatePMDReport) { - throw new MojoFailureException( - "PMD Failures encountered. Build halted. For details refer " + pmdFailureReportLocation - .getAbsolutePath()); - } else { - getLog().error( - "\u001B[31m\u001B[1m Code Quality concerns raised by Quality Management System. For details refer " - + pmdFailureReportLocation.getAbsolutePath() - + " and address them before committing this code in Version Control System. \u001B[0m"); - } - } - String moduleChecksum = project.getProperties().getProperty("mainChecksum") + ":" + project.getProperties() - .getProperty( - "testChecksum"); - data = reinitializeIfNeeded(!error, data); - - Map<String, Object> checksumStore = HashMap.class.cast(data); - if (!moduleChecksum.equals(checksumStore.get(moduleCoordinates))) { - checksumStore.put(moduleCoordinates, moduleChecksum); - writeCurrentPMDState(pmdCurrentStateFile, data); - } - } - if (Boolean.FALSE.equals(Boolean.valueOf(project.getProperties().getProperty(SKIP_PMD)))) { - if (isReportEmpty(pmdReportFile)) { - HashMap data = HashMap.class.cast(readCurrentPMDState(pmdCurrentStateFile)); - data.put(moduleCoordinates, - project.getProperties().getProperty("mainChecksum") + ":" + project.getProperties().getProperty( - "testChecksum")); - writeCurrentPMDState(pmdCurrentStateFile, data); - } - pmdReportFile.delete(); - } - removeProcessFiles(); - - } - - private void removeProcessFiles() { - if (moduleCoordinates.equals(persistingModuleCoordinates) && pmdStateFile.exists()) { - for (File file : pmdStateFile.getParentFile().listFiles()) { - if (file.isFile()) { - file.delete(); - } - } - } - if (pmdTargetLocation.exists()) { - pmdTargetLocation.delete(); - } - } - - private void init() { - if (pmdCurrentStateFile == null) { - setPmdCurrentStateFile( - getStateFile(pmdCurrentStateFilePath.substring(0, pmdCurrentStateFilePath.indexOf('/')), project, - pmdCurrentStateFilePath)); - - pmdReportFile.getParentFile().mkdirs(); - } - } - - private static void setPmdCurrentStateFile(File file) { - pmdCurrentStateFile = file; - pmdCurrentStateFile.getParentFile().mkdirs(); - } - - private Map<String, List<Violation>> readCurrentModulePMDReport() { - try { - PMDState.reset(compiledFilesList, compiledTestFilesList, moduleCoordinates); - if (pmdReportFile.exists()) { - List<String> lines = Files.readAllLines(pmdReportFile.toPath()); - lines.remove(0); - for (String line : lines) { - PMDState.addViolation(line, moduleCoordinates); - } - } - } catch (IOException ioe) { - throw new UncheckedIOException(ioe); - } - return PMDState.getState(); - } - - private void warnDataIssuesIfAny() { - if (PMDState.getHistoricState() != null && PMDState.getHistoricState().isEmpty()) { - getLog().error("PMD Check is skipped. problem while loading data."); - } - } - - private Map<String, List<Violation>> reinitializeIfNeeded(boolean required, Map<String, List<Violation>> orig) { - if (required) { - return readCurrentPMDState(pmdCurrentStateFile); - } else { - return orig; - } - } - -} diff --git a/openecomp-be/tools/pmd-helper-plugin/src/main/java/org/openecomp/sdc/onboarding/pmd/Violation.java b/openecomp-be/tools/pmd-helper-plugin/src/main/java/org/openecomp/sdc/onboarding/pmd/Violation.java deleted file mode 100644 index b0cafc474f..0000000000 --- a/openecomp-be/tools/pmd-helper-plugin/src/main/java/org/openecomp/sdc/onboarding/pmd/Violation.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright © 2018 European Support Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on a "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.openecomp.sdc.onboarding.pmd; - -import java.io.Serializable; - -public class Violation implements Serializable { - - private final String category; - private final String rule; - private final String description; - private final int priority; - private final int line; - - public String getCategory() { - return category; - } - - public String getRule() { - return rule; - } - - public int getPriority() { - return priority; - } - - public int getLine() { - return line; - } - - public Violation(String category, String rule, String description, int priority, int line) { - this.category = category; - this.rule = rule; - this.description = description; - this.priority = priority; - this.line = line; - } - - public String toString() { - return category + ":" + rule + ":" + getPriority() + description + ":" + line; - } -} diff --git a/openecomp-be/tools/pmd-helper-plugin/src/main/resources/pmd-empty.xml b/openecomp-be/tools/pmd-helper-plugin/src/main/resources/pmd-empty.xml deleted file mode 100644 index c23b533c81..0000000000 --- a/openecomp-be/tools/pmd-helper-plugin/src/main/resources/pmd-empty.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<pmd xmlns="http://pmd.sourceforge.net/report/2.0.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://pmd.sourceforge.net/report/2.0.0 http://pmd.sourceforge.net/report_2_0_0.xsd" - version="6.0.1" timestamp="2018-04-29T23:06:21.384"> -</pmd> @@ -384,7 +384,6 @@ <activeByDefault>true</activeByDefault> </activation> <modules> - <module>build-tools</module> <module>security-utils</module> <module>common-app-api</module> <module>onboarding</module> @@ -435,7 +434,6 @@ <activeByDefault>false</activeByDefault> </activation> <modules> - <module>build-tools</module> <module>onboarding</module> </modules> </profile> |