如何在我的 C 源代码中获取所有模 (%) 操作

How can I get all modulo(%) operation in my C source code

如何在我的 C 源代码中获取所有模 (%) 操作? 由于包含 C MACRO,我认为正则表达式无法做到这一点。 并且,必须注意字符串 printf 格式。

我可以使用哪个静态分析源代码来执行此操作? 例如,Codesonar 或 codecheck“仅”尝试发现问题,而不是那样。

我想用零手动检查所有模运算。 (比如除以 0)。

这可能不是执行此操作的最佳方法,但它似乎有效。这是我的测试文件:

#include <stdio.h>

#define MACRO %

int main(void) {
    int a = 1%1;
    int b = 1 MACRO 1;
    printf("%1s", "hello");
}

然后我 运行 得到了一些有用的输出:

$ clang -fsyntax-only -Xclang -dump-tokens main.c 2>&1 > /dev/null | grep percent
percent '%'     Loc=<main.c:6:14>
percent '%'  [LeadingSpace] Loc=<main.c:7:15 <Spelling=main.c:3:15>>

简短说明:

这是词法分析的输出。该命令似乎写入 stderr 而不是 stdout。这就是 2>&1 > /dev/null 的原因。之后,我只是使用 grep 查找所有出现的模运算符。