写在前面
目前做的项目使用xilinx SDK进行软件开发,最近需要对代码进行静态走查,在调研了几款代码走查工具后,给出了一个走查xilinx SDK工程代码的解决方案。
走查工具的选择
最近需要对代码进行静态走查,在走查的过程中简单对比了几种代码静态走查工具:
cppcheck:该走查工具使用起来无比简单,对环境几乎没有要求,但是由于该走查工具没有跟踪编译的过程,因此会产生极多的,如找不到文件或定义之类的误报。
c++test:感觉是为vs开发量身定制的代码走查工具,包括静态和动态两种,可以生成测试用例,感觉对VS开发者尤其友好。其插件版支持如tornado、ccs、keil工程。但是由于时间紧迫,来不及细细研究如果针对Xilinx进行修改,因此该方案暂搁置。
klockwork:商用代码走查工具,可以跟踪编译过程,因此具备跨文件、跨模块分析能力,其内置了不同嵌入式平台的编译选项,分析出的问题准确率比较高,同时会有详细的问题产生的流程,感觉更适合嵌入式平台下的静态走查,因此最终选择了这款工具。
准备工作
平时编译代码几乎都是使用xilinx SDK直接进行编译,如果需要使用klockwork进行走查,那么首先需要建立使用命令行对代码进行编译的环境。
安装在windows平台下的SDK都几乎具备使用命令行进行编译的能力,但是需要对环境变量进行设置。网上教程教的都是使用SDK安装路径(如E:\Xilinx\SDK\2018.3)下的bat文件进行环境变量设置settings64.bat,但是实际操作后发现环境变量并没有设置成功,打开.bat文件后层层查看,发现其本质是将所有相关的路径写入PATH中,于是手动将需要的路径写入环境变量的。
原工程使用的是arm-none-eabi-工具链,因此最终加入环境变量的内容如下图所示。