From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kevin Traynor Subject: Re: [PATCH v9 10/10] devtools: prevent new instances of rte_panic and rte_exit Date: Thu, 26 Apr 2018 17:08:16 +0100 Message-ID: <22f61f91-9755-520c-9ba1-d93a312a43e3@redhat.com> References: <1524663944-30376-11-git-send-email-arnon@qwilt.com> <1524723664-30510-1-git-send-email-arnon@qwilt.com> <1524723664-30510-11-git-send-email-arnon@qwilt.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Cc: dev@dpdk.org 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 Return-path: Received: from mx1.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by dpdk.org (Postfix) with ESMTP id B23448D97 for ; Thu, 26 Apr 2018 18:08:19 +0200 (CEST) In-Reply-To: <1524723664-30510-11-git-send-email-arnon@qwilt.com> Content-Language: en-US List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" I think the first line of the commit msg ^^^ should change as it no longer prevents but just warns On 04/26/2018 07:21 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. > Seems to drop the patch name if it finds a match > Signed-off-by: Arnon Warshavsky > --- > devtools/checkpatches.sh | 95 +++++++++++++++++++++++++++++++++++++++++++++++- > 1 file changed, 94 insertions(+), 1 deletion(-) > > diff --git a/devtools/checkpatches.sh b/devtools/checkpatches.sh > index 7676a6b..48b2685 100755 > --- a/devtools/checkpatches.sh > +++ b/devtools/checkpatches.sh > @@ -61,6 +61,91 @@ 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){ > + print "Warning: 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 1 > + } > + } > +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 +174,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 >