mirror of https://gitee.com/openkylin/linux.git
checkpatch: prefer fallthrough; over fallthrough comments
commit 294f69e662
("compiler_attributes.h: Add 'fallthrough' pseudo
keyword for switch/case use") added the pseudo keyword so add a test for
it to checkpatch.
Warn on a patch or use --strict for files.
Signed-off-by: Joe Perches <joe@perches.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Link: http://lkml.kernel.org/r/8b6c1b9031ab9f3cdebada06b8d46467f1492d68.camel@perches.com
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
a8972573eb
commit
f36d3eb89a
|
@ -2294,6 +2294,19 @@ sub pos_last_openparen {
|
|||
return length(expand_tabs(substr($line, 0, $last_openparen))) + 1;
|
||||
}
|
||||
|
||||
sub get_raw_comment {
|
||||
my ($line, $rawline) = @_;
|
||||
my $comment = '';
|
||||
|
||||
for my $i (0 .. (length($line) - 1)) {
|
||||
if (substr($line, $i, 1) eq "$;") {
|
||||
$comment .= substr($rawline, $i, 1);
|
||||
}
|
||||
}
|
||||
|
||||
return $comment;
|
||||
}
|
||||
|
||||
sub process {
|
||||
my $filename = shift;
|
||||
|
||||
|
@ -2455,6 +2468,7 @@ sub process {
|
|||
$sline =~ s/$;/ /g; #with comments as spaces
|
||||
|
||||
my $rawline = $rawlines[$linenr - 1];
|
||||
my $raw_comment = get_raw_comment($line, $rawline);
|
||||
|
||||
# check if it's a mode change, rename or start of a patch
|
||||
if (!$in_commit_log &&
|
||||
|
@ -6408,6 +6422,28 @@ sub process {
|
|||
}
|
||||
}
|
||||
|
||||
# check for /* fallthrough */ like comment, prefer fallthrough;
|
||||
my @fallthroughs = (
|
||||
'fallthrough',
|
||||
'@fallthrough@',
|
||||
'lint -fallthrough[ \t]*',
|
||||
'intentional(?:ly)?[ \t]*fall(?:(?:s | |-)[Tt]|t)hr(?:ough|u|ew)',
|
||||
'(?:else,?\s*)?FALL(?:S | |-)?THR(?:OUGH|U|EW)[ \t.!]*(?:-[^\n\r]*)?',
|
||||
'Fall(?:(?:s | |-)[Tt]|t)hr(?:ough|u|ew)[ \t.!]*(?:-[^\n\r]*)?',
|
||||
'fall(?:s | |-)?thr(?:ough|u|ew)[ \t.!]*(?:-[^\n\r]*)?',
|
||||
);
|
||||
if ($raw_comment ne '') {
|
||||
foreach my $ft (@fallthroughs) {
|
||||
if ($raw_comment =~ /$ft/) {
|
||||
my $msg_level = \&WARN;
|
||||
$msg_level = \&CHK if ($file);
|
||||
&{$msg_level}("PREFER_FALLTHROUGH",
|
||||
"Prefer 'fallthrough;' over fallthrough comment\n" . $herecurr);
|
||||
last;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# check for switch/default statements without a break;
|
||||
if ($perl_version_ok &&
|
||||
defined $stat &&
|
||||
|
|
Loading…
Reference in New Issue