网站流量怎么做,网站开发公司企业,音乐网站怎么建设,动画设计培训1#xff0c;clang query 概述
作用#xff1a; 检查一个程序源码的抽象语法树#xff0c;测试 AST 匹配器#xff1b; 帮助检查哪些 AST 节点与指定的 AST 匹配器相匹配#xff1b; 2#xff0c;clang-query 安装 准备#xff1a;
git clone --recursive https://git…1clang query 概述
作用 检查一个程序源码的抽象语法树测试 AST 匹配器 帮助检查哪些 AST 节点与指定的 AST 匹配器相匹配 2clang-query 安装 准备
git clone --recursive https://github.com/llvm/llvm-project.git
cd llvm-project/
git checkout llvmorg-3.5.0
cp -r ./clang ./llvm/tools/
cp -r clang-tools-extra ./llvm/tools/clang/tools/extra
mkdir build_d ../local_d
cd build_d #其绝对路径为/home/hipper/llvm_3_4_0_ex/browse/local_d如下配置所用
配置
cmake -G Unix Makefiles \
-DCLANG_ENABLE_STATIC_ANALYZER1 \
-DLLVM_ENABLE_ASSERTIONSOn \
-DCMAKE_BUILD_TYPEDebug \
-DCMAKE_INSTALL_PREFIX/home/hipper/llvm_3_4_0_ex/browse/local_d \
-DLLVM_ENABLE_LIBCXX1 \
-DLLVM_ENABLE_PROJECTSall \../llvm
编译安装
make -j34
make install
cp bin/clang-query /home/hipper/llvm_3_4_0_ex/browse/local_d/bin/ 3测试运行
待测试程序源代码 hello.c
#if 0
#include stdio.h
#endif#ifdef CAPITALIZE
#define WORLD WORLD
#else
#define WORLD world
#endifextern int write(int, const char*, unsigned long);int main(){write(1, Hello, , 7);write(1, WORLD, 5);write(1, !\n, 2);return 0;}
测试
$ clang-query hello.c -- 效果
识别出函数调用表达式并打印出来了