From e5a8435b486dc5afe3b393003de36f357e21e21f Mon Sep 17 00:00:00 2001 From: Nick Dimiduk Date: Wed, 25 Mar 2020 15:45:28 -0700 Subject: [PATCH] HBASE-24078 SpotBugs check automatically skip inapplicable modules Without patch, the spotbugs results include warnings for inapplicable modules: +--------------------------------------------------------------------------- | | | | Compile Tests +--------------------------------------------------------------------------- | 0 | mvndep | 0m 11s | Maven dependency ordering | +1 | mvninstall | 2m 47s | the source passed | 0 | spotbugs | 0m 11s | branch/hbase-annotations no spotbugs | | | | output file (spotbugsXml.xml) | 0 | spotbugs | 0m 14s | branch/hbase-assembly no spotbugs output | | | | file (spotbugsXml.xml) | 0 | spotbugs | 0m 07s | | | | | branch/hbase-archetypes/hbase-archetype-bu | | | | ilder no spotbugs output file | | | | (spotbugsXml.xml) +--------------------------------------------------------------------------- With patch, +--------------------------------------------------------------------------- | | | | Compile Tests +--------------------------------------------------------------------------- | 0 | mvndep | 0m 13s | Maven dependency ordering | +1 | mvninstall | 3m 09s | the source passed | +1 | spotbugs | 17m 09s | the source passed +--------------------------------------------------------------------------- Signed-off-by: stack --- dev-support/hbase-personality.sh | 25 ++++++------------------- 1 file changed, 6 insertions(+), 19 deletions(-) diff --git a/dev-support/hbase-personality.sh b/dev-support/hbase-personality.sh index 3fe9fd9f0a3..ec051873b0e 100755 --- a/dev-support/hbase-personality.sh +++ b/dev-support/hbase-personality.sh @@ -153,8 +153,8 @@ function personality_modules # If BUILDMODE is 'patch', for unit and compile testtypes, there is no need to run individual # modules if root is included. HBASE-18505 if [[ "${BUILDMODE}" == "full" ]] || \ - ( ( [[ "${testtype}" == unit ]] || [[ "${testtype}" == compile ]] || [[ "${testtype}" == checkstyle ]] ) && \ - [[ "${MODULES[*]}" =~ \. ]] ); then + { { [[ "${testtype}" == unit ]] || [[ "${testtype}" == compile ]] || [[ "${testtype}" == checkstyle ]]; } && \ + [[ "${MODULES[*]}" =~ \. ]]; }; then MODULES=(.) fi @@ -190,23 +190,10 @@ function personality_modules # For some reason, spotbugs on root is not working, but running on individual modules is # working. For time being, let it run on original list of CHANGED_MODULES. HBASE-19491 for module in "${CHANGED_MODULES[@]}"; do - # skip spotbugs on hbase-shell and hbase-it. hbase-it has nothing - # in src/main/java where spotbugs goes to look - # skip hbase-shaded* as there is no java code in them - # skip all modules with no java code or at least, non test java code - if [[ ${module} == hbase-shell ]]; then - continue - elif [[ ${module} == hbase-it ]]; then - continue - elif [[ ${module} == hbase-shaded* ]]; then - continue - elif [[ ${module} == hbase-build-configuration ]]; then - continue - elif [[ ${module} == hbase-checkstyle ]]; then - continue - elif [[ ${module} == hbase-resource-bundle ]]; then - continue - elif [[ ${module} == hbase-testing-util ]]; then + # skip spotbugs on any module that lacks content in `src/main/java` + if [[ "$(find "${BASEDIR}/${module}" -iname '*.java' -and -ipath '*/src/main/java/*' \ + -type f | wc -l | tr -d '[:space:]')" -eq 0 ]]; then + yetus_debug "no java files found under ${module}/src/main/java. skipping." continue else # shellcheck disable=SC2086