[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20250205120540.387447-1-kurti@invicto.ai>
Date: Wed, 05 Feb 2025 12:05:41 +0000 (UTC)
From: albankurti <kurti@...icto.ai>
To: Joe Perches <joe@...ches.com>
Cc: Andrew Morton <akpm@...ux-foundation.org>,
Charalampos Mitrodimas <charmitro@...teo.net>,
Alban Kurti <kurti@...icto.ai>,
linux-kernel@...r.kernel.org,
rust-for-linux@...r.kernel.org,
Miguel Ojeda <ojeda@...nel.org>
Subject: [PATCH v2 1/1] checkpatch: strip comments fix
Fixes the false positive warning when there is a comment on a pr_ or
dev_ log that ends with \n correctly.
Also contains some improvements on the macro_pattern to make it more
concise.
Suggested-by: Miguel Ojeda <ojeda@...nel.org>
Closes: https://github.com/Rust-for-Linux/linux/issues/1140
Signed-off-by: albankurti <kurti@...icto.ai>
---
scripts/checkpatch.pl | 46 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 46 insertions(+)
diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 9eed3683ad76..3256b5f31835 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -3888,6 +3888,52 @@ sub process {
}
}
+# check for pr_* and dev_* logs without a newline for C and Rust files to avoid missing log messages
+ my $log_macro_pattern = qr{
+ \b
+ (
+ pr_(?:emerg|alert|crit|err|warn|notice|info|debug)
+ | dev_(?:emerg|alert|crit|err|warn|notice|info|dbg)
+ )
+ (!?)
+ \s*
+ \(
+ \s*
+ "([^"]*)"
+ }x;
+
+ if ($realfile =~ /\.(?:c|h|rs)$/) {
+ if ($rawline =~ /^\+/) {
+ my $cleanline = $rawline;
+
+ $cleanline =~ s/^[+\s]+//;
+ $cleanline =~ s/\r?$//;
+
+ $cleanline =~ s{/\*.*?\*/}{}g;
+ $cleanline =~ s{//.*}{}g;
+
+ if ($cleanline =~ /$log_macro_pattern/) {
+ my $macro_call = $1;
+ my $maybe_excl = $2;
+ my $string_arg = $3;
+
+ $string_arg =~ s/\s+$//;
+ if ($realfile =~ /\.rs$/ && $maybe_excl ne '!') {
+ return;
+ }
+
+ if ($string_arg !~ /\\n$/ && $string_arg !~ /\n$/) {
+ my $lang = ($realfile =~ /\.rs$/) ? "Rust" : "C";
+ WARN("${lang}_LOG_NO_NEWLINE",
+ "Usage of $macro_call without a trailing newline. Consider adding '\\n'.\n" .
+ $herecurr);
+ }
+ }
+ }
+ }
+
+
# check for .L prefix local symbols in .S files
if ($realfile =~ /\.S$/ &&
$line =~ /^\+\s*(?:[A-Z]+_)?SYM_[A-Z]+_(?:START|END)(?:_[A-Z_]+)?\s*\(\s*\.L/) {
--
2.48.1
Powered by blists - more mailing lists