summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2023-04-28 18:07:33 +0200
committerDaniel Stenberg <daniel@haxx.se>2023-04-28 23:11:00 +0200
commit9ce7eee07042605045dcfd02a6f5b38ad5c8a05d (patch)
tree7a83474325c43f8d34233dae5bad509b2475ce74 /scripts
parent31303c34e90949847860db82c4768cab1482beda (diff)
downloadcurl-9ce7eee07042605045dcfd02a6f5b38ad5c8a05d.tar.gz
checksrc: find bad indentation in conditions without open brace
If the previous line starts with if/while/for AND ends with a closed parenthesis and there's an equal number of open and closed parentheses on that line, verify that this line is indented $indent more steps, if not a cpp line. Also adjust the fall-out from this fix. Closes #11054
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/checksrc.pl26
1 files changed, 26 insertions, 0 deletions
diff --git a/scripts/checksrc.pl b/scripts/checksrc.pl
index 540b22978..1ec9212a0 100755
--- a/scripts/checksrc.pl
+++ b/scripts/checksrc.pl
@@ -765,6 +765,32 @@ sub scanfile {
}
}
+ # if the previous line starts with if/while/for AND ends with a closed
+ # parenthesis and there's an equal number of open and closed
+ # parentheses, check that this line is indented $indent more steps, if
+ # not a cpp line
+ elsif(!$prevp && ($prevl =~ /^( *)(if|while|for)(\(.*\))\z/)) {
+ my $first = length($1);
+ my $op = $3;
+ my $cl = $3;
+
+ $op =~ s/[^(]//g;
+ $cl =~ s/[^)]//g;
+
+ if(length($op) == length($cl)) {
+ # this line has some character besides spaces
+ if($l =~ /^( *)[^ ]/) {
+ my $second = length($1);
+ my $expect = $first+$indent;
+ if($expect != $second) {
+ my $diff = $second - $first;
+ checkwarn("INDENTATION", $line, length($1), $file, $ol,
+ "not indented $indent steps (uses $diff)");
+ }
+ }
+ }
+ }
+
# check for 'char * name'
if(($l =~ /(^.*(char|int|long|void|CURL|CURLM|CURLMsg|[cC]url_[A-Za-z_]+|struct [a-zA-Z_]+) *(\*+)) (\w+)/) && ($4 !~ /^(const|volatile)$/)) {
checkwarn("ASTERISKSPACE",