Coccinelle 没有做任何改变

问题描述 投票:0回答:1

我尝试过以下方法:

jaca@DESKTOP-PLDN4P1:~/dev/spatch_test$ cat spatch_test.cocci
@@
expression E1, Fmt;
@@

- MY_MACRO(E1, M_OK, Fmt)
+ MY_MACRO2(M_OK, E1, Fmt)

jaca@DESKTOP-PLDN4P1:~/dev/spatch_test$ cat test.c
MY_MACRO(myVar1, M_OK, ("%d my strings", myVar2))

jaca@DESKTOP-PLDN4P1:~/dev/spatch_test$ spatch --sp-file spatch_test.cocci --dir ./test.c -o ./test2.c
init_defs_builtins: /usr/local/lib/coccinelle/standard.h
HANDLING: ./test.c

jaca@DESKTOP-PLDN4P1:~/dev/spatch_test$ cat test2.c
MY_MACRO(myVar1, M_OK, ("%d my strings", myVar2))

jaca@DESKTOP-PLDN4P1:~/dev/spatch_test$ spatch --version
spatch version 1.2-00008-g75525032 compiled with OCaml version 4.08.1
Flags passed to the configure script: [none]
OCaml scripting support: no
Python scripting support: yes
Syntax of regular expressions: Str

我什至尝试过:

@@
@@

- MY_MACRO(myVar1, M_OK, ("%d my strings", myVar2))
+ MY_MACRO2(myVar1, M_OK, ("%d my strings", myVar2))

但也没有结果。上面的控制台片段来自 WSL Ubuntu,我在其上从源代码构建了 coccinelle,但我也在 redhat 上尝试了相同的软件包安装:

spatch version 1.0.7 compiled with OCaml version 4.05.0
Flags passed to the configure script: --build=x86_64-redhat-linux-gnu --host=x86_64-redhat-linux-gnu --program-prefix= --disable-dependency-tracking --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share --inludedir=/usr/include --libdir=/usr/lib64 --libexecdir=/usr/libexec --localstatedir=/var --sharedstatedir=/var/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-python=/usr/bin/python --with-menhir=/usr/bin/menhir
OCaml scripting support: yes
Python scripting support: yes
Syntax of regular expressions: PCRE

我做错了什么?

c linux coccinelle
1个回答
0
投票

原来源文件必须具有“正确的”C 语法,因为 coccinelle 在应用转换之前将 C 解析为 AST。

我看不到解决方法,这很令人伤心,因为我最初的问题与一些 UT 代码有关,它不符合所需的标准。

© www.soinside.com 2019 - 2024. All rights reserved.