Add Coccinelle usage: one for blacklisting, one for patch collection

This is inspired by the [Coccinelle](http://coccinelle.lip6.fr/) usage
in systemd.  I also took it a bit further and added infrastructure
to have spatches which should never apply.  This acts as a blacklist.

The reason to do the latter is that coccinelle is *way* more powerful than the
regular expresssions we have in `make syntax-check`.

I started with blacklisting `g_error_free()` directly. The reason that's bad is
it leaves a dangling pointer.

Closes: #754
Approved by: jlebon
This commit is contained in:
Colin Walters authored and Atomic Bot committed 2017-03-30 19:19:54 +00:00
1 parent ee626c2654
commit 305db981d4
12 files changed
+96 -26

No files matched your search

+6
View File
@@ -0,0 +1,6 @@
This is a directory of semantic patches
to apply with coccinelle, like the collection in systemd:
https://github.com/systemd/systemd/tree/29f32655842a0712e8db482bcefc4da8908460c8/coccinelle
See also the tests/coccinelle directory which
has spatches which detect errors.
+22
View File
@@ -0,0 +1,22 @@
@@
expression p;
@@
- glnx_set_error_from_errno (p);
- goto out;
+ return glnx_throw_errno (p);
@@
expression p;
@@
- if (!p)
- goto out;
+ if (!p)
+ return FALSE;
@@
expression p;
@@
- gboolean ret = FALSE;
...
- ret = TRUE;
- out:
- return ret;
+ return TRUE;