diff --git a/.github/workflows/validate.yml b/.github/workflows/validate.yml index 45530a2..27d95bd 100644 --- a/.github/workflows/validate.yml +++ b/.github/workflows/validate.yml @@ -58,4 +58,16 @@ jobs: - name: Maven build run: | mvn -B -e $MAVEN_HTTP_ARGS clean install - + spotbugs: + timeout-minutes: 10 + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v4 + - name: Set up JDK ${{ env.JAVA_VERSION }} + uses: actions/setup-java@v4.1.0 + with: + distribution: ${{ env.JAVA_DISTRO }} + java-version: ${{ env.JAVA_VERSION }} + cache: maven + - name: Spotbugs + run: etc/scripts/spotbugs.sh diff --git a/etc/scripts/spotbugs.sh b/etc/scripts/spotbugs.sh new file mode 100755 index 0000000..14d55dc --- /dev/null +++ b/etc/scripts/spotbugs.sh @@ -0,0 +1,47 @@ +#!/bin/bash -e +# +# Copyright (c) 2024 Oracle and/or its affiliates. +# +# 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 an "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. +# + +set -o pipefail || true # trace ERR through pipes +set -o errtrace || true # trace ERR through commands and functions +set -o errexit || true # exit the script if any statement returns a non-true return value + +on_error(){ + CODE="${?}" && \ + set +x && \ + printf "[ERROR] Error(code=%s) occurred at %s:%s command: %s\n" \ + "${CODE}" "${BASH_SOURCE[0]}" "${LINENO}" "${BASH_COMMAND}" +} +trap on_error ERR + +# Path to this script +if [ -h "${0}" ] ; then + SCRIPT_PATH="$(readlink "${0}")" +else + SCRIPT_PATH="${0}" +fi +readonly SCRIPT_PATH + +# Path to the root of the workspace +# shellcheck disable=SC2046 +WS_DIR=$(cd $(dirname -- "${SCRIPT_PATH}") ; cd ../.. ; pwd -P) +readonly WS_DIR + +mvn ${MAVEN_ARGS} -f ${WS_DIR}/pom.xml \ + install -e \ + -DskipTests \ + -Dmaven.test.skip=true \ + -Pspotbugs diff --git a/etc/spotbugs/exclude.xml b/etc/spotbugs/exclude.xml new file mode 100644 index 0000000..1e06a72 --- /dev/null +++ b/etc/spotbugs/exclude.xml @@ -0,0 +1,26 @@ + + + + + + + diff --git a/pom.xml b/pom.xml index a0cb60e..e701f5b 100644 --- a/pom.xml +++ b/pom.xml @@ -37,6 +37,9 @@ false false + false + Medium + etc/spotbugs/exclude.xml 10.13.0 2.7.2 @@ -50,7 +53,8 @@ 4.0.6 3.1.7 6.2.1 - + 4.8.5.0 + 1.13.0 @@ -389,6 +393,26 @@ + + com.github.spotbugs + spotbugs-maven-plugin + ${version.plugin.spotbugs} + + FindReturnRef + ${spotbugs.skip} + ${spotbugs.threshold} + + ${spotbugs.exclude} + true + + + com.h3xstream.findsecbugs + findsecbugs-plugin + ${version.plugin.findsecbugs} + + + + org.apache.maven.plugins maven-checkstyle-plugin @@ -436,5 +460,23 @@ + + spotbugs + + + + com.github.spotbugs + spotbugs-maven-plugin + + + + check + + + + + + +