checksrc: check for spaces around '?', '>' and '<'

Closes #14921
This commit is contained in:
Daniel Stenberg 2024-09-18 15:28:19 +02:00
parent fbf5d507ce
commit e666a678bd
No known key found for this signature in database
GPG Key ID: 5CC908FDB71E12C2
2 changed files with 58 additions and 5 deletions

View File

@ -81,6 +81,8 @@ my %warnings = (
'SPACEBEFORELABEL' => 'labels not at the start of the line',
'MULTISPACE' => 'multiple spaces used when not suitable',
'NOSPACEEQUALS' => 'equals sign without preceding space',
'NOSPACEQ' => 'missing space around ternary question mark operator',
'NOSPACETHAN' => 'missing space aground less or greater than',
'NOTEQUALSZERO', => 'if/while comparison with != 0',
'ONELINECONDITION' => 'conditional block on the same line as the if()',
'OPENCOMMENT' => 'file ended with a /* comment still "open"',
@ -623,6 +625,37 @@ sub scanfile {
"space after open parenthesis");
}
# check spaces before question mark
if($nostr =~ /^(.*)(\w|\)|\]|')\?/i) {
my $m = $1;
my $e = $nostr;
$e =~ s/'?'//g; # ignore these
if($e =~ /^(.*)(\w|\)|')\?/i) {
checkwarn("NOSPACEQ",
$line, length($m)+1, $file, $l,
"missing space before question mark");
}
}
# check spaces after question mark
if($nostr =~ /^(.*)\?\w/i) {
checkwarn("NOSPACEQ",
$line, length($1)+1, $file, $l,
"missing space after question mark");
}
# check spaces before less or greater than
if($nostr =~ /^(.*)(\w|\)|\])[<>]/) {
checkwarn("NOSPACETHAN",
$line, length($1)+1, $file, $l,
"missing space before less or greater than");
}
# check spaces after less or greater than
if($nostr =~ /^(.*)[^-][<>](\w|\(|\[)/) {
checkwarn("NOSPACETHAN",
$line, length($1)+1, $file, $l,
"missing space after less or greater than");
}
# check spaces before close parentheses, unless it was a space or a
# close parenthesis!
if($l =~ /(.*[^\) ]) \)/) {

View File

@ -72,10 +72,12 @@ void startfunc(int a, int b) {
int a = sizeof int;
int a = snprintf(buffer, sizeof(buffer), "%d", 99);
int moo = hej?wrong:a>b;
int moo2 = wrong2:(a)>(b);
if(a) b++;
// CPP comment?
// CPP comment ?
/* comment doesn't end
@ -163,11 +165,29 @@ void startfunc(int a, int b) {
./%LOGDIR/code1185.c:53:10: warning: use of snprintf is banned (SNPRINTF)
int a = snprintf(buffer, sizeof(buffer), "%d", 99);
^
./%LOGDIR/code1185.c:55:7: warning: conditional block on the same line (ONELINECONDITION)
./%LOGDIR/code1185.c:54:15: warning: missing space before question mark (NOSPACEQ)
int moo = hej?wrong:a>b;
^
./%LOGDIR/code1185.c:54:16: warning: missing space after question mark (NOSPACEQ)
int moo = hej?wrong:a>b;
^
./%LOGDIR/code1185.c:54:23: warning: missing space before less or greater than (NOSPACETHAN)
int moo = hej?wrong:a>b;
^
./%LOGDIR/code1185.c:54:23: warning: missing space after less or greater than (NOSPACETHAN)
int moo = hej?wrong:a>b;
^
./%LOGDIR/code1185.c:55:23: warning: missing space before less or greater than (NOSPACETHAN)
int moo2 = wrong2:(a)>(b);
^
./%LOGDIR/code1185.c:55:23: warning: missing space after less or greater than (NOSPACETHAN)
int moo2 = wrong2:(a)>(b);
^
./%LOGDIR/code1185.c:57:7: warning: conditional block on the same line (ONELINECONDITION)
if(a) b++;
^
./%LOGDIR/code1185.c:57:2: warning: // comment (CPPCOMMENTS)
// CPP comment?
./%LOGDIR/code1185.c:59:2: warning: // comment (CPPCOMMENTS)
// CPP comment ?
^
./%LOGDIR/code1185.c:1:1: error: Missing copyright statement (COPYRIGHT)
@ -175,7 +195,7 @@ void startfunc(int a, int b) {
./%LOGDIR/code1185.c:1:1: error: Missing closing comment (OPENCOMMENT)
^
checksrc: 0 errors and 30 warnings
checksrc: 0 errors and 36 warnings
</stdout>
<errorcode>
5