diff mbox series

[-next,v2,1/9] coccinelle: Add rules to find str_true_false() replacements

Message ID 20240904091451.3328272-2-lihongbo22@huawei.com (mailing list archive)
State Superseded
Headers show
Series coccinelle: Add some rules for string_chioces helpers. | expand

Commit Message

Hongbo Li Sept. 4, 2024, 9:14 a.m. UTC
After str_true_false() has been introduced in the tree,
we can add rules for finding places where str_true_false()
can be used. A simple test can find over 10 locations.

Signed-off-by: Hongbo Li <lihongbo22@huawei.com>
---
 scripts/coccinelle/api/string_choices.cocci | 23 +++++++++++++++++++++
 1 file changed, 23 insertions(+)

Comments

Julia Lawall Sept. 9, 2024, 4 p.m. UTC | #1
On Wed, 4 Sep 2024, Hongbo Li wrote:

> After str_true_false() has been introduced in the tree,
> we can add rules for finding places where str_true_false()
> can be used. A simple test can find over 10 locations.
>
> Signed-off-by: Hongbo Li <lihongbo22@huawei.com>
> ---
>  scripts/coccinelle/api/string_choices.cocci | 23 +++++++++++++++++++++
>  1 file changed, 23 insertions(+)
>
> diff --git a/scripts/coccinelle/api/string_choices.cocci b/scripts/coccinelle/api/string_choices.cocci
> index 5e729f187f22..50329c4c8acd 100644
> --- a/scripts/coccinelle/api/string_choices.cocci
> +++ b/scripts/coccinelle/api/string_choices.cocci
> @@ -85,3 +85,26 @@ e << str_down_up_r.E;
>  @@
>
>  coccilib.report.print_report(p[0], "opportunity for str_down_up(%s)" % e)
> +
> +@str_true_false depends on patch@
> +expression E;
> +@@
> +(

There is no need for the above.  That is only needed if there is a
disjunction, ie a set of possible changes.  Likewise no need for the ),
and the same in the next rule.

julia

> +-      ((E) ? "true" : "false")
> ++      str_true_false(E)
> +)
> +
> +@str_true_false_r depends on !patch exists@
> +expression E;
> +position P;
> +@@
> +(
> +*      ((E@P) ? "true" : "false")
> +)
> +
> +@script:python depends on report@
> +p << str_true_false_r.P;
> +e << str_true_false_r.E;
> +@@
> +
> +coccilib.report.print_report(p[0], "opportunity for str_true_false(%s)" % e)
> --
> 2.34.1
>
>
Hongbo Li Sept. 10, 2024, 2:23 a.m. UTC | #2
On 2024/9/10 0:00, Julia Lawall wrote:
> 
> 
> On Wed, 4 Sep 2024, Hongbo Li wrote:
> 
>> After str_true_false() has been introduced in the tree,
>> we can add rules for finding places where str_true_false()
>> can be used. A simple test can find over 10 locations.
>>
>> Signed-off-by: Hongbo Li <lihongbo22@huawei.com>
>> ---
>>   scripts/coccinelle/api/string_choices.cocci | 23 +++++++++++++++++++++
>>   1 file changed, 23 insertions(+)
>>
>> diff --git a/scripts/coccinelle/api/string_choices.cocci b/scripts/coccinelle/api/string_choices.cocci
>> index 5e729f187f22..50329c4c8acd 100644
>> --- a/scripts/coccinelle/api/string_choices.cocci
>> +++ b/scripts/coccinelle/api/string_choices.cocci
>> @@ -85,3 +85,26 @@ e << str_down_up_r.E;
>>   @@
>>
>>   coccilib.report.print_report(p[0], "opportunity for str_down_up(%s)" % e)
>> +
>> +@str_true_false depends on patch@
>> +expression E;
>> +@@
>> +(
> 
> There is no need for the above.  That is only needed if there is a
> disjunction, ie a set of possible changes.  Likewise no need for the ),
> and the same in the next rule.

Do you mean str_true_false_r is enough, not need for str_true_false? I 
noticed it was written this way before, so I've kept consistent with the 
previous writing style.

Thanks,
Hongbo

> 
> julia
> 
>> +-      ((E) ? "true" : "false")
>> ++      str_true_false(E)
>> +)
>> +
>> +@str_true_false_r depends on !patch exists@
>> +expression E;
>> +position P;
>> +@@
>> +(
>> +*      ((E@P) ? "true" : "false")
>> +)
>> +
>> +@script:python depends on report@
>> +p << str_true_false_r.P;
>> +e << str_true_false_r.E;
>> +@@
>> +
>> +coccilib.report.print_report(p[0], "opportunity for str_true_false(%s)" % e)
>> --
>> 2.34.1
>>
>>
Hongbo Li Sept. 10, 2024, 2:37 a.m. UTC | #3
On 2024/9/10 10:23, Hongbo Li wrote:
> 
> 
> On 2024/9/10 0:00, Julia Lawall wrote:
>>
>>
>> On Wed, 4 Sep 2024, Hongbo Li wrote:
>>
>>> After str_true_false() has been introduced in the tree,
>>> we can add rules for finding places where str_true_false()
>>> can be used. A simple test can find over 10 locations.
>>>
>>> Signed-off-by: Hongbo Li <lihongbo22@huawei.com>
>>> ---
>>>   scripts/coccinelle/api/string_choices.cocci | 23 +++++++++++++++++++++
>>>   1 file changed, 23 insertions(+)
>>>
>>> diff --git a/scripts/coccinelle/api/string_choices.cocci 
>>> b/scripts/coccinelle/api/string_choices.cocci
>>> index 5e729f187f22..50329c4c8acd 100644
>>> --- a/scripts/coccinelle/api/string_choices.cocci
>>> +++ b/scripts/coccinelle/api/string_choices.cocci
>>> @@ -85,3 +85,26 @@ e << str_down_up_r.E;
>>>   @@
>>>
>>>   coccilib.report.print_report(p[0], "opportunity for 
>>> str_down_up(%s)" % e)
>>> +
>>> +@str_true_false depends on patch@
>>> +expression E;
>>> +@@
>>> +(
>>
>> There is no need for the above.  That is only needed if there is a
>> disjunction, ie a set of possible changes.  Likewise no need for the ),
or, you mean the parentheses are unnecessary?

Thanks,
Hongbo
>> and the same in the next rule.
> 
> Do you mean str_true_false_r is enough, not need for str_true_false? I 
> noticed it was written this way before, so I've kept consistent with the 
> previous writing style.
> 
> Thanks,
> Hongbo
> 
>>
>> julia
>>
>>> +-      ((E) ? "true" : "false")
>>> ++      str_true_false(E)
>>> +)
>>> +
>>> +@str_true_false_r depends on !patch exists@
>>> +expression E;
>>> +position P;
>>> +@@
>>> +(
>>> +*      ((E@P) ? "true" : "false")
>>> +)
>>> +
>>> +@script:python depends on report@
>>> +p << str_true_false_r.P;
>>> +e << str_true_false_r.E;
>>> +@@
>>> +
>>> +coccilib.report.print_report(p[0], "opportunity for 
>>> str_true_false(%s)" % e)
>>> -- 
>>> 2.34.1
>>>
>>>
diff mbox series

Patch

diff --git a/scripts/coccinelle/api/string_choices.cocci b/scripts/coccinelle/api/string_choices.cocci
index 5e729f187f22..50329c4c8acd 100644
--- a/scripts/coccinelle/api/string_choices.cocci
+++ b/scripts/coccinelle/api/string_choices.cocci
@@ -85,3 +85,26 @@  e << str_down_up_r.E;
 @@
 
 coccilib.report.print_report(p[0], "opportunity for str_down_up(%s)" % e)
+
+@str_true_false depends on patch@
+expression E;
+@@
+(
+-      ((E) ? "true" : "false")
++      str_true_false(E)
+)
+
+@str_true_false_r depends on !patch exists@
+expression E;
+position P;
+@@
+(
+*      ((E@P) ? "true" : "false")
+)
+
+@script:python depends on report@
+p << str_true_false_r.P;
+e << str_true_false_r.E;
+@@
+
+coccilib.report.print_report(p[0], "opportunity for str_true_false(%s)" % e)