This is an automated email from the ASF dual-hosted git repository.
aw pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/yetus.git
The following commit(s) were added to refs/heads/master by this push:
new ff435e9 YETUS-749. change findbugs to spotbugs
ff435e9 is described below
commit ff435e97b4ab502a6de6f976751483fff44f530b
Author: Allen Wittenauer <[email protected]>
AuthorDate: Sat Mar 16 06:20:08 2019 -0700
YETUS-749. change findbugs to spotbugs
Signed-off-by: Allen Wittenauer <[email protected]>
---
Jenkinsfile | 2 +-
.../documentation/in-progress/precommit-basic.md | 4 +-
.../yetus/audience/tools/StabilityOptions.java | 2 +
pom.xml | 2 +-
precommit/src/main/shell/core.d/01-common.sh | 29 +-
precommit/src/main/shell/it/it-tp.sh | 2 +-
precommit/src/main/shell/personality/bigtop.sh | 2 +-
precommit/src/main/shell/personality/jmeter.sh | 2 +-
precommit/src/main/shell/personality/orc.sh | 2 +-
.../src/main/shell/test-patch-docker/Dockerfile | 12 +
precommit/src/main/shell/test-patch.d/ant.sh | 4 +
precommit/src/main/shell/test-patch.d/gradle.sh | 1 +
precommit/src/main/shell/test-patch.d/maven.sh | 7 +-
.../test-patch.d/{findbugs.sh => spotbugs.sh} | 292 +++++++++++++++------
14 files changed, 266 insertions(+), 97 deletions(-)
diff --git a/Jenkinsfile b/Jenkinsfile
index f568cd3..2392586 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -148,7 +148,7 @@ pipeline {
YETUS_ARGS+=(--proclimit=2000)
# rsync these files back into the archive dir
-
YETUS_ARGS+=("--archive-list=checkstyle-errors.xml,findbugsXml.xml")
+
YETUS_ARGS+=("--archive-list=checkstyle-errors.xml,spotbugsXml.xml")
# URL for user-side presentation in reports and such to our
artifacts
# (needs to match the archive bits below)
diff --git a/asf-site-src/source/documentation/in-progress/precommit-basic.md
b/asf-site-src/source/documentation/in-progress/precommit-basic.md
index bf882ea..5a6522a 100644
--- a/asf-site-src/source/documentation/in-progress/precommit-basic.md
+++ b/asf-site-src/source/documentation/in-progress/precommit-basic.md
@@ -101,7 +101,9 @@ Language Support, Licensing, and more:
* [Apache Creadur Rat](http://creadur.apache.org/rat/) entries in build system
* [checkstyle](http://checkstyle.sourceforge.net/) entries in build system
(ant and maven only)
* [FindBugs](http://findbugs.sourceforge.net/) entries in build system and 3.x
executables
- (NOTE: FindBugs executables are required even if the build system is using
[Spotbugs](https://spotbugs.github.io/))
+ - NOTE: only one of FindBugs or SpotBugs may be used at a time.
+* [SpotBugs](https://spotbugs.github.io/)) entries in build system and 3.x
executables
+ - NOTE: only one of FindBugs or SpotBugs may be used at a time.
* [jshint](https://jshint.com) installed
* [hadolint](https://github.com/hadolint/hadolint) installed
* [Perl::Critic](http://perlcritic.com/) installed
diff --git
a/audience-annotations-component/audience-annotations/src/main/java/org/apache/yetus/audience/tools/StabilityOptions.java
b/audience-annotations-component/audience-annotations/src/main/java/org/apache/yetus/audience/tools/StabilityOptions.java
index 8e7a93e..26c1459 100644
---
a/audience-annotations-component/audience-annotations/src/main/java/org/apache/yetus/audience/tools/StabilityOptions.java
+++
b/audience-annotations-component/audience-annotations/src/main/java/org/apache/yetus/audience/tools/StabilityOptions.java
@@ -50,6 +50,8 @@ class StabilityOptions {
case STABLE_OPTION:
RootDocProcessor.stability = STABLE_OPTION;
break;
+ default:
+ break;
}
}
}
diff --git a/pom.xml b/pom.xml
index 5bbf662..19f262f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -73,7 +73,7 @@
<jython-shaded.version>2.7.1</jython-shaded.version>
<maven-checkstyle-plugin.version>3.0.0</maven-checkstyle-plugin.version>
<maven-project-info-reports-plugin.version>3.0.0</maven-project-info-reports-plugin.version>
- <spotbugs-maven-plugin.version>3.1.7</spotbugs-maven-plugin.version>
+ <spotbugs-maven-plugin.version>3.1.11</spotbugs-maven-plugin.version>
<sourceReleaseAssemblyDescriptor>source-release-tar</sourceReleaseAssemblyDescriptor>
diff --git a/precommit/src/main/shell/core.d/01-common.sh
b/precommit/src/main/shell/core.d/01-common.sh
index d5e5c32..ffd1e67 100755
--- a/precommit/src/main/shell/core.d/01-common.sh
+++ b/precommit/src/main/shell/core.d/01-common.sh
@@ -317,12 +317,11 @@ function verify_plugin_enabled
declare strip
declare stridx
- yetus_debug "Testing if $1 has been enabled by user"
+ yetus_debug "Testing if ${toadd} has been enabled by user"
bar=""
for idx in ${ENABLED_PLUGINS}; do
stridx=${idx// }
- yetus_debug "verify_plugin_enabled: processing ${stridx}"
case ${stridx} in
all)
bar=${toadd}
@@ -343,7 +342,9 @@ function verify_plugin_enabled
done
if [[ -n ${bar} ]]; then
- yetus_debug "Post-parsing: checking ${bar} = ${toadd}"
+ if [[ "${bar}" = "${toadd}" ]]; then
+ yetus_debug "Post-parsing: ${toadd} enabled"
+ fi
fi
[[ ${bar} = "${toadd}" ]]
}
@@ -418,6 +419,22 @@ function delete_test_type
yetus_del_array_element TESTTYPES "${1}"
}
+## @description Add the given test type
+## @audience public
+## @stability stable
+## @replaceable yes
+## @param plugin
+function replace_test_type
+{
+ if verify_plugin_enabled "${1}" && verify_plugin_enabled "${2}"; then
+ ENABLED_PLUGINS=${ENABLED_PLUGINS%$2}
+ delete_test_type "$2"
+ delete_test "$2"
+ return 0
+ fi
+ return 1
+}
+
## @description Add the given bugsystem type
## @audience public
## @stability stable
@@ -536,6 +553,12 @@ function importplugins
fi
done
+ for i in "${TESTTYPES[@]}"; do
+ if declare -f "${i}_deprecate_test_type" >/dev/null; then
+ "${i}_deprecate_test_type"
+ fi
+ done
+
if [[ ${ROBOT} == true ]]; then
if declare -f "${ROBOTTYPE}"_set_plugin_defaults >/dev/null; then
"${ROBOTTYPE}"_set_plugin_defaults
diff --git a/precommit/src/main/shell/it/it-tp.sh
b/precommit/src/main/shell/it/it-tp.sh
index 0e275f4..149d708 100755
--- a/precommit/src/main/shell/it/it-tp.sh
+++ b/precommit/src/main/shell/it/it-tp.sh
@@ -58,7 +58,7 @@ fi
# our 'default' args, in (mostly) alphabetical order
# rsync these files back into the archive dir
-YETUS_ARGS+=("--archive-list=checkstyle-errors.xml,findbugsXml.xml")
+YETUS_ARGS+=("--archive-list=checkstyle-errors.xml,spotbugsXml.xml")
# where the source is located
YETUS_ARGS+=("--basedir=${BASEDIR}")
diff --git a/precommit/src/main/shell/personality/bigtop.sh
b/precommit/src/main/shell/personality/bigtop.sh
index 6e84416..0a423ab 100755
--- a/precommit/src/main/shell/personality/bigtop.sh
+++ b/precommit/src/main/shell/personality/bigtop.sh
@@ -14,7 +14,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-personality_plugins "all,-checkstyle,-findbugs"
+personality_plugins "all,-checkstyle,-findbugs,-spotbugs"
## @description Globals specific to this personality
## @audience private
diff --git a/precommit/src/main/shell/personality/jmeter.sh
b/precommit/src/main/shell/personality/jmeter.sh
index f2a6056..b4f524c 100755
--- a/precommit/src/main/shell/personality/jmeter.sh
+++ b/precommit/src/main/shell/personality/jmeter.sh
@@ -14,7 +14,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-personality_plugins "all,-javadoc,-findbugs,-asflicense"
+personality_plugins "all,-javadoc,-findbugs,-asflicense,-spotbugs"
## @description Globals specific to this personality
## @audience private
diff --git a/precommit/src/main/shell/personality/orc.sh
b/precommit/src/main/shell/personality/orc.sh
index 95868ba..6fb5796 100755
--- a/precommit/src/main/shell/personality/orc.sh
+++ b/precommit/src/main/shell/personality/orc.sh
@@ -14,7 +14,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-personality_plugins "all,-checkstyle,-findbugs"
+personality_plugins "all,-checkstyle,-findbugs,-spotbugs"
## @description Globals specific to this personality
## @audience private
diff --git a/precommit/src/main/shell/test-patch-docker/Dockerfile
b/precommit/src/main/shell/test-patch-docker/Dockerfile
index e8552fb..7fe612f 100644
--- a/precommit/src/main/shell/test-patch-docker/Dockerfile
+++ b/precommit/src/main/shell/test-patch-docker/Dockerfile
@@ -121,6 +121,18 @@ RUN apt-get -q update && apt-get -q install
--no-install-recommends -y findbugs
&& rm -rf /var/lib/apt/lists/*
ENV FINDBUGS_HOME /usr
+#####
+# Install SpotBugs
+#####
+RUN curl -fsSL
http://repo.maven.apache.org/maven2/com/github/spotbugs/spotbugs/3.1.12/spotbugs-3.1.12.tgz
-o spotbugs.tgz \
+ && curl -fsSL
http://repo.maven.apache.org/maven2/com/github/spotbugs/spotbugs/3.1.12/spotbugs-3.1.12.tgz.sha1
-o spotbugs.tgz.sha1 \
+ && echo -n " spotbugs.tgz" >> spotbugs.tgz.sha1 \
+ && shasum -c spotbugs.tgz.sha1 \
+ && mkdir -p /opt/spotbugs \
+ && tar -C /opt/spotbugs --strip-components 1 -xpf spotbugs.tgz \
+ && rm spotbugs.tgz spotbugs.tgz.sha1
+ENV SPOTBUGS_HOME /opt/spotbugs
+
####
# Install GNU C/C++
####
diff --git a/precommit/src/main/shell/test-patch.d/ant.sh
b/precommit/src/main/shell/test-patch.d/ant.sh
index 31a5e66..7171d26 100755
--- a/precommit/src/main/shell/test-patch.d/ant.sh
+++ b/precommit/src/main/shell/test-patch.d/ant.sh
@@ -120,6 +120,9 @@ function ant_modules_worker
javadoc)
modules_workers "${repostatus}" javadoc clean javadoc
;;
+ spotbugs)
+ modules_workers "${repostatus}" spotbugs spotbugs
+ ;;
unit)
modules_workers "${repostatus}" unit
;;
@@ -209,6 +212,7 @@ function ant_builtin_personality_file_tests
fi
if [[ ${filename} =~ \.java$ ]]; then
+ add_test spotbugs
add_test findbugs
fi
}
diff --git a/precommit/src/main/shell/test-patch.d/gradle.sh
b/precommit/src/main/shell/test-patch.d/gradle.sh
index 64e9714..6e2382c 100755
--- a/precommit/src/main/shell/test-patch.d/gradle.sh
+++ b/precommit/src/main/shell/test-patch.d/gradle.sh
@@ -284,6 +284,7 @@ function gradle_builtin_personality_file_tests
fi
if [[ ${filename} =~ \.java$ ]]; then
+ add_test spotbugs
add_test findbugs
fi
}
diff --git a/precommit/src/main/shell/test-patch.d/maven.sh
b/precommit/src/main/shell/test-patch.d/maven.sh
index 64fbcc2..5b2d9ab 100755
--- a/precommit/src/main/shell/test-patch.d/maven.sh
+++ b/precommit/src/main/shell/test-patch.d/maven.sh
@@ -326,6 +326,9 @@ function maven_modules_worker
scaladoc)
modules_workers "${repostatus}" scaladoc clean scala:doc -DskipTests=true
;;
+ spotbugs)
+ modules_workers "${repostatus}" spotbugs test-compile spotbugs:spotbugs
-DskipTests=true
+ ;;
unit)
if [[ -n "${maven_unit_test_filter}" ]]; then
modules_workers "${repostatus}" unit clean test -fae
"${maven_unit_test_filter}"
@@ -525,6 +528,7 @@ function maven_builtin_personality_file_tests
fi
if [[ ${filename} =~ \.java$ ]]; then
+ add_test spotbugs
add_test findbugs
fi
}
@@ -629,7 +633,8 @@ function maven_precompile
modules_workers "${repostatus}" mvninstall -fae \
clean install \
-DskipTests=true -Dmaven.javadoc.skip=true \
- -Dcheckstyle.skip=true -Dfindbugs.skip=true
+ -Dcheckstyle.skip=true -Dfindbugs.skip=true \
+ -Dspotbugs.skip=true
result=$?
modules_messages "${repostatus}" mvninstall true
if [[ ${result} != 0 ]]; then
diff --git a/precommit/src/main/shell/test-patch.d/findbugs.sh
b/precommit/src/main/shell/test-patch.d/spotbugs.sh
similarity index 55%
rename from precommit/src/main/shell/test-patch.d/findbugs.sh
rename to precommit/src/main/shell/test-patch.d/spotbugs.sh
index 606fb93..57c5815 100755
--- a/precommit/src/main/shell/test-patch.d/findbugs.sh
+++ b/precommit/src/main/shell/test-patch.d/spotbugs.sh
@@ -16,64 +16,90 @@
# SHELLDOC-IGNORE
-FINDBUGS_HOME=${FINDBUGS_HOME:-}
-FINDBUGS_WARNINGS_FAIL_PRECHECK=false
+SPOTBUGS_HOME=${SPOTBUGS_HOME:-}
+ANT_SPOTBUGSXML=${ANT_SPOTBUGSXML:-}
+SPOTBUGS_WARNINGS_FAIL_PRECHECK=false
+SPOTBUGS_TABLE_DUPE=false
-add_test_type findbugs
+if [[ -z "${SPOTBUGS_HOME}" && -n "${FINDBUGS_HOME}" ]]; then
+ SPOTBUGS_MODE=findbugs
+else
+ SPOTBUGS_MODE=spotbugs
+fi
-function findbugs_usage
+add_test_type spotbugs
+
+function spotbugs_deprecate_test_type
{
- yetus_add_option "--findbugs-home=<path>" "Findbugs home directory (default
\${FINDBUGS_HOME})"
- yetus_add_option "--findbugs-strict-precheck" "If there are Findbugs
warnings during precheck, fail"
+ if [[ "${SPOTBUGS_MODE}" == spotbugs ]]; then
+ if replace_test_type spotbugs findbugs; then
+ yetus_error "WARNING: Found both spotbugs and findbugs. Disabling
findbugs."
+ SPOTBUGS_TABLE_DUPE=true
+ fi
+ else
+ if replace_test_type findbugs spotbugs; then
+ yetus_error "WARNING: spotbugs has deprecated findbugs, but only found
findbugs."
+ fi
+ fi
}
-function findbugs_parse_args
+function spotbugs_usage
+{
+ yetus_add_option "--spotbugs-home=<path>" "SpotBugs home directory (default
\${SPOTBUGS_HOME})"
+ yetus_add_option "--spotbugs-strict-precheck" "If there are SpotBugs
warnings during precheck, fail"
+}
+
+function spotbugs_parse_args
{
declare i
for i in "$@"; do
case ${i} in
- --findbugs-home=*)
- FINDBUGS_HOME=${i#*=}
+ --spotbugs-home=*)
+ SPOTBUGS_HOME=${i#*=}
;;
- --findbugs-strict-precheck)
- FINDBUGS_WARNINGS_FAIL_PRECHECK=true
+ --spotbugs-strict-precheck)
+ SPOTBUGS_WARNINGS_FAIL_PRECHECK=true
;;
esac
done
}
-## @description initialize the findbugs plug-in
+## @description initialize the spotbugs plug-in
## @audience private
## @stability evolving
## @replaceable no
-function findbugs_initialize
+function spotbugs_initialize
{
+ if [[ "${SPOTBUGS_MODE}" == findbugs ]]; then
+ FINDBUGS_HOME=${SPOTBUGS_HOME:-${FINDBUGS_HOME}}
+ fi
+
if declare -f maven_add_install >/dev/null 2>&1; then
- maven_add_install findbugs
+ maven_add_install "${SPOTBUGS_MODE}"
fi
}
-function findbugs_filefilter
+function spotbugs_filefilter
{
declare filename=$1
if [[ ${BUILDTOOL} == maven
|| ${BUILDTOOL} == ant ]]; then
if [[ ${filename} =~ \.java$
- || ${filename} =~ (^|/)findbugs-exclude.xml$ ]]; then
- add_test findbugs
+ || ${filename} =~ (^|/)${SPOTBUGS_MODE}-exclude.xml$ ]]; then
+ add_test "${SPOTBUGS_MODE}"
fi
fi
}
-function findbugs_precheck
+function spotbugs_precheck
{
declare exec
declare status=0
- if [[ -z ${FINDBUGS_HOME} ]]; then
- yetus_error "FINDBUGS_HOME was not specified."
+ if [[ -z ${SPOTBUGS_HOME} ]]; then
+ yetus_error "SPOTBUGS_HOME (or FINDBUGS_HOME) was not specified."
status=1
else
for exec in computeBugHistory \
@@ -81,25 +107,25 @@ function findbugs_precheck
filterBugs \
setBugDatabaseInfo\
unionBugs; do
- if ! verify_command "${exec}" "${FINDBUGS_HOME}/bin/${exec}"; then
+ if ! verify_command "${exec}" "${SPOTBUGS_HOME}/bin/${exec}"; then
status=1
fi
done
fi
if [[ ${status} == 1 ]]; then
- add_vote_table 0 findbugs "Findbugs executables are not available."
- delete_test findbugs
+ add_vote_table 0 "${SPOTBUGS_MODE}" "${SPOTBUGS_MODE} executables are not
available."
+ delete_test "${SPOTBUGS_MODE}"
fi
}
-## @description Run the maven findbugs plugin and record found issues in a
bug database
+## @description Run the maven spotbugs plugin and record found issues in a
bug database
## @audience private
## @stability evolving
## @replaceable no
## @return 0 on success
## @return 1 on failure
## @param repostatus
-function findbugs_runner
+function spotbugs_runner
{
declare name=$1
declare module
@@ -111,14 +137,22 @@ function findbugs_runner
declare retval
- personality_modules "${name}" findbugs
+ personality_modules "${name}" "${SPOTBUGS_MODE}"
- "${BUILDTOOL}_modules_worker" "${name}" findbugs
+ "${BUILDTOOL}_modules_worker" "${name}" "${SPOTBUGS_MODE}"
if [[ ${UNSUPPORTED_TEST} = true ]]; then
return 0
fi
+ echo ""
+ echo "Building ${SPOTBUGS_MODE} database(s) using ${SPOTBUGS_HOME} for
executables."
+ echo ""
+
+ if [[ "${SPOTBUGS_TABLE_DUPE}" == true ]] && [[ "${name}" == branch ]]; then
+ add_vote_table 0 spotbugs "Both FindBugs and SpotBugs are enabled, using
SpotBugs."
+ fi
+
#shellcheck disable=SC2153
until [[ ${i} -eq ${#MODULE[@]} ]]; do
if [[ ${MODULE_STATUS[${i}]} == -1 ]]; then
@@ -137,33 +171,41 @@ function findbugs_runner
case ${BUILDTOOL} in
maven)
- targetfile="findbugsXml.xml"
+ targetfile="${SPOTBUGS_MODE}Xml.xml"
;;
ant)
- targetfile="${ANT_FINDBUGSXML}"
+ targetfile="${ANT_SPOTBUGSXML}"
;;
esac
+ buildtool_cwd "${i}"
+
+ files=()
while read -r line; do
files+=("${line}")
done < <(find . -name "${targetfile}")
+ warnings_file="${PATCH_DIR}/${name}-${SPOTBUGS_MODE}-${fn}-warnings"
+
if [[ "${#files[@]}" -lt 1 ]]; then
- module_status ${i} 0 "" "${name}/${module} no findbugs output file
(${targetfile})"
+ module_status ${i} 0 "" "${name}/${module} no ${SPOTBUGS_MODE} output
file (${targetfile})"
((i=i+1))
+ popd >/dev/null || return 1
continue
+ elif [[ "${#files[@]}" -eq 1 ]]; then
+ cp -p "${files[0]}" "${warnings_file}.xml"
+ else
+ "${SPOTBUGS_HOME}/bin/unionBugs" -withMessages -output
"${warnings_file}.xml" "${files[@]}"
fi
- warnings_file="${PATCH_DIR}/${name}-findbugs-${fn}-warnings"
-
- "${FINDBUGS_HOME}/bin/unionBugs" -withMessages -output
"${warnings_file}.xml" "${files[@]}"
+ popd >/dev/null || return 1
if [[ ${name} == branch ]]; then
- "${FINDBUGS_HOME}/bin/setBugDatabaseInfo" -name "${PATCH_BRANCH}" \
+ "${SPOTBUGS_HOME}/bin/setBugDatabaseInfo" -name "${PATCH_BRANCH}" \
"${warnings_file}.xml" "${warnings_file}.xml"
retval=$?
else
- "${FINDBUGS_HOME}/bin/setBugDatabaseInfo" -name patch \
+ "${SPOTBUGS_HOME}/bin/setBugDatabaseInfo" -name patch \
"${warnings_file}.xml" "${warnings_file}.xml"
retval=$?
fi
@@ -171,65 +213,77 @@ function findbugs_runner
if [[ ${retval} != 0 ]]; then
savestop=$(stop_clock)
MODULE_STATUS_TIMER[${i}]=${savestop}
- module_status ${i} -1 "" "${name}/${module} cannot run
setBugDatabaseInfo from findbugs"
+ module_status ${i} -1 "" "${name}/${module} cannot run
setBugDatabaseInfo from ${SPOTBUGS_MODE}"
((result=result+1))
((i=i+1))
continue
fi
- if ! "${FINDBUGS_HOME}/bin/convertXmlToText" -html \
+ if [[ ! -f "${warnings_file}.xml" ]]; then
+ module_status ${i} 0 "" "${name}/${module} no data in SpotBugs/FindBugs
output file (${targetfile})"
+ ((i=i+1))
+ popd >/dev/null || return 1
+ continue
+ fi
+
+ if ! "${SPOTBUGS_HOME}/bin/convertXmlToText" -html \
"${warnings_file}.xml" \
"${warnings_file}.html"; then
savestop=$(stop_clock)
MODULE_STATUS_TIMER[${i}]=${savestop}
- module_status ${i} -1 "" "${name}/${module} cannot run convertXmlToText
from findbugs"
+ module_status ${i} -1 "" "${name}/${module} cannot run convertXmlToText
from ${SPOTBUGS_MODE}"
((result=result+1))
fi
- if [[ -z ${FINDBUGS_VERSION}
+ if [[ -z ${SPOTBUGS_VERSION}
&& ${name} == branch ]]; then
- FINDBUGS_VERSION=$(${GREP} -i "BugCollection version="
"${warnings_file}.xml" \
+ SPOTBUGS_VERSION=$("${GREP}" -i "BugCollection version="
"${warnings_file}.xml" \
| cut -f2 -d\" \
| cut -f1 -d\" )
- if [[ -n ${FINDBUGS_VERSION} ]]; then
- add_footer_table findbugs "v${FINDBUGS_VERSION}"
+ if [[ -n ${SPOTBUGS_VERSION} ]]; then
+ add_footer_table "${SPOTBUGS_MODE}" "v${SPOTBUGS_VERSION}"
fi
fi
((i=i+1))
done
+
return ${result}
}
-## @description Track pre-existing findbugs warnings
+## @description Track pre-existing spotbugs warnings
## @audience private
## @stability evolving
## @replaceable no
## @return 0 on success
## @return 1 on failure
-function findbugs_preapply
+function spotbugs_preapply
{
declare fn
declare module
declare modindex=0
declare warnings_file
- declare module_findbugs_warnings
+ declare module_spotbugs_warnings
declare result=0
declare msg
- if ! verify_needed_test findbugs; then
+ if ! verify_needed_test "${SPOTBUGS_MODE}"; then
return 0
fi
- big_console_header "findbugs detection: ${PATCH_BRANCH}"
+ big_console_header "${SPOTBUGS_MODE} detection: ${PATCH_BRANCH}"
- findbugs_runner branch
+ spotbugs_runner branch
result=$?
if [[ ${UNSUPPORTED_TEST} = true ]]; then
return 0
fi
+ if [[ "${SPOTBUGS_MODE}" == findbugs ]]; then
+ add_vote_table 0 spotbugs "Used deprecated FindBugs config; considering
switching to SpotBugs."
+ fi
+
until [[ ${modindex} -eq ${#MODULE[@]} ]]; do
if [[ ${MODULE_STATUS[${modindex}]} == -1 ]]; then
((result=result+1))
@@ -246,31 +300,38 @@ function findbugs_preapply
module=root
fi
- warnings_file="${PATCH_DIR}/branch-findbugs-${fn}-warnings"
+ warnings_file="${PATCH_DIR}/branch-${SPOTBUGS_MODE}-${fn}-warnings"
+ if [[ ! -f "${warnings_file}.xml" ]]; then
+ savestop=$(stop_clock)
+ MODULE_STATUS_TIMER[${modindex}]=${savestop}
+ ((modindex=modindex+1))
+ continue
+ fi
+
# shellcheck disable=SC2016
- module_findbugs_warnings=$("${FINDBUGS_HOME}/bin/filterBugs" -first \
+ module_spotbugs_warnings=$("${SPOTBUGS_HOME}/bin/filterBugs" -first \
"${PATCH_BRANCH}" \
"${warnings_file}.xml" \
"${warnings_file}.xml" \
- | ${AWK} '{print $1}')
+ | "${AWK}" '{print $1}')
- if [[ ${module_findbugs_warnings} -gt 0 ]] ; then
- msg="${module} in ${PATCH_BRANCH} has ${module_findbugs_warnings} extant
Findbugs warnings."
- if [[ "${FINDBUGS_WARNINGS_FAIL_PRECHECK}" = "true" ]]; then
- module_status ${modindex} -1 "branch-findbugs-${fn}-warnings.html"
"${msg}"
+ if [[ ${module_spotbugs_warnings} -gt 0 ]] ; then
+ msg="${module} in ${PATCH_BRANCH} has ${module_spotbugs_warnings} extant
${SPOTBUGS_MODE} warnings."
+ if [[ "${SPOTBUGS_WARNINGS_FAIL_PRECHECK}" = "true" ]]; then
+ module_status ${modindex} -1
"branch-${SPOTBUGS_MODE}-${fn}-warnings.html" "${msg}"
((result=result+1))
elif [[ "${BUILDMODE}" = full ]]; then
- module_status ${modindex} -1 "branch-findbugs-${fn}-warnings.html"
"${msg}"
+ module_status ${modindex} -1
"branch-${SPOTBUGS_MODE}-${fn}-warnings.html" "${msg}"
((result=result+1))
- populate_test_table FindBugs "module:${module}"
+ populate_test_table "${SPOTBUGS_MODE}" "module:${module}"
#shellcheck disable=SC2162
while read line; do
firstpart=$(echo "${line}" | cut -f2 -d:)
secondpart=$(echo "${line}" | cut -f9- -d' ')
add_test_table "" "${firstpart}:${secondpart}"
- done < <("${FINDBUGS_HOME}/bin/convertXmlToText"
"${warnings_file}.xml")
+ done < <("${SPOTBUGS_HOME}/bin/convertXmlToText"
"${warnings_file}.xml")
else
- module_status ${modindex} 0 "branch-findbugs-${fn}-warnings.html"
"${msg}"
+ module_status ${modindex} 0
"branch-${SPOTBUGS_MODE}-${fn}-warnings.html" "${msg}"
fi
fi
@@ -278,7 +339,7 @@ function findbugs_preapply
MODULE_STATUS_TIMER[${modindex}]=${savestop}
((modindex=modindex+1))
done
- modules_messages branch findbugs true
+ modules_messages branch "${SPOTBUGS_MODE}" true
if [[ ${result} != 0 ]]; then
return 1
@@ -286,13 +347,13 @@ function findbugs_preapply
return 0
}
-## @description Verify patch does not trigger any findbugs warnings
+## @description Verify patch does not trigger any spotbugs warnings
## @audience private
## @stability evolving
## @replaceable no
## @return 0 on success
## @return 1 on failure
-function findbugs_postinstall
+function spotbugs_postinstall
{
declare module
declare fn
@@ -313,13 +374,13 @@ function findbugs_postinstall
declare summarize=true
declare statstring
- if ! verify_needed_test findbugs; then
+ if ! verify_needed_test "${SPOTBUGS_MODE}"; then
return 0
fi
- big_console_header "findbugs detection: ${BUILDMODE}"
+ big_console_header "${SPOTBUGS_MODE} detection: ${BUILDMODE}"
- findbugs_runner patch
+ spotbugs_runner patch
if [[ ${UNSUPPORTED_TEST} = true ]]; then
return 0
@@ -344,13 +405,13 @@ function findbugs_postinstall
module=root
fi
- combined_xml="${PATCH_DIR}/combined-findbugs-${fn}.xml"
- branchxml="${PATCH_DIR}/branch-findbugs-${fn}-warnings.xml"
- patchxml="${PATCH_DIR}/patch-findbugs-${fn}-warnings.xml"
+ combined_xml="${PATCH_DIR}/combined-${SPOTBUGS_MODE}-${fn}.xml"
+ branchxml="${PATCH_DIR}/branch-${SPOTBUGS_MODE}-${fn}-warnings.xml"
+ patchxml="${PATCH_DIR}/patch-${SPOTBUGS_MODE}-${fn}-warnings.xml"
if [[ -f "${branchxml}" ]]; then
# shellcheck disable=SC2016
- branch_warnings=$("${FINDBUGS_HOME}/bin/filterBugs" -first \
+ branch_warnings=$("${SPOTBUGS_HOME}/bin/filterBugs" -first \
"${PATCH_BRANCH}" \
"${branchxml}" \
"${branchxml}" \
@@ -359,14 +420,26 @@ function findbugs_postinstall
branchxml=${patchxml}
fi
- newbugsbase="${PATCH_DIR}/new-findbugs-${fn}"
- fixedbugsbase="${PATCH_DIR}/fixed-findbugs-${fn}"
+ newbugsbase="${PATCH_DIR}/new-${SPOTBUGS_MODE}-${fn}"
+ fixedbugsbase="${PATCH_DIR}/fixed-${SPOTBUGS_MODE}-${fn}"
+
+ if [[ ! -f "${branchxml}" ]] && [[ ! -f "${patchxml}" ]]; then
+ module_status ${i} 0 "" "${module} has no data from ${SPOTBUGS_MODE}"
+ ((result=result+1))
+ savestop=$(stop_clock)
+ MODULE_STATUS_TIMER[${i}]=${savestop}
+ ((i=i+1))
+ popd >/dev/null || return 1
+ continue
+ fi
+
+ echo ""
- if ! "${FINDBUGS_HOME}/bin/computeBugHistory" -useAnalysisTimes
-withMessages \
+ if ! "${SPOTBUGS_HOME}/bin/computeBugHistory" -useAnalysisTimes
-withMessages \
-output "${combined_xml}" \
"${branchxml}" \
"${patchxml}"; then
- module_status ${i} -1 "" "${module} cannot run computeBugHistory from
findbugs"
+ module_status ${i} -1 "" "${module} cannot run computeBugHistory from
${SPOTBUGS_MODE}"
((result=result+1))
savestop=$(stop_clock)
MODULE_STATUS_TIMER[${i}]=${savestop}
@@ -376,18 +449,18 @@ function findbugs_postinstall
fi
# shellcheck disable=SC2016
- patch_warnings=$("${FINDBUGS_HOME}/bin/filterBugs" -first \
+ patch_warnings=$("${SPOTBUGS_HOME}/bin/filterBugs" -first \
"patch" \
"${patchxml}" \
"${patchxml}" \
| ${AWK} '{print $1}')
#shellcheck disable=SC2016
- add_warnings=$("${FINDBUGS_HOME}/bin/filterBugs" -first patch \
+ add_warnings=$("${SPOTBUGS_HOME}/bin/filterBugs" -first patch \
"${combined_xml}" "${newbugsbase}.xml" | ${AWK} '{print $1}')
retval=$?
if [[ ${retval} != 0 ]]; then
- module_status ${i} -1 "" "${module} cannot run filterBugs (#1) from
findbugs"
+ module_status ${i} -1 "" "${module} cannot run filterBugs (#1) from
${SPOTBUGS_MODE}"
((result=result+1))
savestop=$(stop_clock)
MODULE_STATUS_TIMER[${i}]=${savestop}
@@ -397,11 +470,11 @@ function findbugs_postinstall
fi
#shellcheck disable=SC2016
- fixed_warnings=$("${FINDBUGS_HOME}/bin/filterBugs" -fixed patch \
+ fixed_warnings=$("${SPOTBUGS_HOME}/bin/filterBugs" -fixed patch \
"${combined_xml}" "${fixedbugsbase}.xml" | ${AWK} '{print $1}')
retval=$?
if [[ ${retval} != 0 ]]; then
- module_status ${i} -1 "" "${module} cannot run filterBugs (#2) from
findbugs"
+ module_status ${i} -1 "" "${module} cannot run filterBugs (#2) from
${SPOTBUGS_MODE}"
((result=result+1))
savestop=$(stop_clock)
MODULE_STATUS_TIMER[${i}]=${savestop}
@@ -412,9 +485,9 @@ function findbugs_postinstall
statstring=$(generic_calcdiff_status "${branch_warnings}"
"${patch_warnings}" "${add_warnings}")
- if ! "${FINDBUGS_HOME}/bin/convertXmlToText" -html "${newbugsbase}.xml" \
+ if ! "${SPOTBUGS_HOME}/bin/convertXmlToText" -html "${newbugsbase}.xml" \
"${newbugsbase}.html"; then
- module_status ${i} -1 "" "${module} cannot run convertXmlToText from
findbugs"
+ module_status ${i} -1 "" "${module} cannot run convertXmlToText from
${SPOTBUGS_MODE}"
((result=result+1))
savestop=$(stop_clock)
MODULE_STATUS_TIMER[${i}]=${savestop}
@@ -430,9 +503,9 @@ function findbugs_postinstall
firstpart=$(echo "${line}" | cut -f2 -d:)
secondpart=$(echo "${line}" | cut -f9- -d' ')
add_test_table "" "${firstpart}:${secondpart}"
- done < <("${FINDBUGS_HOME}/bin/convertXmlToText" "${newbugsbase}.xml")
+ done < <("${SPOTBUGS_HOME}/bin/convertXmlToText" "${newbugsbase}.xml")
- module_status ${i} -1 "new-findbugs-${fn}.html" "${module} ${statstring}"
+ module_status ${i} -1 "new-${SPOTBUGS_MODE}-${fn}.html" "${module}
${statstring}"
((result=result+1))
elif [[ ${fixed_warnings} -gt 0 ]]; then
module_status ${i} +1 "" "${module} ${statstring}"
@@ -444,20 +517,67 @@ function findbugs_postinstall
((i=i+1))
done
- modules_messages patch findbugs "${summarize}"
+ modules_messages patch ${SPOTBUGS_MODE} "${summarize}"
if [[ ${result} != 0 ]]; then
return 1
fi
return 0
}
-function findbugs_rebuild
+function spotbugs_rebuild
{
declare repostatus=$1
if [[ "${repostatus}" = branch || "${BUILDMODE}" = full ]]; then
- findbugs_preapply
+ spotbugs_preapply
else
- findbugs_postinstall
+ spotbugs_postinstall
fi
}
+
+
+##
+## To be removed: FindBugs instead of SpotBugs
+##
+
+add_test_type findbugs
+
+function findbugs_usage
+{
+ yetus_add_option "--findbugs-home=<path>" "Findbugs home directory (default
\${FINDBUGS_HOME})"
+ yetus_add_option "--findbugs-strict-precheck" "If there are Findbugs
warnings during precheck, fail"
+}
+
+function findbugs_parse_args
+{
+ declare i
+
+ for i in "$@"; do
+ case ${i} in
+ --findbugs-home=*)
+ SPOTBUGS_HOME=${i#*=}
+ ;;
+ --findbugs-strict-precheck)
+ SPOTBUGS_WARNINGS_FAIL_PRECHECK=true
+ ;;
+ esac
+ done
+}
+
+function findbugs_initialize
+{
+ SPOTBUGS_MODE="findbugs"
+ ANT_SPOTBUGSXML=${ANT_FINDBUGSXML}
+ SPOTBUGS_HOME=${FINDBUGS_HOME}
+ spotbugs_initialize "$@"
+}
+
+function findbugs_filefilter
+{
+ spotbugs_initialize "$@"
+}
+
+function findbugs_rebuild
+{
+ spotbugs_rebuild "$@"
+}
\ No newline at end of file