哈哈,这个问题我可以结合我的项目经验来答一下。 现在一般工业级,汽车级和航空级的产品代码都是需要做静态代码分析的,不知道题主是不是相关领域的码农?我就按汽车电子研发中用到的工具来简单回到一下。 需求在选工具之前,首先需要明C语言代码静态分析到底分析什么内容。是检查MISRA-C编程规范?需不需要检查内存数组,死区代码,代码逻辑复杂度等等。另外,检查完之后是否需要形成相关的报告等等。 编译器自带检查工具如果你搞的是汽车电子相关的研发项目,仅需要检查MISRA-C相关规则检查,不需要出报告什么的,建议你先看看编译器手册,像green hills,tasking这些专业级的编译器,一般都自带了静态检查选项的,只要打开相关选项就行。 编译器自带的静态分析功能有一个缺点,就是会极大地影响编译速度,因为它需要大量的时间去做静态规则检查。 polyspace如果你不仅需要做MISRA-C规则检查,还需要分析代码逻辑复杂度,运行时bug等等,那么polyspace将是最好的工具。它的运行界面如下图所示: polyspace是mathworks家的产品,它们家最出名的产品是mathlab,质量相当有保证。但是也有一个缺点,那就是贵。 QACQAC也可以做各种MISRA-C规则分析以及其他代码静态分析,可以自动生成分析报告,界面也比较容易上手。 QAC比polyspace功能要弱一些,主要是没法进行运行时分析。这个工具在汽车零部件企业里用得比较多,价格也相对亲民一些。 PC-lintPC-lint也可以做C代码静态分析,像keil这些IDE还做了接口直接调用,功能和QAC差不多。但是项目上我没有用过这个工具。 cppcheck这个是个开源工具,可以做一定的静态分析,但是MISRA-C规则这类检查,需要自己去配置规则,用起来略麻烦。这个可以用插件集成eclipse开发环境里去。 |
|