From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx1.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by dpdk.org (Postfix) with ESMTP id AD3332952 for ; Fri, 4 May 2018 18:42:26 +0200 (CEST) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 082954270961; Fri, 4 May 2018 16:42:26 +0000 (UTC) Received: from ktraynor.remote.csb (ovpn-116-200.ams2.redhat.com [10.36.116.200]) by smtp.corp.redhat.com (Postfix) with ESMTP id ED6D283B8E; Fri, 4 May 2018 16:42:23 +0000 (UTC) To: Arnon Warshavsky , thomas@monjalon.net, anatoly.burakov@intel.com, wenzhuo.lu@intel.com, declan.doherty@intel.com, jerin.jacob@caviumnetworks.com, bruce.richardson@intel.com, ferruh.yigit@intel.com Cc: dev@dpdk.org References: <1524723664-30510-11-git-send-email-arnon@qwilt.com> <1525070752-21085-1-git-send-email-arnon@qwilt.com> From: Kevin Traynor Organization: Red Hat Message-ID: <8561817b-ce77-aa9a-e36d-68e484e7dcc7@redhat.com> Date: Fri, 4 May 2018 17:42:22 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.2.0 MIME-Version: 1.0 In-Reply-To: <1525070752-21085-1-git-send-email-arnon@qwilt.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.7]); Fri, 04 May 2018 16:42:26 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.7]); Fri, 04 May 2018 16:42:26 +0000 (UTC) for IP:'10.11.54.5' DOMAIN:'int-mx05.intmail.prod.int.rdu2.redhat.com' HELO:'smtp.corp.redhat.com' FROM:'ktraynor@redhat.com' RCPT:'' Subject: Re: [dpdk-dev] [PATCH v10] devtools: alert on new instances of rte_panic and rte_exit X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 May 2018 16:42:27 -0000 On 04/30/2018 07:45 AM, Arnon Warshavsky wrote: > This patch adds a new function that is called > per every checked patch, > and alerts for new instances of rte_panic/rte_exit. > The check excludes comments, and alerts in the case > of a positive balance between additions and removals. > > Signed-off-by: Arnon Warshavsky > Reviewed-by: Stephen Hemminger Tested-by: Kevin Traynor > --- > devtools/checkpatches.sh | 96 +++++++++++++++++++++++++++++++++++++++++++++++- > 1 file changed, 95 insertions(+), 1 deletion(-) > > diff --git a/devtools/checkpatches.sh b/devtools/checkpatches.sh > index 7676a6b..c7d927b 100755 > --- a/devtools/checkpatches.sh > +++ b/devtools/checkpatches.sh > @@ -61,6 +61,92 @@ print_usage () { > END_OF_HELP > } > > +check_forbidden_additions() { # > + # --------------------------------- > + #This awk script receives a list of expressions to monitor > + #and a list of folders to search these expressions in > + # - No search is done inside comments > + # - Both additions and removals of the expressions are checked > + # A positive balance of additions fails the check > + read -d '' awk_script << 'EOF' > + BEGIN{ > + split(FOLDERS,deny_folders," "); > + split(EXPRESSIONS,deny_expr," "); > + in_file=0; > + in_comment=0; > + count=0; > + comment_start="/*" > + comment_end="*/" > + } > + # search for add/remove instances in current file > + # state machine assumes the comments structure is enforced by > + # checkpatches.pl > + (in_file) { > + # comment start > + if (index($0,comment_start) > 0){ > + in_comment = 1 > + } > + # non comment code > + if (in_comment == 0) { > + for (i in deny_expr) { > + forbidden_added = "^\+.*" deny_expr[i]; > + forbidden_removed="^-.*" deny_expr[i]; > + current = expressions[deny_expr[i]] > + if ($0 ~ forbidden_added) { > + count = count + 1; > + expressions[deny_expr[i]] = current + 1 > + } > + if ($0 ~ forbidden_removed) { > + count = count - 1; > + expressions[deny_expr[i]] = current - 1 > + } > + } > + } > + > + # comment end > + if (index($0,comment_end) > 0) { > + in_comment = 0 > + } > + } > + # switch to next file , check if the balance of add/remove > + # of previous filehad new additions > + ($0 ~ "^\+\+\+ b/") { > + in_file = 0; > + if (count > 0){ > + exit; > + } > + for (i in deny_folders){ > + re = "^\+\+\+ b/" deny_folders[i]; > + if ($0 ~ deny_folders[i]) { > + in_file = 1 > + last_file = $0 > + } > + } > + } > + END{ > + if (count > 0){ > + warnText = "\\033[1;31m" "Warning:" "\\033[0m" > + print warnText " in " substr(last_file,6) ":" > + print "are you sure you want to add the following:" > + for (key in expressions) { > + if (expressions[key] > 0) { > + print key > + } > + } > + exit 0 > + } > + } > +EOF > + # --------------------------------- > + > + # refrain from new additions of rte_panic() and rte_exit() > + # under lib and net > + # multiple folders and expressions are separated by spaces > + awk -v FOLDERS="lib net" \ > + -v EXPRESSIONS="rte_panic\\\( rte_exit\\\(" \ > + "$awk_script" - > +} > + > number=0 > quiet=false > verbose=false > @@ -89,11 +175,19 @@ check () { # > total=$(($total + 1)) > ! $verbose || printf '\n### %s\n\n' "$3" > if [ -n "$1" ] ; then > + cat "$1" | check_forbidden_additions > + [ $? -eq 0 ] || return 0 > report=$($DPDK_CHECKPATCH_PATH $options "$1" 2>/dev/null) > elif [ -n "$2" ] ; then > - report=$(git format-patch --find-renames --no-stat --stdout -1 $commit | > + params=$(echo "--find-renames --no-stat --stdout -1") > + body=$(git format-patch $params $commit) > + echo "$body" | check_forbidden_additions > + [ $? -eq 0 ] || return 0 > + report=$(echo "$body" | > $DPDK_CHECKPATCH_PATH $options - 2>/dev/null) > else > + check_forbidden_additions - > + [ $? -eq 0 ] || return 0 > report=$($DPDK_CHECKPATCH_PATH $options - 2>/dev/null) > fi > [ $? -ne 0 ] || return 0 >