summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorvempo <vitaliy.emporopulo@amdocs.com>2017-08-29 18:15:04 +0300
committervempo <vitaliy.emporopulo@amdocs.com>2017-08-29 18:21:34 +0300
commit09d4f069e48a0b4ab7359bbcc3b299d222721230 (patch)
tree25d5c0677ebe0984e1f74f31ecd1100953b82228
parent7cd1156c3cab009146ca02989df394412d209483 (diff)
Set up static analysis for on-boarding
Configured PMD Maven plugin in the onboarding pom.xml, with a custom ruleset. Currently disabled by default, can be ran on demand. Change-Id: I0e7ba1aeb1aefcea86fc2534ebc62343057f7c34 Issue-ID: SDC-246 Signed-off-by: vempo <vitaliy.emporopulo@amdocs.com>
-rw-r--r--build-tools/pom.xml35
-rw-r--r--build-tools/src/main/resources/build-pmd-ruleset.xml42
-rw-r--r--onboarding/pom.xml56
-rw-r--r--pom.xml1
4 files changed, 134 insertions, 0 deletions
diff --git a/build-tools/pom.xml b/build-tools/pom.xml
new file mode 100644
index 0000000000..952ebef380
--- /dev/null
+++ b/build-tools/pom.xml
@@ -0,0 +1,35 @@
+<?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.1.0-SNAPSHOT</version>
+ </parent>
+
+ <properties>
+ <pmd.version>5.8.1</pmd.version>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>net.sourceforge.pmd</groupId>
+ <artifactId>pmd-core</artifactId>
+ <version>${pmd.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>net.sourceforge.pmd</groupId>
+ <artifactId>pmd-java</artifactId>
+ <version>${pmd.version}</version>
+ </dependency>
+ </dependencies>
+
+</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
new file mode 100644
index 0000000000..dd8984a970
--- /dev/null
+++ b/build-tools/src/main/resources/build-pmd-ruleset.xml
@@ -0,0 +1,42 @@
+<?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/onboarding/pom.xml b/onboarding/pom.xml
index 0e600287bf..36a36ee325 100644
--- a/onboarding/pom.xml
+++ b/onboarding/pom.xml
@@ -93,5 +93,61 @@
<ws.rs.version>2.0.1</ws.rs.version> <!-- New version 2.0.1 to fix blackduck violation Failing with comiplation issues-->
<zusammen.version>0.2.0</zusammen.version>
<zusammen-state-store.version>0.2.1</zusammen-state-store.version>
+ <skipSA>true</skipSA>
+ <build.tools.version>1.1.0-SNAPSHOT</build.tools.version>
</properties>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-jxr-plugin</artifactId>
+ <version>2.5</version>
+ <configuration>
+ <skip>${skipSA}</skip>
+ </configuration>
+ <executions>
+ <execution>
+ <id>jxr-generation</id>
+ <phase>validate</phase>
+ <goals>
+ <goal>jxr</goal>
+ <goal>test-jxr</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-pmd-plugin</artifactId>
+ <version>3.8</version>
+ <configuration>
+ <skip>${skipSA}</skip>
+ <aggregate>false</aggregate>
+ <targetJdk>${maven.compiler.target}</targetJdk>
+ <rulesets>
+ <ruleset>build-pmd-ruleset.xml</ruleset>
+ </rulesets>
+ </configuration>
+ <executions>
+ <execution>
+ <id>pmd-check</id>
+ <phase>validate</phase>
+ <goals>
+ <!-- violations fail build -->
+ <goal>check</goal>
+ </goals>
+ </execution>
+ </executions>
+ <dependencies>
+ <dependency>
+ <groupId>org.openecomp.sdc</groupId>
+ <artifactId>build-tools</artifactId>
+ <version>${build.tools.version}</version>
+ </dependency>
+ </dependencies>
+ </plugin>
+ </plugins>
+ </build>
+
</project>
diff --git a/pom.xml b/pom.xml
index e6e4d9282f..17bf79aba3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -340,6 +340,7 @@
<activeByDefault>true</activeByDefault>
</activation>
<modules>
+ <module>build-tools</module>
<module>onboarding</module>
<module>security-utils</module>
<module>common-app-api</module>