diff options
author | Quentin Young <qlyoung@cumulusnetworks.com> | 2019-02-26 18:36:31 +0100 |
---|---|---|
committer | Quentin Young <qlyoung@cumulusnetworks.com> | 2019-02-26 18:40:40 +0100 |
commit | 25af5f0d79f9e5595b1ba3bb04a0aff876471029 (patch) | |
tree | bc62feba6b0699c1c7b5ee0fcb0282b2349b3489 /tools/coccinelle/semicolon.cocci | |
parent | *: replace XMALLOC + memset with XCALLOC (diff) | |
download | frr-25af5f0d79f9e5595b1ba3bb04a0aff876471029.tar.xz frr-25af5f0d79f9e5595b1ba3bb04a0aff876471029.zip |
tools: add coccinelle spatches
Add some Coccinelle semantic patches we can use to automatically
refactor code in the future.
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
Diffstat (limited to 'tools/coccinelle/semicolon.cocci')
-rw-r--r-- | tools/coccinelle/semicolon.cocci | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/tools/coccinelle/semicolon.cocci b/tools/coccinelle/semicolon.cocci new file mode 100644 index 000000000..6740c659a --- /dev/null +++ b/tools/coccinelle/semicolon.cocci @@ -0,0 +1,83 @@ +/// +/// Remove 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) |