2010/12/30

new toy : scan-build with clang


scan-build


Created 週四 30 十二月 2010



scan-build 是clang 的一個tool,其利用 calng/clang++ 作static analyze,

注意 : 用clang / clang++ 作 analyze,所以 就算你是用 gcc / g++ 去 build ,

它還是會找 clang / clang++ 作 analyze,下面有一個需要修改的地方會再次提到。




如何安裝:

http://clang.llvm.org/get_started.html#build



如何使用:

C :

網上都有教了



C++ :

目前scan-build 好像還不打算support C++,如下一則thread

http://www.mail-archive.com/llvmbugs@cs.uiuc.edu/msg10121.html

所以要 define the environment variable CCC_ANALYZER_CPLUSPLUS



接下來,執行 "scan-build --experimental-checks --use-c++=g++ make main"

可能遇到 "could not find clang line"




解晰 ccc-analyzer 後可以得知,它要抓 /usr/bin/clang++ 抓不到,

這可能是因為你有用apt-get 安裝了 clang ,而使用到了舊版的 scan-build



所以,改成

"$(LLVMROOT)/tool/clang/tool/scan-build/scan-build --experimental-checks --use-c++=g++

make main"




你可以看到他找不到後,自已跑到/usr/local/clang 去抓

scan-build: 'clang' executable not found in '~/tools/llvm/tools/clang/tools/scan-build/bin'.

scan-build: Using 'clang' from path: /usr/local/bin/clang



接下來就可以看到 report 放在 tmp/scan-build-2010-xx-xx-xx/ 了




不過目前 scan-build 好像抓不到 malloc 沒有 free 掉的部份,以及 access null ptr。

沒有留言: