Commit 79682c0c authored by Joe Perches's avatar Joe Perches Committed by Linus Torvalds

checkpatch: add --fix for CONCATENATED_STRING and STRING_FRAGMENTS

Add the ability to --fix these string issues.

e.g.:
	printk(KERN_INFO"bar" "baz"QUX);
converts to
	printk(KERN_INFO "barbaz" QUX);

Link: http://lkml.kernel.org/r/a9fb505ccfedffc5869d08832a7ff05a21d85621.camel@perches.comSigned-off-by: default avatarJoe Perches <joe@perches.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent d729593e
...@@ -5330,15 +5330,28 @@ sub process { ...@@ -5330,15 +5330,28 @@ sub process {
} }
# concatenated string without spaces between elements # concatenated string without spaces between elements
if ($line =~ /$String[A-Z_]/ || $line =~ /[A-Za-z0-9_]$String/) { if ($line =~ /$String[A-Za-z0-9_]/ || $line =~ /[A-Za-z0-9_]$String/) {
CHK("CONCATENATED_STRING", if (CHK("CONCATENATED_STRING",
"Concatenated strings should use spaces between elements\n" . $herecurr); "Concatenated strings should use spaces between elements\n" . $herecurr) &&
$fix) {
while ($line =~ /($String)/g) {
my $extracted_string = substr($rawline, $-[0], $+[0] - $-[0]);
$fixed[$fixlinenr] =~ s/\Q$extracted_string\E([A-Za-z0-9_])/$extracted_string $1/;
$fixed[$fixlinenr] =~ s/([A-Za-z0-9_])\Q$extracted_string\E/$1 $extracted_string/;
}
}
} }
# uncoalesced string fragments # uncoalesced string fragments
if ($line =~ /$String\s*"/) { if ($line =~ /$String\s*"/) {
WARN("STRING_FRAGMENTS", if (WARN("STRING_FRAGMENTS",
"Consecutive strings are generally better as a single string\n" . $herecurr); "Consecutive strings are generally better as a single string\n" . $herecurr) &&
$fix) {
while ($line =~ /($String)(?=\s*")/g) {
my $extracted_string = substr($rawline, $-[0], $+[0] - $-[0]);
$fixed[$fixlinenr] =~ s/\Q$extracted_string\E\s*"/substr($extracted_string, 0, -1)/e;
}
}
} }
# check for non-standard and hex prefixed decimal printf formats # check for non-standard and hex prefixed decimal printf formats
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment