delphij's Chaos

选择chaos这个词是因为~~实在很难找到一个更合适的词来形容这儿了……

18 Nov 2011

clang静态分析工具作弊条

静态分析是一种辅助的代码品质提高手段,简而言之静态分析大致是走一个类似编译的过程(或者走完生成副产品),然后给出代码中可能存在的问题。

FreeBSD Ports Collection 中提供的 lang/clang-devel 内建了 clang 项目的静态分析工具。这个工具的用法非常简单,假设我们原先的联编命令是:


make -j 4 all

那么,配合clang静态分析工具来产生输出的命令便是:


scan-build _-o /tmp/scan_ make -j 4 all

以上, /tmp/scan 是输出目录。scan-build可以设置必要的环境变量来让make使用ccc-analyzer代替${CC}来完成编译工作,并把输出保存到指定目录的一个唯一的子目录中。下面,我们可以运行:


scan-view --allow-all-hosts --no-browser --host 10.4.2.253 /tmp/scan/2011-11-17-1

上面的/tmp/scan/2011-11-17-1是scan-build在最后告诉我们的那个结果,而 10.4.2.253 是本机 IP 地址。用浏览器访问 http://10.4.2.253:8181 就可以看到编译过程中发现的问题了。

需要说明的是,静态分析工具并不总是能给出理想的输出结果。开发者需要充分分析程序逻辑之后再做修改。