如何在我的 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 查找所有出现的模运算符。
如何在我的 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 查找所有出现的模运算符。