Что касается предложения о Coccinelle, вы можете сопоставлять с помощью регулярных выражений, используя следующие обозначения:
identifier foo =~ "xxx";
То есть foo будет соответствовать любому идентификатору, который содержит xxx.Поддерживаются регулярные выражения PCRE.
Вы также можете использовать python, чтобы создать новый идентификатор:
@a@
identifier x;
@@
foo(x)
@script:python b@
x << a.x;
xx;
@@
coccinelle.xx = "%s%s" % (x,x)
@@
identifier a.x;
identifier b.xx;
@@
foo(
- x
+ xx
)
Для программы:
int main () {
foo(one);
}
Это дает
int main () {
foo(oneone);
}