You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@yetus.apache.org by aw...@apache.org on 2019/01/04 06:21:25 UTC
[yetus] branch master updated: YETUS-751. line comments generate
too many messages; not obvious how to disable
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 16e34af YETUS-751. line comments generate too many messages; not obvious how to disable
16e34af is described below
commit 16e34afcc65a0ea7e42300b1cb212d9ec6a1105c
Author: Allen Wittenauer <aw...@apache.org>
AuthorDate: Mon Dec 31 09:58:23 2018 -0800
YETUS-751. line comments generate too many messages; not obvious how to disable
Signed-off-by: Allen Wittenauer <aw...@apache.org>
---
precommit/src/main/shell/test-patch.d/github.sh | 19 ++--
precommit/src/main/shell/test-patch.d/hadolint.sh | 2 +-
precommit/src/main/shell/test-patch.d/jshint.sh | 2 +-
.../src/main/shell/test-patch.d/shellcheck.sh | 2 +-
precommit/src/main/shell/test-patch.d/shelldocs.sh | 2 +-
.../src/main/shell/test-patch.d/whitespace.sh | 2 +-
precommit/src/main/shell/test-patch.d/yamllint.sh | 2 +-
precommit/src/main/shell/test-patch.sh | 123 ++++++++++++++++++---
8 files changed, 122 insertions(+), 32 deletions(-)
diff --git a/precommit/src/main/shell/test-patch.d/github.sh b/precommit/src/main/shell/test-patch.d/github.sh
index 17df408..be1893d 100755
--- a/precommit/src/main/shell/test-patch.d/github.sh
+++ b/precommit/src/main/shell/test-patch.d/github.sh
@@ -421,19 +421,16 @@ function github_locate_patch
function github_linecomments
{
- declare plugin=$1
- declare file=$2
+ declare file=$1
# shellcheck disable=SC2034
- declare realline=$3
- declare uniline=$4
- declare text=$5
+ declare linenum=$2
+ declare uniline=$3
+ shift 3
+ declare -a text
+ text=("$@")
declare tempfile="${PATCH_DIR}/ghcomment.$$.${RANDOM}"
declare githubauth
- if [[ "${file}" =~ ^./ ]]; then
- file=${file##./}
- fi
-
if [[ -z "${GITHUB_COMMITSHA}" ]]; then
GITHUB_COMMITSHA=$("${GREP}" \"sha\" "${PATCH_DIR}/github-pull.json" 2>/dev/null \
| head -1 \
@@ -447,11 +444,13 @@ function github_linecomments
# build our REST post
{
printf "{\"body\":\""
- echo "${plugin}: ${text}" \
+ for line in "${text[@]}"; do
+ echo "${line}" \
| "${SED}" -e 's,\\,\\\\,g' \
-e 's,\",\\\",g' \
-e 's,$,\\r\\n,g' \
| tr -d '\n'
+ done
echo "\","
echo "\"commit_id\":\"${GITHUB_COMMITSHA}\","
echo "\"path\":\"${file}\","
diff --git a/precommit/src/main/shell/test-patch.d/hadolint.sh b/precommit/src/main/shell/test-patch.d/hadolint.sh
index b5e068b..9e1ce93 100755
--- a/precommit/src/main/shell/test-patch.d/hadolint.sh
+++ b/precommit/src/main/shell/test-patch.d/hadolint.sh
@@ -179,7 +179,7 @@ function hadolint_postapply
if [[ ${diffPostpatch} -gt 0 ]] ; then
add_vote_table -1 hadolint "${BUILDMODEMSG} ${statstring}"
add_footer_table hadolint "@@BASE@@/diff-patch-hadolint.txt"
- bugsystem_linecomments "hadolint" "${PATCH_DIR}/diff-patch-hadolint.txt"
+ bugsystem_linecomments_queue "hadolint" "${PATCH_DIR}/diff-patch-hadolint.txt"
return 1
elif [[ ${fixedpatch} -gt 0 ]]; then
add_vote_table +1 hadolint "${BUILDMODEMSG} ${statstring}"
diff --git a/precommit/src/main/shell/test-patch.d/jshint.sh b/precommit/src/main/shell/test-patch.d/jshint.sh
index 0fcf0de..0646a30 100755
--- a/precommit/src/main/shell/test-patch.d/jshint.sh
+++ b/precommit/src/main/shell/test-patch.d/jshint.sh
@@ -184,7 +184,7 @@ function jshint_postapply
if [[ ${diffPostpatch} -gt 0 ]] ; then
add_vote_table -1 jshint "${BUILDMODEMSG} ${statstring}"
add_footer_table jshint "@@BASE@@/diff-patch-jshint.txt"
- bugsystem_linecomments "jshint" "${PATCH_DIR}/diff-patch-jshint.txt"
+ bugsystem_linecomments_queue "jshint" "${PATCH_DIR}/diff-patch-jshint.txt"
return 1
elif [[ ${fixedpatch} -gt 0 ]]; then
add_vote_table +1 jshint "${BUILDMODEMSG} ${statstring}"
diff --git a/precommit/src/main/shell/test-patch.d/shellcheck.sh b/precommit/src/main/shell/test-patch.d/shellcheck.sh
index 59ef98b..795466a 100755
--- a/precommit/src/main/shell/test-patch.d/shellcheck.sh
+++ b/precommit/src/main/shell/test-patch.d/shellcheck.sh
@@ -240,7 +240,7 @@ function shellcheck_postapply
if [[ ${diffPostpatch} -gt 0 ]] ; then
add_vote_table -1 shellcheck "${BUILDMODEMSG} ${statstring}"
add_footer_table shellcheck "@@BASE@@/diff-patch-shellcheck.txt"
- bugsystem_linecomments "shellcheck" "${PATCH_DIR}/diff-patch-shellcheck.txt"
+ bugsystem_linecomments_queue "shellcheck" "${PATCH_DIR}/diff-patch-shellcheck.txt"
return 1
elif [[ ${fixedpatch} -gt 0 ]]; then
add_vote_table +1 shellcheck "${BUILDMODEMSG} ${statstring}"
diff --git a/precommit/src/main/shell/test-patch.d/shelldocs.sh b/precommit/src/main/shell/test-patch.d/shelldocs.sh
index 67f94d9..ce998dd 100755
--- a/precommit/src/main/shell/test-patch.d/shelldocs.sh
+++ b/precommit/src/main/shell/test-patch.d/shelldocs.sh
@@ -177,7 +177,7 @@ function shelldocs_postapply
if [[ ${diffPostpatch} -gt 0 ]] ; then
add_vote_table -1 shelldocs "${BUILDMODEMSG} ${statstring}"
add_footer_table shelldocs "@@BASE@@/diff-patch-shelldocs.txt"
- bugsystem_linecomments "shelldocs" "${PATCH_DIR}/diff-patch-shelldocs.txt"
+ bugsystem_linecomments_queue "shelldocs" "${PATCH_DIR}/diff-patch-shelldocs.txt"
return 1
elif [[ ${fixedpatch} -gt 0 ]]; then
add_vote_table +1 shelldocs "${BUILDMODEMSG} ${statstring}"
diff --git a/precommit/src/main/shell/test-patch.d/whitespace.sh b/precommit/src/main/shell/test-patch.d/whitespace.sh
index fb4e923..492f723 100755
--- a/precommit/src/main/shell/test-patch.d/whitespace.sh
+++ b/precommit/src/main/shell/test-patch.d/whitespace.sh
@@ -64,7 +64,7 @@ function whitespace_linecomment_reporter
"${file}" \
> "${tmpfile}"
- bugsystem_linecomments "whitespace:" "${tmpfile}"
+ bugsystem_linecomments_queue "whitespace" "${tmpfile}"
rm "${tmpfile}"
}
diff --git a/precommit/src/main/shell/test-patch.d/yamllint.sh b/precommit/src/main/shell/test-patch.d/yamllint.sh
index b3c4a5b..3d852d8 100755
--- a/precommit/src/main/shell/test-patch.d/yamllint.sh
+++ b/precommit/src/main/shell/test-patch.d/yamllint.sh
@@ -141,7 +141,7 @@ function yamllint_postapply
if [[ ${diffPostpatch} -gt 0 ]] ; then
add_vote_table -1 yamllint "${BUILDMODEMSG} ${statstring}"
add_footer_table yamllint "@@BASE@@/diff-patch-yamllint.txt"
- bugsystem_linecomments "yamllint" "${PATCH_DIR}/diff-patch-yamllint.txt"
+ bugsystem_linecomments_queue "yamllint" "${PATCH_DIR}/diff-patch-yamllint.txt"
return 1
elif [[ ${fixedpatch} -gt 0 ]]; then
add_vote_table +1 yamllint "${BUILDMODEMSG} ${statstring}"
diff --git a/precommit/src/main/shell/test-patch.sh b/precommit/src/main/shell/test-patch.sh
index 8e62afa..4ea5cb1 100755
--- a/precommit/src/main/shell/test-patch.sh
+++ b/precommit/src/main/shell/test-patch.sh
@@ -860,6 +860,9 @@ function parse_args
--linecomments=*)
BUGLINECOMMENTS=${i#*=}
BUGLINECOMMENTS=${BUGLINECOMMENTS//,/ }
+ if [[ -z "${BUGLINECOMMENTS}" ]]; then
+ BUGLINECOMMENTS=" "
+ fi
;;
--modulelist=*)
yetus_comma_to_array USER_MODULE_LIST "${i#*=}"
@@ -2292,40 +2295,121 @@ function check_unittests
return 0
}
-## @description Write comments onto bug systems that have code review support.
+## @description Queue up comments to write into bug systems
+## @description that have code review support, if such support
+## @description enabled/available.
## @description File should be in the form of "file:line:comment"
## @audience public
## @stability evolving
## @replaceable no
+## @param plugin
## @param filename
-function bugsystem_linecomments
+function bugsystem_linecomments_queue
{
- declare title=$1
+ declare plugin=$1
declare fn=$2
declare line
- declare bugs
- declare realline
+ declare linenum
declare text
+
+ if [[ ! -f "${GITUNIDIFFLINES}" ]]; then
+ return
+ fi
+
+ while read -r line; do
+ file=$(echo "${line}" | cut -f1 -d:)
+ if [[ "${file}" =~ ^\./ ]]; then
+ file=${file:2}
+ fi
+ linenum=$(echo "${line}" | cut -f2 -d:)
+ text=$(echo "${line}" | cut -f3- -d:)
+
+ echo "${file}:${linenum}:${plugin}:${text}" >> "${PATCH_DIR}/linecomments-in.txt"
+
+ done < "${fn}"
+}
+
+## @description Call relevant bug systems to write comments
+## @audience private
+## @stability evolving
+## @replaceable no
+function bugsystem_linecomments_writer
+{
+ declare fn=$1
+ declare linenum=$2
+ shift 2
+ declare -a text
+ text=("$@")
declare idxline
declare uniline
+ if [[ -z "${fn}" ]]; then
+ return
+ fi
+
+ idxline="${fn}:${linenum}:"
+ uniline=$("${GREP}" "${idxline}" "${GITUNIDIFFLINES}" | cut -f3 -d: )
+
+ for bugs in ${BUGLINECOMMENTS}; do
+ if declare -f "${bugs}_linecomments" >/dev/null;then
+ "${bugs}_linecomments" "${fn}" "${linenum}" "${uniline}" "${linetext[@]}"
+ fi
+ done
+}
+
+## @description Write all of the bugsystem linecomments
+## @audience public
+## @stability evolving
+## @replaceable no
+function bugsystem_linecomments_trigger
+{
+ declare line
+ declare fn
+ declare linenum
+ declare text
+ declare -a linetext
+ declare prevnum
+ declare prevfn
+ declare plugin
+
if [[ ! -f "${GITUNIDIFFLINES}" ]]; then
return
fi
+ # sort the file such that all files and lines are now next to each other
+ sort "${PATCH_DIR}/linecomments-in.txt" > "${PATCH_DIR}/linecomments-sorted.txt"
+
while read -r line;do
- file=$(echo "${line}" | cut -f1 -d:)
- realline=$(echo "${line}" | cut -f2 -d:)
+ fn=$(echo "${line}" | cut -f1 -d:)
+ if [[ -z "${prevfn}" ]]; then
+ prevfn=${fn}
+ fi
+
+ linenum=$(echo "${line}" | cut -f2 -d:)
+ if [[ -z "${prevnum}" ]]; then
+ prevnum=${linenum}
+ fi
+
text=$(echo "${line}" | cut -f3- -d:)
- idxline="${file}:${realline}:"
- uniline=$(${GREP} "${idxline}" "${GITUNIDIFFLINES}" | cut -f3 -d: )
- for bugs in ${BUGLINECOMMENTS}; do
- if declare -f "${bugs}_linecomments" >/dev/null;then
- "${bugs}_linecomments" "${title}" "${file}" "${realline}" "${uniline}" "${text}"
- fi
- done
- done < "${fn}"
+ if [[ "${prevfn}" == "${fn}" ]] &&
+ [[ ${prevnum} -eq ${linenum} ]]; then
+ linetext+=("${text}")
+ continue
+ fi
+
+ bugsystem_linecomments_writer "${prevfn}" "${prevnum}" "${linetext[@]}"
+ prevfn=${fn}
+ prevnum=${linenum}
+ linetext=("${text}")
+ done < "${PATCH_DIR}/linecomments-sorted.txt"
+
+ bugsystem_linecomments_writer "${prevfn}" "${prevnum}" "${linetext[@]}"
+ if [[ "${YETUS_SHELL_SCRIPT_DEBUG}" = true ]]; then
+ yetus_debug "Keeping linecomments files for debugging"
+ else
+ rm "${PATCH_DIR}/linecomments-in.txt" "${PATCH_DIR}/linecomments-sorted.txt"
+ fi
}
## @description Write the final output to the selected bug system
@@ -2344,6 +2428,8 @@ function bugsystem_finalreport
fi
add_footer_table "Powered by" "Apache Yetus ${VERSION} http://yetus.apache.org"
+ bugsystem_linecomments_trigger
+
for bugs in ${BUGCOMMENTS}; do
if declare -f "${bugs}_finalreport" >/dev/null;then
"${bugs}_finalreport" "${@}"
@@ -3108,7 +3194,12 @@ function initialize
BUGCOMMENTS="${BUGCOMMENTS} console"
fi
- BUGLINECOMMENTS=${BUGLINECOMMENTS:-${BUGCOMMENTS}}
+
+ if [[ "${BUGLINECOMMENTS}" == " " ]]; then
+ BUGLINECOMMENTS=""
+ else
+ BUGLINECOMMENTS=${BUGLINECOMMENTS:-${BUGCOMMENTS}}
+ fi
# we need to do this BEFORE plugins initialize
# because they may change what they do based upon