mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Jim Cromie <jim.cromie@gmail.com>
To: joe@perches.com, linux-kernel@vger.kernel.org
Cc: Jim Cromie <jim.cromie@gmail.com>
Subject: [PATCH 3/3] checkpatch: suppress BUG_ON warn when it is named in commitmsg
Date: Fri, 25 Jun 2021 21:40:16 -0600	[thread overview]
Message-ID: <20210626034016.170306-4-jim.cromie@gmail.com> (raw)
In-Reply-To: <20210626034016.170306-1-jim.cromie@gmail.com>

allow mention of BUG_ON in the preamble/commitmsg/intro to silence the
warning normally issued when one is added.  This presumes the commit
message will adequately explain the reason "BUG_ON" is appropriate.

Signed-off-by: Jim Cromie <jim.cromie@gmail.com>
---
 scripts/checkpatch.pl | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index a8dfba53b593..32612f39d742 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -2560,6 +2560,18 @@ sub exclude_global_initialisers {
 		$realfile =~ m@/bpf/.*\.bpf\.c$@;
 }
 
+sub commitmsg_refers_to {	# see if $srch is in commit message
+	my ($srch, $lines) = @_;
+	#print "ok checking for $srch in $lines lines\n";
+	for my $i (0..$lines) {
+		if ($rawlines[$i] =~ /$srch/) {
+			print "\thmm: $srch mentioned in preamble, presuming it is explained\n";
+			return 1;
+		}
+	}
+	return 0;
+}
+
 sub process {
 	my $filename = shift;
 
@@ -2586,6 +2598,7 @@ sub process {
 	my $has_patch_separator = 0;	#Found a --- line
 	my $has_commit_log = 0;		#Encountered lines before patch
 	my $commit_log_lines = 0;	#Number of commit log lines
+	my $eopreamble = 0;		# above truncates at =~ /^\. \w+/
 	my $commit_log_possible_stack_dump = 0;
 	my $commit_log_long_line = 0;
 	my $commit_log_has_diff = 0;
@@ -2731,6 +2744,7 @@ sub process {
 		    ($line =~ /^rename (?:from|to) \S+\s*$/ ||
 		     $line =~ /^diff --git a\/[\w\/\.\_\-]+ b\/\S+\s*$/))) {
 			$is_patch = 1;
+			$eopreamble = $linenr;
 		}
 
 #extract the line range in the file after the patch is applied
@@ -4654,7 +4668,7 @@ sub process {
 		}
 
 # avoid BUG() or BUG_ON()
-		if ($line =~ /\b(?:BUG|BUG_ON)\b/) {
+		if ($line =~ /\b(BUG|BUG_ON)\b/ && !commitmsg_refers_to($1, $eopreamble)) {
 			my $msg_level = \&WARN;
 			$msg_level = \&CHK if ($file);
 			&{$msg_level}("AVOID_BUG",
-- 
2.31.1


      parent reply	other threads:[~2021-06-26  3:40 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-06-26  3:40 [PATCH 0/3] checkpatch tweaks Jim Cromie
2021-06-26  3:40 ` [PATCH 1/3] checkpatch: skip spacing tests on linker scripts Jim Cromie
2021-06-26  4:15   ` Joe Perches
2021-06-28 16:53     ` jim.cromie
2021-06-29 16:48       ` jim.cromie
2021-06-29 18:28         ` Joe Perches
2021-06-29 19:50           ` jim.cromie
2021-06-29 20:01             ` Joe Perches
2021-06-30 16:38               ` jim.cromie
2021-06-30 17:12                 ` Joe Perches
2021-06-26  3:40 ` [PATCH 2/3] checkpatch: tweak extern in C warning Jim Cromie
2021-06-26  4:31   ` Joe Perches
2021-06-27  3:47     ` jim.cromie
2021-06-30 17:33       ` Joe Perches
2021-06-26  3:40 ` Jim Cromie [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210626034016.170306-4-jim.cromie@gmail.com \
    --to=jim.cromie@gmail.com \
    --cc=joe@perches.com \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®