check-format.pl: Add check for constant left of comparison operator

Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15077)
This commit is contained in:
Dr. David von Oheimb 2021-04-28 21:45:07 +02:00 committed by Dr. David von Oheimb
parent f14bead2c4
commit ff38103324
3 changed files with 13 additions and 3 deletions

View File

@ -150,6 +150,10 @@ int f(void) /*
hanging_stmt; hanging_stmt;
} }
/* should not trigger: constant on LHS of comparison or assignment operator */
X509 *x509 = NULL;
int y = a + 1 < b;
const OPTIONS passwd_options[] = { const OPTIONS passwd_options[] = {
{"aixmd5", OPT_AIXMD5, '-', "AIX MD5-based password algorithm"}, {"aixmd5", OPT_AIXMD5, '-', "AIX MD5-based password algorithm"},
#if !defined(OPENSSL_NO_DES) && !defined(OPENSSL_NO_DEPRECATED_3_0) #if !defined(OPENSSL_NO_DES) && !defined(OPENSSL_NO_DEPRECATED_3_0)

View File

@ -75,7 +75,8 @@ int f (int a, /*@ space after fn before '(', reported unless sloppy-spc */
long l) /*@ one-letter name 'l' */ long l) /*@ one-letter name 'l' */
{ int /*@ code after '{' opening a block */ { int /*@ code after '{' opening a block */
xx = 1) + /*@ unexpected closing parenthesis */ xx = 1) + /*@ unexpected closing parenthesis */
2] - /*@ unexpected closing bracket */ 0L < /*@ constant on LHS of comparison operator */
a] - /*@ unexpected closing bracket */
3: * /*@ unexpected ':' (without preceding '?') within expr */ 3: * /*@ unexpected ':' (without preceding '?') within expr */
4}; /*@ unexpected closing brace within expression */ 4}; /*@ unexpected closing brace within expression */
char y[] = { /*@0 unclosed brace within initializer/enum expression */ char y[] = { /*@0 unclosed brace within initializer/enum expression */
@ -91,7 +92,7 @@ int f (int a, /*@ space after fn before '(', reported unless sloppy-spc */
b, /*@ expr indent as on line above, accepted if sloppy-hang */ b, /*@ expr indent as on line above, accepted if sloppy-hang */
b, /*@ expr indent off -8 but @ extra indent accepted if sloppy-hang */ b, /*@ expr indent off -8 but @ extra indent accepted if sloppy-hang */
"again aligned" /*@ expr indent off by -9 (left of stmt indent, */ "right", "again aligned" /*@ expr indent off by -9 (left of stmt indent, */ "right",
123 == /*@ .. so reported also with sloppy-hang; this line is too long */ 456 abc == /*@ .. so reported also with sloppy-hang; this line is too long */ 456
# define MAC(A) (A) /*@ nesting indent of preprocessor directive off by 1 */ # define MAC(A) (A) /*@ nesting indent of preprocessor directive off by 1 */
? 1 /*@ hanging expr indent off by 1 */ ? 1 /*@ hanging expr indent off by 1 */
: 2); /*@ hanging expr indent off by 2, or 1 for leading ':' */ : 2); /*@ hanging expr indent off by 2, or 1 for leading ':' */

View File

@ -846,7 +846,12 @@ while (<>) { # loop over all lines of all input files
} }
} }
report("one-letter name '$2'") if (m/(^|.*\W)([lIO])(\W.*|$)/); # single-letter name 'l', 'I', or 'O' report("single-letter name '$2'") if (m/(^|.*\W)([IO])(\W.*|$)/); # single-letter name 'I' or 'O' # maybe re-add 'l'?
# constant on LHS of comparison or assignment, e.g., NULL != x or 'a' < c, but not a + 1 == b
report("constant on LHS of '$2'")
if (m/(['"]|([\+\-\*\/\/%\&\|\^<>]\s*)?\W[0-9]+L?|NULL)\s*([\!<>=]=|[<=>][^<>])/ && $2 eq "");
# TODO report #if 0 and #if 1
# TODO report empty line within local variable definitions # TODO report empty line within local variable definitions