如何启用Clang静态分析器的alpha.security.taint check检查器
如何在Clang静态分析器3.8中启用alpha.security.taint检查器?
要启用alpha.security.taint这个Alpha级检查器,你需要在scan-build命令里完整指定检查器名称,并且确保命令正确调用Clang编译你的代码。以下是具体步骤和正确操作方式:
1. 完整的scan-build命令格式
你需要把检查器的完整名称传给-enable-checker参数,并且在命令末尾指定编译你的C代码的指令(比如直接调用clang,或者用make构建项目)。针对你的测试代码,正确的命令应该是:
/usr/lib/llvm-3.8/bin/scan-build -enable-checker alpha.security.taint clang your_test_code.c
如果你的代码文件名是test.c,那命令就是:
/usr/lib/llvm-3.8/bin/scan-build -enable-checker alpha.security.taint clang test.c
2. 优化你的测试代码
你的测试代码已经符合触发该检查器的条件,但建议补充必要的头文件,避免编译警告影响分析结果:
// note: requires alpha.security.taint check turned on. #include <stdio.h> // 必须包含getchar的声明头文件 void test() { char s[] = "abc"; int x = getchar(); char c = s[x]; // warn: index is tainted } int main() { test(); return 0; }
3. 额外注意事项
- Alpha级检查器(以
alpha.开头)默认处于关闭状态,必须通过-enable-checker参数显式启用。 - 如果需要同时启用多个Alpha检查器,可以重复使用
-enable-checker参数,比如:/usr/lib/llvm-3.8/bin/scan-build -enable-checker alpha.security.taint -enable-checker alpha.security.insecureAPI.UncheckedReturn clang test.c - 执行命令后,
scan-build会自动生成一个HTML格式的分析报告,里面会包含alpha.security.taint检查器发现的受污染索引访问警告。
内容的提问来源于stack exchange,提问作者Gunjan Aggarwal
相关产品推荐
相关产品推荐

