All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] scripts/coccinelle/misc/semicolon.cocci: Add unneeded semicolon test
@ 2012-12-08 17:34 ` Peter Senna Tschudin
  0 siblings, 0 replies; 15+ messages in thread
From: Peter Senna Tschudin @ 2012-12-08 17:34 UTC (permalink / raw)
  To: mmarek
  Cc: Julia.Lawall, Gilles.Muller, nicolas.palix, peter.senna, cocci,
	linux-kernel

This semantic patch looks for semicolons that can be removed without
changing the semantics of the code. The confidence is moderate
because there are some false positives on cases like:

b/drivers/mmc/host/cb710-mmc.c:589
                break;
        case MMC_POWER_UP:
        default:
-               /* ignore */;
        }

There are 37 patches accepted reported by this semantic patch and
more than 300 fixes to be applied.

Signed-off-by: Peter Senna Tschudin <peter.senna@gmail.com>
---
Resending unchanged. Last sent on November 13 2012. First sent on October 30 2012.

 scripts/coccinelle/misc/semicolon.cocci | 83 +++++++++++++++++++++++++++++++++
 1 file changed, 83 insertions(+)
 create mode 100644 scripts/coccinelle/misc/semicolon.cocci

diff --git a/scripts/coccinelle/misc/semicolon.cocci b/scripts/coccinelle/misc/semicolon.cocci
new file mode 100644
index 0000000..a47eba2
--- /dev/null
+++ b/scripts/coccinelle/misc/semicolon.cocci
@@ -0,0 +1,83 @@
+///
+/// Removes unneeded semicolon.
+///
+// Confidence: Moderate
+// Copyright: (C) 2012 Peter Senna Tschudin, INRIA/LIP6.  GPLv2.
+// URL: http://coccinelle.lip6.fr/
+// Comments: Some false positives on empty default cases in switch statements.
+// Options: --no-includes --include-headers
+
+virtual patch
+virtual report
+virtual context
+virtual org
+
+@r_default@
+position p;
+@@
+switch (...)
+{
+default: ...;@p
+}
+
+@r_case@
+position p;
+@@
+(
+switch (...)
+{
+case ...:;@p
+}
+|
+switch (...)
+{
+case ...:...
+case ...:;@p
+}
+|
+switch (...)
+{
+case ...:...
+case ...:
+case ...:;@p
+}
+)
+
+@r1@
+statement S;
+position p1;
+position p != {r_default.p, r_case.p};
+identifier label;
+@@
+(
+label:;
+|
+S@p1;@p
+)
+
+@script:python@
+p << r1.p;
+p1 << r1.p1;
+@@
+if p[0].line != p1[0].line_end:
+	cocci.include_match(False)
+
+@depends on patch@
+position r1.p;
+@@
+-;@p
+
+@script:python depends on report@
+p << r1.p;
+@@
+coccilib.report.print_report(p[0],"Unneeded semicolon")
+
+@depends on context@
+position r1.p;
+@@
+*;@p
+
+@script:python depends on org@
+p << r1.p;
+@@
+cocci.print_main("Unneeded semicolon",p)
-- 
1.7.11.7


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [Cocci] [PATCH] scripts/coccinelle/misc/semicolon.cocci: Add unneeded semicolon test
@ 2012-12-08 17:34 ` Peter Senna Tschudin
  0 siblings, 0 replies; 15+ messages in thread
From: Peter Senna Tschudin @ 2012-12-08 17:34 UTC (permalink / raw)
  To: cocci

This semantic patch looks for semicolons that can be removed without
changing the semantics of the code. The confidence is moderate
because there are some false positives on cases like:

b/drivers/mmc/host/cb710-mmc.c:589
                break;
        case MMC_POWER_UP:
        default:
-               /* ignore */;
        }

There are 37 patches accepted reported by this semantic patch and
more than 300 fixes to be applied.

Signed-off-by: Peter Senna Tschudin <peter.senna@gmail.com>
---
Resending unchanged. Last sent on November 13 2012. First sent on October 30 2012.

 scripts/coccinelle/misc/semicolon.cocci | 83 +++++++++++++++++++++++++++++++++
 1 file changed, 83 insertions(+)
 create mode 100644 scripts/coccinelle/misc/semicolon.cocci

diff --git a/scripts/coccinelle/misc/semicolon.cocci b/scripts/coccinelle/misc/semicolon.cocci
new file mode 100644
index 0000000..a47eba2
--- /dev/null
+++ b/scripts/coccinelle/misc/semicolon.cocci
@@ -0,0 +1,83 @@
+///
+/// Removes unneeded semicolon.
+///
+// Confidence: Moderate
+// Copyright: (C) 2012 Peter Senna Tschudin, INRIA/LIP6.  GPLv2.
+// URL: http://coccinelle.lip6.fr/
+// Comments: Some false positives on empty default cases in switch statements.
+// Options: --no-includes --include-headers
+
+virtual patch
+virtual report
+virtual context
+virtual org
+
+ at r_default@
+position p;
+@@
+switch (...)
+{
+default: ...;@p
+}
+
+ at r_case@
+position p;
+@@
+(
+switch (...)
+{
+case ...:;@p
+}
+|
+switch (...)
+{
+case ...:...
+case ...:;@p
+}
+|
+switch (...)
+{
+case ...:...
+case ...:
+case ...:;@p
+}
+)
+
+ at r1@
+statement S;
+position p1;
+position p != {r_default.p, r_case.p};
+identifier label;
+@@
+(
+label:;
+|
+S at p1;@p
+)
+
+ at script:python@
+p << r1.p;
+p1 << r1.p1;
+@@
+if p[0].line != p1[0].line_end:
+	cocci.include_match(False)
+
+ at depends on patch@
+position r1.p;
+@@
+-;@p
+
+ at script:python depends on report@
+p << r1.p;
+@@
+coccilib.report.print_report(p[0],"Unneeded semicolon")
+
+ at depends on context@
+position r1.p;
+@@
+*;@p
+
+@script:python depends on org@
+p << r1.p;
+@@
+cocci.print_main("Unneeded semicolon",p)
-- 
1.7.11.7

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* Re: [PATCH] scripts/coccinelle/misc/semicolon.cocci: Add unneeded semicolon test
  2012-12-08 17:34 ` [Cocci] " Peter Senna Tschudin
@ 2012-12-08 17:45   ` Joe Perches
  -1 siblings, 0 replies; 15+ messages in thread
From: Joe Perches @ 2012-12-08 17:45 UTC (permalink / raw)
  To: Peter Senna Tschudin
  Cc: mmarek, Julia.Lawall, Gilles.Muller, nicolas.palix, cocci, linux-kernel

On Sat, 2012-12-08 at 15:34 -0200, Peter Senna Tschudin wrote:
> This semantic patch looks for semicolons that can be removed without
> changing the semantics of the code. The confidence is moderate
> because there are some false positives on cases like:
> 
> b/drivers/mmc/host/cb710-mmc.c:589
>                 break;
>         case MMC_POWER_UP:
>         default:
> -               /* ignore */;
>         }
[]
> diff --git a/scripts/coccinelle/misc/semicolon.cocci b/scripts/coccinelle/misc/semicolon.cocci
[]
> +@r1@
> +statement S;
> +position p1;
> +position p != {r_default.p, r_case.p};
> +identifier label;
> +@@
> +(
> +label:;
> +|
> +S@p1;@p
> +)
> +

I believe this also fails on this case:

	void some_func(...)
	{
		...
		if (foo)
			goto exit;
		...

	exit:
		;
	}

where gcc needs a semicolon after a label before a function exit.


^ permalink raw reply	[flat|nested] 15+ messages in thread

* [Cocci] [PATCH] scripts/coccinelle/misc/semicolon.cocci: Add unneeded semicolon test
@ 2012-12-08 17:45   ` Joe Perches
  0 siblings, 0 replies; 15+ messages in thread
From: Joe Perches @ 2012-12-08 17:45 UTC (permalink / raw)
  To: cocci

On Sat, 2012-12-08 at 15:34 -0200, Peter Senna Tschudin wrote:
> This semantic patch looks for semicolons that can be removed without
> changing the semantics of the code. The confidence is moderate
> because there are some false positives on cases like:
> 
> b/drivers/mmc/host/cb710-mmc.c:589
>                 break;
>         case MMC_POWER_UP:
>         default:
> -               /* ignore */;
>         }
[]
> diff --git a/scripts/coccinelle/misc/semicolon.cocci b/scripts/coccinelle/misc/semicolon.cocci
[]
> + at r1@
> +statement S;
> +position p1;
> +position p != {r_default.p, r_case.p};
> +identifier label;
> +@@
> +(
> +label:;
> +|
> +S at p1;@p
> +)
> +

I believe this also fails on this case:

	void some_func(...)
	{
		...
		if (foo)
			goto exit;
		...

	exit:
		;
	}

where gcc needs a semicolon after a label before a function exit.

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH] scripts/coccinelle/misc/semicolon.cocci: Add unneeded semicolon test
  2012-12-08 17:45   ` [Cocci] " Joe Perches
@ 2012-12-08 18:13     ` Peter Senna Tschudin
  -1 siblings, 0 replies; 15+ messages in thread
From: Peter Senna Tschudin @ 2012-12-08 18:13 UTC (permalink / raw)
  To: Joe Perches
  Cc: mmarek, Julia Lawall, Gilles Muller, Nicolas Palix, cocci, linux-kernel

On Sat, Dec 8, 2012 at 3:45 PM, Joe Perches <joe@perches.com> wrote:
> On Sat, 2012-12-08 at 15:34 -0200, Peter Senna Tschudin wrote:
>> This semantic patch looks for semicolons that can be removed without
>> changing the semantics of the code. The confidence is moderate
>> because there are some false positives on cases like:
>>
>> b/drivers/mmc/host/cb710-mmc.c:589
>>                 break;
>>         case MMC_POWER_UP:
>>         default:
>> -               /* ignore */;
>>         }
> []
>> diff --git a/scripts/coccinelle/misc/semicolon.cocci b/scripts/coccinelle/misc/semicolon.cocci
> []
>> +@r1@
>> +statement S;
>> +position p1;
>> +position p != {r_default.p, r_case.p};
>> +identifier label;
>> +@@
>> +(
>> +label:;
>> +|
>> +S@p1;@p
>> +)
>> +
>
> I believe this also fails on this case:
>
>         void some_func(...)
>         {
>                 ...
>                 if (foo)
>                         goto exit;
>                 ...
>
>         exit:
>                 ;
>         }
>
> where gcc needs a semicolon after a label before a function exit.

No it does not fail. This issue is switch/case specific. See how I've tested:

$ cat /tmp/test.c
void some_func(void){
        int *foo;
        if (foo)
        goto exit;

exit:
;
}

void few_func (void){
        int a;
        switch (a){
                case 1:
                        a=1;
                        break;
                case 2:
                default:
                        ;
        }
}

void main (void)
{
        int a;
        some_func();
        few_func();
}


$ spatch -D patch scripts/coccinelle/misc/semicolon.cocci /tmp/test.c
init_defs_builtins: /usr/local/share/coccinelle/standard.h
HANDLING: /tmp/test.c
diff =
--- /tmp/test.c
+++ /tmp/cocci-output-2570-defed8-test.c
@@ -15,7 +15,6 @@ void few_func (void){
  break;
  case 2:
  default:
- ;
  }
 }



>



--
Peter

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [Cocci] [PATCH] scripts/coccinelle/misc/semicolon.cocci: Add unneeded semicolon test
@ 2012-12-08 18:13     ` Peter Senna Tschudin
  0 siblings, 0 replies; 15+ messages in thread
From: Peter Senna Tschudin @ 2012-12-08 18:13 UTC (permalink / raw)
  To: cocci

On Sat, Dec 8, 2012 at 3:45 PM, Joe Perches <joe@perches.com> wrote:
> On Sat, 2012-12-08 at 15:34 -0200, Peter Senna Tschudin wrote:
>> This semantic patch looks for semicolons that can be removed without
>> changing the semantics of the code. The confidence is moderate
>> because there are some false positives on cases like:
>>
>> b/drivers/mmc/host/cb710-mmc.c:589
>>                 break;
>>         case MMC_POWER_UP:
>>         default:
>> -               /* ignore */;
>>         }
> []
>> diff --git a/scripts/coccinelle/misc/semicolon.cocci b/scripts/coccinelle/misc/semicolon.cocci
> []
>> + at r1@
>> +statement S;
>> +position p1;
>> +position p != {r_default.p, r_case.p};
>> +identifier label;
>> +@@
>> +(
>> +label:;
>> +|
>> +S at p1;@p
>> +)
>> +
>
> I believe this also fails on this case:
>
>         void some_func(...)
>         {
>                 ...
>                 if (foo)
>                         goto exit;
>                 ...
>
>         exit:
>                 ;
>         }
>
> where gcc needs a semicolon after a label before a function exit.

No it does not fail. This issue is switch/case specific. See how I've tested:

$ cat /tmp/test.c
void some_func(void){
        int *foo;
        if (foo)
        goto exit;

exit:
;
}

void few_func (void){
        int a;
        switch (a){
                case 1:
                        a=1;
                        break;
                case 2:
                default:
                        ;
        }
}

void main (void)
{
        int a;
        some_func();
        few_func();
}


$ spatch -D patch scripts/coccinelle/misc/semicolon.cocci /tmp/test.c
init_defs_builtins: /usr/local/share/coccinelle/standard.h
HANDLING: /tmp/test.c
diff =
--- /tmp/test.c
+++ /tmp/cocci-output-2570-defed8-test.c
@@ -15,7 +15,6 @@ void few_func (void){
  break;
  case 2:
  default:
- ;
  }
 }



>



--
Peter

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH] scripts/coccinelle/misc/semicolon.cocci: Add unneeded semicolon test
  2012-12-08 18:13     ` [Cocci] " Peter Senna Tschudin
@ 2012-12-08 18:39       ` Joe Perches
  -1 siblings, 0 replies; 15+ messages in thread
From: Joe Perches @ 2012-12-08 18:39 UTC (permalink / raw)
  To: Peter Senna Tschudin
  Cc: mmarek, Julia Lawall, Gilles Muller, Nicolas Palix, cocci, linux-kernel

On Sat, 2012-12-08 at 16:13 -0200, Peter Senna Tschudin wrote:
> On Sat, Dec 8, 2012 at 3:45 PM, Joe Perches <joe@perches.com> wrote:
> > On Sat, 2012-12-08 at 15:34 -0200, Peter Senna Tschudin wrote:
> >> This semantic patch looks for semicolons that can be removed without
> >> changing the semantics of the code. The confidence is moderate
> >> because there are some false positives on cases like:
> >>
> >> b/drivers/mmc/host/cb710-mmc.c:589
> >>                 break;
> >>         case MMC_POWER_UP:
> >>         default:
> >> -               /* ignore */;
> >>         }
> > []
> >> diff --git a/scripts/coccinelle/misc/semicolon.cocci b/scripts/coccinelle/misc/semicolon.cocci
> > []
> >> +@r1@
> >> +statement S;
> >> +position p1;
> >> +position p != {r_default.p, r_case.p};
> >> +identifier label;
> >> +@@
> >> +(
> >> +label:;
> >> +|
> >> +S@p1;@p
> >> +)
> >> +
> >
> > I believe this also fails on this case:
[]
> > where gcc needs a semicolon after a label before a function exit.
> 
> No it does not fail. This issue is switch/case specific. See how I've tested:

Thanks Peter, I didn't notice the switch requirement.

In this case, I'd suggest replacement of the
nominally false positive ; with break;

cheers, Joe


^ permalink raw reply	[flat|nested] 15+ messages in thread

* [Cocci] [PATCH] scripts/coccinelle/misc/semicolon.cocci: Add unneeded semicolon test
@ 2012-12-08 18:39       ` Joe Perches
  0 siblings, 0 replies; 15+ messages in thread
From: Joe Perches @ 2012-12-08 18:39 UTC (permalink / raw)
  To: cocci

On Sat, 2012-12-08 at 16:13 -0200, Peter Senna Tschudin wrote:
> On Sat, Dec 8, 2012 at 3:45 PM, Joe Perches <joe@perches.com> wrote:
> > On Sat, 2012-12-08 at 15:34 -0200, Peter Senna Tschudin wrote:
> >> This semantic patch looks for semicolons that can be removed without
> >> changing the semantics of the code. The confidence is moderate
> >> because there are some false positives on cases like:
> >>
> >> b/drivers/mmc/host/cb710-mmc.c:589
> >>                 break;
> >>         case MMC_POWER_UP:
> >>         default:
> >> -               /* ignore */;
> >>         }
> > []
> >> diff --git a/scripts/coccinelle/misc/semicolon.cocci b/scripts/coccinelle/misc/semicolon.cocci
> > []
> >> + at r1@
> >> +statement S;
> >> +position p1;
> >> +position p != {r_default.p, r_case.p};
> >> +identifier label;
> >> +@@
> >> +(
> >> +label:;
> >> +|
> >> +S at p1;@p
> >> +)
> >> +
> >
> > I believe this also fails on this case:
[]
> > where gcc needs a semicolon after a label before a function exit.
> 
> No it does not fail. This issue is switch/case specific. See how I've tested:

Thanks Peter, I didn't notice the switch requirement.

In this case, I'd suggest replacement of the
nominally false positive ; with break;

cheers, Joe

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH] scripts/coccinelle/misc/semicolon.cocci: Add unneeded semicolon test
  2012-12-08 18:39       ` [Cocci] " Joe Perches
@ 2012-12-09 17:51         ` Peter Senna Tschudin
  -1 siblings, 0 replies; 15+ messages in thread
From: Peter Senna Tschudin @ 2012-12-09 17:51 UTC (permalink / raw)
  To: Joe Perches
  Cc: mmarek, Julia Lawall, Gilles Muller, Nicolas Palix, cocci, linux-kernel

On Sat, Dec 8, 2012 at 4:39 PM, Joe Perches <joe@perches.com> wrote:
> On Sat, 2012-12-08 at 16:13 -0200, Peter Senna Tschudin wrote:
>> On Sat, Dec 8, 2012 at 3:45 PM, Joe Perches <joe@perches.com> wrote:
>> > On Sat, 2012-12-08 at 15:34 -0200, Peter Senna Tschudin wrote:
>> >> This semantic patch looks for semicolons that can be removed without
>> >> changing the semantics of the code. The confidence is moderate
>> >> because there are some false positives on cases like:
>> >>
>> >> b/drivers/mmc/host/cb710-mmc.c:589
>> >>                 break;
>> >>         case MMC_POWER_UP:
>> >>         default:
>> >> -               /* ignore */;
>> >>         }
>> > []
>> >> diff --git a/scripts/coccinelle/misc/semicolon.cocci b/scripts/coccinelle/misc/semicolon.cocci
>> > []
>> >> +@r1@
>> >> +statement S;
>> >> +position p1;
>> >> +position p != {r_default.p, r_case.p};
>> >> +identifier label;
>> >> +@@
>> >> +(
>> >> +label:;
>> >> +|
>> >> +S@p1;@p
>> >> +)
>> >> +
>> >
>> > I believe this also fails on this case:
> []
>> > where gcc needs a semicolon after a label before a function exit.
>>
>> No it does not fail. This issue is switch/case specific. See how I've tested:
>
> Thanks Peter, I didn't notice the switch requirement.
>
> In this case, I'd suggest replacement of the
> nominally false positive ; with break;

I agree with you that the best is to replace ; with break; but I
prefer to not change the unneeded semicolon test semantic patch to add
breaks before ;. I can make other semantic patch for that. The point
is that adding break is more than detecting unneeded semicolons, so I
prefer to not mix the two.

But even with the moderate confidence this semantic patch seems to be
useful as new unneeded semicolons are being added to the Kernel.

>
> cheers, Joe
>

Thanks for your help!

Peter


--
Peter

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [Cocci] [PATCH] scripts/coccinelle/misc/semicolon.cocci: Add unneeded semicolon test
@ 2012-12-09 17:51         ` Peter Senna Tschudin
  0 siblings, 0 replies; 15+ messages in thread
From: Peter Senna Tschudin @ 2012-12-09 17:51 UTC (permalink / raw)
  To: cocci

On Sat, Dec 8, 2012 at 4:39 PM, Joe Perches <joe@perches.com> wrote:
> On Sat, 2012-12-08 at 16:13 -0200, Peter Senna Tschudin wrote:
>> On Sat, Dec 8, 2012 at 3:45 PM, Joe Perches <joe@perches.com> wrote:
>> > On Sat, 2012-12-08 at 15:34 -0200, Peter Senna Tschudin wrote:
>> >> This semantic patch looks for semicolons that can be removed without
>> >> changing the semantics of the code. The confidence is moderate
>> >> because there are some false positives on cases like:
>> >>
>> >> b/drivers/mmc/host/cb710-mmc.c:589
>> >>                 break;
>> >>         case MMC_POWER_UP:
>> >>         default:
>> >> -               /* ignore */;
>> >>         }
>> > []
>> >> diff --git a/scripts/coccinelle/misc/semicolon.cocci b/scripts/coccinelle/misc/semicolon.cocci
>> > []
>> >> + at r1@
>> >> +statement S;
>> >> +position p1;
>> >> +position p != {r_default.p, r_case.p};
>> >> +identifier label;
>> >> +@@
>> >> +(
>> >> +label:;
>> >> +|
>> >> +S at p1;@p
>> >> +)
>> >> +
>> >
>> > I believe this also fails on this case:
> []
>> > where gcc needs a semicolon after a label before a function exit.
>>
>> No it does not fail. This issue is switch/case specific. See how I've tested:
>
> Thanks Peter, I didn't notice the switch requirement.
>
> In this case, I'd suggest replacement of the
> nominally false positive ; with break;

I agree with you that the best is to replace ; with break; but I
prefer to not change the unneeded semicolon test semantic patch to add
breaks before ;. I can make other semantic patch for that. The point
is that adding break is more than detecting unneeded semicolons, so I
prefer to not mix the two.

But even with the moderate confidence this semantic patch seems to be
useful as new unneeded semicolons are being added to the Kernel.

>
> cheers, Joe
>

Thanks for your help!

Peter


--
Peter

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [PATCH] checkpatch: Add --strict test for switch/default missing break
  2012-12-09 17:51         ` [Cocci] " Peter Senna Tschudin
  (?)
@ 2012-12-10 18:08         ` Joe Perches
  -1 siblings, 0 replies; 15+ messages in thread
From: Joe Perches @ 2012-12-10 18:08 UTC (permalink / raw)
  To: Andrew Morton, Andy Whitcroft; +Cc: Peter Senna Tschudin, linux-kernel

switch default case is sometimes written
as "default:;".  This can cause new cases
added below the default to be defective.

Suggest adding a break; after empty default
cases to avoid fallthrough defects.

Fixed indentation in the other semicolon
test above it.

Suggested-by: Peter Senna Tschudin <peter.senna@gmail.com>
Signed-off-by: Joe Perches <joe@perches.com>
---
 scripts/checkpatch.pl |   18 ++++++++++++++++--
 1 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index f18750e..73302d8 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -3450,8 +3450,22 @@ sub process {
 
 # check for multiple semicolons
 		if ($line =~ /;\s*;\s*$/) {
-		    WARN("ONE_SEMICOLON",
-			 "Statements terminations use 1 semicolon\n" . $herecurr);
+			WARN("ONE_SEMICOLON",
+			     "Statements terminations use 1 semicolon\n" . $herecurr);
+		}
+
+# check for switch/default statements without a break;
+		if ($^V && $^V ge 5.10.0 &&
+		    defined $stat &&
+		    $stat =~ /^\+[$;\s]*(?:case[$;\s]+\w+[$;\s]*:[$;\s]*|)*[$;\s]*\bdefault[$;\s]*:[$;\s]*;/g) {
+			my $ctx = '';
+			my $herectx = $here . "\n";
+			my $cnt = statement_rawlines($stat);
+			for (my $n = 0; $n < $cnt; $n++) {
+				$herectx .= raw_line($linenr, $n) . "\n";
+			}
+			WARN("DEFAULT_NO_BREAK",
+			     "switch default: should use break\n" . $herectx);
 		}
 
 # check for gcc specific __FUNCTION__
-- 
1.7.8.112.g3fd21


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* Re: [PATCH] scripts/coccinelle/misc/semicolon.cocci: Add unneeded semicolon test
  2012-12-08 17:34 ` [Cocci] " Peter Senna Tschudin
@ 2013-01-23 21:41   ` Peter Senna Tschudin
  -1 siblings, 0 replies; 15+ messages in thread
From: Peter Senna Tschudin @ 2013-01-23 21:41 UTC (permalink / raw)
  To: mmarek
  Cc: Julia Lawall, Gilles Muller, Nicolas Palix, Peter Senna Tschudin,
	cocci, linux-kernel

ping

On Sat, Dec 8, 2012 at 3:34 PM, Peter Senna Tschudin
<peter.senna@gmail.com> wrote:
> This semantic patch looks for semicolons that can be removed without
> changing the semantics of the code. The confidence is moderate
> because there are some false positives on cases like:
>
> b/drivers/mmc/host/cb710-mmc.c:589
>                 break;
>         case MMC_POWER_UP:
>         default:
> -               /* ignore */;
>         }
>
> There are 37 patches accepted reported by this semantic patch and
> more than 300 fixes to be applied.
>
> Signed-off-by: Peter Senna Tschudin <peter.senna@gmail.com>
> ---
> Resending unchanged. Last sent on November 13 2012. First sent on October 30 2012.
>
>  scripts/coccinelle/misc/semicolon.cocci | 83 +++++++++++++++++++++++++++++++++
>  1 file changed, 83 insertions(+)
>  create mode 100644 scripts/coccinelle/misc/semicolon.cocci
>
> diff --git a/scripts/coccinelle/misc/semicolon.cocci b/scripts/coccinelle/misc/semicolon.cocci
> new file mode 100644
> index 0000000..a47eba2
> --- /dev/null
> +++ b/scripts/coccinelle/misc/semicolon.cocci
> @@ -0,0 +1,83 @@
> +///
> +/// Removes unneeded semicolon.
> +///
> +// Confidence: Moderate
> +// Copyright: (C) 2012 Peter Senna Tschudin, INRIA/LIP6.  GPLv2.
> +// URL: http://coccinelle.lip6.fr/
> +// Comments: Some false positives on empty default cases in switch statements.
> +// Options: --no-includes --include-headers
> +
> +virtual patch
> +virtual report
> +virtual context
> +virtual org
> +
> +@r_default@
> +position p;
> +@@
> +switch (...)
> +{
> +default: ...;@p
> +}
> +
> +@r_case@
> +position p;
> +@@
> +(
> +switch (...)
> +{
> +case ...:;@p
> +}
> +|
> +switch (...)
> +{
> +case ...:...
> +case ...:;@p
> +}
> +|
> +switch (...)
> +{
> +case ...:...
> +case ...:
> +case ...:;@p
> +}
> +)
> +
> +@r1@
> +statement S;
> +position p1;
> +position p != {r_default.p, r_case.p};
> +identifier label;
> +@@
> +(
> +label:;
> +|
> +S@p1;@p
> +)
> +
> +@script:python@
> +p << r1.p;
> +p1 << r1.p1;
> +@@
> +if p[0].line != p1[0].line_end:
> +       cocci.include_match(False)
> +
> +@depends on patch@
> +position r1.p;
> +@@
> +-;@p
> +
> +@script:python depends on report@
> +p << r1.p;
> +@@
> +coccilib.report.print_report(p[0],"Unneeded semicolon")
> +
> +@depends on context@
> +position r1.p;
> +@@
> +*;@p
> +
> +@script:python depends on org@
> +p << r1.p;
> +@@
> +cocci.print_main("Unneeded semicolon",p)
> --
> 1.7.11.7
>



-- 
Peter

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [Cocci] [PATCH] scripts/coccinelle/misc/semicolon.cocci: Add unneeded semicolon test
@ 2013-01-23 21:41   ` Peter Senna Tschudin
  0 siblings, 0 replies; 15+ messages in thread
From: Peter Senna Tschudin @ 2013-01-23 21:41 UTC (permalink / raw)
  To: cocci

ping

On Sat, Dec 8, 2012 at 3:34 PM, Peter Senna Tschudin
<peter.senna@gmail.com> wrote:
> This semantic patch looks for semicolons that can be removed without
> changing the semantics of the code. The confidence is moderate
> because there are some false positives on cases like:
>
> b/drivers/mmc/host/cb710-mmc.c:589
>                 break;
>         case MMC_POWER_UP:
>         default:
> -               /* ignore */;
>         }
>
> There are 37 patches accepted reported by this semantic patch and
> more than 300 fixes to be applied.
>
> Signed-off-by: Peter Senna Tschudin <peter.senna@gmail.com>
> ---
> Resending unchanged. Last sent on November 13 2012. First sent on October 30 2012.
>
>  scripts/coccinelle/misc/semicolon.cocci | 83 +++++++++++++++++++++++++++++++++
>  1 file changed, 83 insertions(+)
>  create mode 100644 scripts/coccinelle/misc/semicolon.cocci
>
> diff --git a/scripts/coccinelle/misc/semicolon.cocci b/scripts/coccinelle/misc/semicolon.cocci
> new file mode 100644
> index 0000000..a47eba2
> --- /dev/null
> +++ b/scripts/coccinelle/misc/semicolon.cocci
> @@ -0,0 +1,83 @@
> +///
> +/// Removes unneeded semicolon.
> +///
> +// Confidence: Moderate
> +// Copyright: (C) 2012 Peter Senna Tschudin, INRIA/LIP6.  GPLv2.
> +// URL: http://coccinelle.lip6.fr/
> +// Comments: Some false positives on empty default cases in switch statements.
> +// Options: --no-includes --include-headers
> +
> +virtual patch
> +virtual report
> +virtual context
> +virtual org
> +
> + at r_default@
> +position p;
> +@@
> +switch (...)
> +{
> +default: ...;@p
> +}
> +
> + at r_case@
> +position p;
> +@@
> +(
> +switch (...)
> +{
> +case ...:;@p
> +}
> +|
> +switch (...)
> +{
> +case ...:...
> +case ...:;@p
> +}
> +|
> +switch (...)
> +{
> +case ...:...
> +case ...:
> +case ...:;@p
> +}
> +)
> +
> + at r1@
> +statement S;
> +position p1;
> +position p != {r_default.p, r_case.p};
> +identifier label;
> +@@
> +(
> +label:;
> +|
> +S at p1;@p
> +)
> +
> + at script:python@
> +p << r1.p;
> +p1 << r1.p1;
> +@@
> +if p[0].line != p1[0].line_end:
> +       cocci.include_match(False)
> +
> + at depends on patch@
> +position r1.p;
> +@@
> +-;@p
> +
> + at script:python depends on report@
> +p << r1.p;
> +@@
> +coccilib.report.print_report(p[0],"Unneeded semicolon")
> +
> + at depends on context@
> +position r1.p;
> +@@
> +*;@p
> +
> + at script:python depends on org@
> +p << r1.p;
> +@@
> +cocci.print_main("Unneeded semicolon",p)
> --
> 1.7.11.7
>



-- 
Peter

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH] scripts/coccinelle/misc/semicolon.cocci: Add unneeded semicolon test
  2013-01-23 21:41   ` [Cocci] " Peter Senna Tschudin
@ 2013-01-24 11:11     ` Michal Marek
  -1 siblings, 0 replies; 15+ messages in thread
From: Michal Marek @ 2013-01-24 11:11 UTC (permalink / raw)
  To: Peter Senna Tschudin
  Cc: Julia Lawall, Gilles Muller, Nicolas Palix, cocci, linux-kernel

On 23.1.2013 22:41, Peter Senna Tschudin wrote:
> ping

pong

I added the patch to kbuild.git#misc now, sorry for the delay.

Michal

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [Cocci] [PATCH] scripts/coccinelle/misc/semicolon.cocci: Add unneeded semicolon test
@ 2013-01-24 11:11     ` Michal Marek
  0 siblings, 0 replies; 15+ messages in thread
From: Michal Marek @ 2013-01-24 11:11 UTC (permalink / raw)
  To: cocci

On 23.1.2013 22:41, Peter Senna Tschudin wrote:
> ping

pong

I added the patch to kbuild.git#misc now, sorry for the delay.

Michal

^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2013-01-24 11:18 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-12-08 17:34 [PATCH] scripts/coccinelle/misc/semicolon.cocci: Add unneeded semicolon test Peter Senna Tschudin
2012-12-08 17:34 ` [Cocci] " Peter Senna Tschudin
2012-12-08 17:45 ` Joe Perches
2012-12-08 17:45   ` [Cocci] " Joe Perches
2012-12-08 18:13   ` Peter Senna Tschudin
2012-12-08 18:13     ` [Cocci] " Peter Senna Tschudin
2012-12-08 18:39     ` Joe Perches
2012-12-08 18:39       ` [Cocci] " Joe Perches
2012-12-09 17:51       ` Peter Senna Tschudin
2012-12-09 17:51         ` [Cocci] " Peter Senna Tschudin
2012-12-10 18:08         ` [PATCH] checkpatch: Add --strict test for switch/default missing break Joe Perches
2013-01-23 21:41 ` [PATCH] scripts/coccinelle/misc/semicolon.cocci: Add unneeded semicolon test Peter Senna Tschudin
2013-01-23 21:41   ` [Cocci] " Peter Senna Tschudin
2013-01-24 11:11   ` Michal Marek
2013-01-24 11:11     ` [Cocci] " Michal Marek

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.