[Cocci] How to remove unused global variables by using Coccinelle?

杨已彪 yangyibiao at nju.edu.cn
Fri Oct 13 16:09:24 CEST 2017


Thank you very much. It works.

> 在 2017年10月13日,下午9:59,Julia Lawall <julia.lawall at lip6.fr> 写道:
> 
> 
> On Fri, 13 Oct 2017, 杨已彪 wrote:
> 
>> Hello,
>> 
>> Thanks for this awesome tool - Coccinelle.
>> 
>> Currently, I am trying to use Coccinelle to remove unused global variables in C source code. While applying the following remove.cocci to test.c , it does not work.
>> 
>> Can anyone help?
>> 
>> Thanks.
>> ---
>> Yibiao
>> 
>> $ spatch --version
>> spatch version 1.0.6 compiled with OCaml version 4.02.3
>> Flags passed to the configure script: [none]
>> Python scripting support: yes
>> Syntax of regular expresssions: PCRE
>> 
>> $ spatch —in-place -sp-file remove.cocci small.c
>> init_defs_builtins: /usr/local/lib/coccinelle/standard.h
>> HANDLING: small.c
>> 
>> $ cat remove.cocci
>> @@
>> type T;
>> identifier i;
>> expression E;
>> @@
>> - static T i = E;
>>  ... when != I
> 
> This doesn't work for various reasons.  First Coccinelle is case
> sensitive, so i is different than I.  Also Coccinelle works on one
> function at a time.  So you can't use ... to refer to the rest of the
> file.  You want something like:
> 
> @r@
> type T;
> identifier i;
> expression E;
> @@
> static T i = E;
> 
> @useful@
> identifier r.i;
> @@
> 
> i
> 
> @depends on !useful@
> identifier r.i;
> @@
> - static T i = E;
> 
> julia
> 
>> 
>> $ cat small.c
>> static int g = 0;
>> int main()
>> {
>>    return 0;
>> }
>> _______________________________________________
>> Cocci mailing list
>> Cocci at systeme.lip6.fr <mailto:Cocci at systeme.lip6.fr>
>> https://systeme.lip6.fr/mailman/listinfo/cocci <https://systeme.lip6.fr/mailman/listinfo/cocci>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://systeme.lip6.fr/pipermail/cocci/attachments/20171013/0920e5b5/attachment-0001.html>


More information about the Cocci mailing list