2015-05-27 01:10:11

by Shailendra Verma

[permalink] [raw]
Subject: [PATCH] scripts:checkpatch - Do not give error if static bool or global bool variables are assigned to false value.

The bool value false is not always to be 0.So this patch will
prevent for error if static bool or global bool are initialized
with false value.

Signed-off-by: Shailendra Verma <[email protected]>
---
scripts/checkpatch.pl | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 89b1df4..74901c6 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -3169,21 +3169,21 @@ sub process {
}

# check for global initialisers.
- if ($line =~ /^\+(\s*$Type\s*$Ident\s*(?:\s+$Modifier))*\s*=\s*(0|NULL|false)\s*;/) {
+ if ($line =~ /^\+(\s*$Type\s*$Ident\s*(?:\s+$Modifier))*\s*=\s*(0|NULL)\s*;/) {
if (ERROR("GLOBAL_INITIALISERS",
"do not initialise globals to 0 or NULL\n" .
$herecurr) &&
$fix) {
- $fixed[$fixlinenr] =~ s/($Type\s*$Ident\s*(?:\s+$Modifier))*\s*=\s*(0|NULL|false)\s*;/$1;/;
+ $fixed[$fixlinenr] =~ s/($Type\s*$Ident\s*(?:\s+$Modifier))*\s*=\s*(0|NULL)\s*;/$1;/;
}
}
# check for static initialisers.
- if ($line =~ /^\+.*\bstatic\s.*=\s*(0|NULL|false)\s*;/) {
+ if ($line =~ /^\+.*\bstatic\s.*=\s*(0|NULL)\s*;/) {
if (ERROR("INITIALISED_STATIC",
"do not initialise statics to 0 or NULL\n" .
$herecurr) &&
$fix) {
- $fixed[$fixlinenr] =~ s/(\bstatic\s.*?)\s*=\s*(0|NULL|false)\s*;/$1;/;
+ $fixed[$fixlinenr] =~ s/(\bstatic\s.*?)\s*=\s*(0|NULL)\s*;/$1;/;
}
}

--
1.7.9.5


2015-05-27 01:57:06

by Joe Perches

[permalink] [raw]
Subject: Re: [PATCH] scripts:checkpatch - Do not give error if static bool or global bool variables are assigned to false value.

On Wed, 2015-05-27 at 06:39 +0530, Shailendra Verma wrote:
> The bool value false is not always to be 0.

By definition (7.16 Boolean type and values <stdbool.h>),
false is integer 0.

Setting a boolean variable to 0 is equivalent to
setting it to false.

What I think you mean is that a boolean variable can be
set to 0 when false might be more intelligible.

> So this patch will
> prevent for error if static bool or global bool are initialized
> with false value.
[]
> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
[]
> # check for global initialisers.
> - if ($line =~ /^\+(\s*$Type\sa*$Ident\s*(?:\s+$Modifier))*\s*=\s*(0|NULL|false)\s*;/) {
> + if ($line =~ /^\+(\s*$Type\s*$Ident\s*(?:\s+$Modifier))*\s*=\s*(0|NULL)\s*;/) {
> if (ERROR("GLOBAL_INITIALISERS",
> "do not initialise globals to 0 or NULL\n" .
> $herecurr) &&

I think using false adds some clarity for the reader and
even if something were to be applied, the error message
should probably be "do not initialize globals to $2\n"

(choose the spelling of your choice for initialise/initialize)

The (0|NULL|false) regex could probably be expanded to
(0x0+|0|NULL|false) or that regex could be saved as a
$our zero_value and tested using that new variable.

[]
> # check for static initialisers.
> - if ($line =~ /^\+.*\bstatic\s.*=\s*(0|NULL|false)\s*;/) {
> + if ($line =~ /^\+.*\bstatic\s.*=\s*(0|NULL)\s*;/) {
> if (ERROR("INITIALISED_STATIC",
> "do not initialise statics to 0 or NULL\n" .
> $herecurr) &&

$1 here

2015-05-27 03:23:47

by Joe Perches

[permalink] [raw]
Subject: Re: [PATCH] scripts:checkpatch - Do not give error if static bool or global bool variables are assigned to false value.

On Wed, 2015-05-27 at 08:43 +0530, Shailendra Verma wrote:
> Hello Joe,
>
> Thanks for the clarification. So I will change the error message as
> suggested by you and will send the patch to you.

Hello Shailendra.

My humble apologies to you.

I totally misunderstood what you were writing.
I guess the first sentence threw me for a loop.

It makes sense to avoid emitting a warning message with

bool foo = false;

cheers, Joe