2018-12-12 12:33:58

by Julia Lawall

[permalink] [raw]
Subject: [PATCH 0/2] scripts: coccinelle: Improve boolinit

Reduce the scope of the rule and improve the warning messages.

julia (2):
scripts: coccinelle: only suggest true/false in files that already use
them
scripts: coccinelle: Correct warning message

scripts/coccinelle/misc/boolinit.cocci | 43 +++++++++++++++++++++-------------
1 file changed, 27 insertions(+), 16 deletions(-)

--
1.9.1



2018-12-12 12:33:53

by Julia Lawall

[permalink] [raw]
Subject: [PATCH 1/2] scripts: coccinelle: only suggest true/false in files that already use them

Some code may overall use 0 and 1, so don't introduce occasional
uses of true and false in these cases.

Signed-off-by: Julia Lawall <[email protected]>
---
scripts/coccinelle/misc/boolinit.cocci | 31 +++++++++++++++++++++----------
1 file changed, 21 insertions(+), 10 deletions(-)

diff --git a/scripts/coccinelle/misc/boolinit.cocci b/scripts/coccinelle/misc/boolinit.cocci
index b9abed4..1b44feb 100644
--- a/scripts/coccinelle/misc/boolinit.cocci
+++ b/scripts/coccinelle/misc/boolinit.cocci
@@ -13,10 +13,17 @@ virtual context
virtual org
virtual report

+@boolok@
+symbol true,false;
+@@
+(
+true
+|
+false
+)
+
@depends on patch@
bool t;
-symbol true;
-symbol false;
@@

(
@@ -63,7 +70,7 @@ bool t;
+ t
)

-@depends on patch@
+@depends on patch && boolok@
bool b;
@@
(
@@ -116,19 +123,23 @@ position p;
* t@p != 0
)

-@r3 depends on !patch@
+@r3 depends on !patch && boolok@
bool b;
-position p1,p2;
-constant c;
+position p1;
@@
(
*b@p1 = 0
|
*b@p1 = 1
-|
-*b@p2 = c
)

+@r4 depends on !patch@
+bool b;
+position p2;
+constant c != {0,1};
+@@
+*b@p2 = c
+
@script:python depends on org@
p << r1.p;
@@
@@ -148,7 +159,7 @@ p1 << r3.p1;
cocci.print_main("WARNING: Assignment of bool to 0/1",p1)

@script:python depends on org@
-p2 << r3.p2;
+p2 << r4.p2;
@@

cocci.print_main("ERROR: Assignment of bool to non-0/1 constant",p2)
@@ -172,7 +183,7 @@ p1 << r3.p1;
coccilib.report.print_report(p1[0],"WARNING: Assignment of bool to 0/1")

@script:python depends on report@
-p2 << r3.p2;
+p2 << r4.p2;
@@

coccilib.report.print_report(p2[0],"ERROR: Assignment of bool to non-0/1 constant")
--
1.9.1


2018-12-12 12:34:07

by Julia Lawall

[permalink] [raw]
Subject: [PATCH 2/2] scripts: coccinelle: Correct warning message

"Assignment" requires the assigned value before the place that
value is stored into.

Signed-off-by: Julia Lawall <[email protected]>
---
scripts/coccinelle/misc/boolinit.cocci | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/scripts/coccinelle/misc/boolinit.cocci b/scripts/coccinelle/misc/boolinit.cocci
index 1b44feb..b0584a3 100644
--- a/scripts/coccinelle/misc/boolinit.cocci
+++ b/scripts/coccinelle/misc/boolinit.cocci
@@ -150,19 +150,19 @@ cocci.print_main("WARNING: Comparison to bool",p)
p << r2.p;
@@

-cocci.print_main("WARNING: Comparison of bool to 0/1",p)
+cocci.print_main("WARNING: Comparison of 0/1 to bool variable",p)

@script:python depends on org@
p1 << r3.p1;
@@

-cocci.print_main("WARNING: Assignment of bool to 0/1",p1)
+cocci.print_main("WARNING: Assignment of 0/1 to bool variable",p1)

@script:python depends on org@
p2 << r4.p2;
@@

-cocci.print_main("ERROR: Assignment of bool to non-0/1 constant",p2)
+cocci.print_main("ERROR: Assignment of non-0/1 constant to bool variable",p2)

@script:python depends on report@
p << r1.p;
@@ -174,16 +174,16 @@ coccilib.report.print_report(p[0],"WARNING: Comparison to bool")
p << r2.p;
@@

-coccilib.report.print_report(p[0],"WARNING: Comparison of bool to 0/1")
+coccilib.report.print_report(p[0],"WARNING: Comparison of 0/1 to bool variable")

@script:python depends on report@
p1 << r3.p1;
@@

-coccilib.report.print_report(p1[0],"WARNING: Assignment of bool to 0/1")
+coccilib.report.print_report(p1[0],"WARNING: Assignment of 0/1 to bool variable")

@script:python depends on report@
p2 << r4.p2;
@@

-coccilib.report.print_report(p2[0],"ERROR: Assignment of bool to non-0/1 constant")
+coccilib.report.print_report(p2[0],"ERROR: Assignment of non-0/1 constant to bool variable")
--
1.9.1


2018-12-12 16:48:39

by Himanshu Jha

[permalink] [raw]
Subject: Re: [Cocci] [PATCH 0/2] scripts: coccinelle: Improve boolinit

+Cc Masahiro Yamada

On Wed, Dec 12, 2018 at 12:55:55PM +0100, Julia Lawall wrote:
> Reduce the scope of the rule and improve the warning messages.
>
> julia (2):
> scripts: coccinelle: only suggest true/false in files that already use
> them
> scripts: coccinelle: Correct warning message
>
> scripts/coccinelle/misc/boolinit.cocci | 43 +++++++++++++++++++++-------------
> 1 file changed, 27 insertions(+), 16 deletions(-)
>
> --
> 1.9.1
>
> _______________________________________________
> Cocci mailing list
> [email protected]
> https://systeme.lip6.fr/mailman/listinfo/cocci

--
Himanshu Jha
Undergraduate Student
Department of Electronics & Communication
Guru Tegh Bahadur Institute of Technology

2018-12-15 10:37:09

by Masahiro Yamada

[permalink] [raw]
Subject: Re: [PATCH 0/2] scripts: coccinelle: Improve boolinit

On Wed, Dec 12, 2018 at 9:34 PM Julia Lawall <[email protected]> wrote:
>
> Reduce the scope of the rule and improve the warning messages.
>
> julia (2):
> scripts: coccinelle: only suggest true/false in files that already use
> them
> scripts: coccinelle: Correct warning message


Applied to linux-kbuild. Thanks!


> scripts/coccinelle/misc/boolinit.cocci | 43 +++++++++++++++++++++-------------
> 1 file changed, 27 insertions(+), 16 deletions(-)
>
> --
> 1.9.1
>


--
Best Regards
Masahiro Yamada