现在一般工业级,汽车级和航空级的产品代码都是需要做静态代码分析的,不知道题主是不是相关领域的码农?我就按汽车电子研发中用到的工具来简单回到一下。
需求
在选工具之前,首先需要明C语言代码静态分析到底分析什么内容。是检查MISRA-C编程规范?需不需要检查内存数组,死区代码,代码逻辑复杂度等等。另外,检查完之后是否需要形成相关的报告等等。
编译器自带检查工具
如果你搞的是汽车电子相关的研发项目,仅需要检查MISRA-C相关规则检查,不需要出报告什么的,建议你先看看编译器手册,像green hills,tasking这些专业级的编译器,一般都自带了静态检查选项的,只要打开相关选项就行。
编译器自带的静态分析功能有一个缺点,就是会极大地影响编译速度,因为它需要大量的时间去做静态规则检查。
polyspace
如果你不仅需要做MISRA-C规则检查,还需要分析代码逻辑复杂度,运行时bug等等,那么polyspace将是最好的工具。它的运行界面如下图所示:
polyspace是mathworks家的产品,它们家最出名的产品是mathlab,质量相当有保证。但是也有一个缺点,那就是贵。
QAC
QAC也可以做各种MISRA-C规则分析以及其他代码静态分析,可以自动生成分析报告,界面也比较容易上手。
QAC比polyspace功能要弱一些,主要是没法进行运行时分析。这个工具在汽车零部件企业里用得比较多,价格也相对亲民一些。
PC-lint
PC-lint也可以做C代码静态分析,像keil这些IDE还做了接口直接调用,功能和QAC差不多。但是项目上我没有用过这个工具。
cppcheck
这个是个开源工具,可以做一定的静态分析,但是MISRA-C规则这类检查,需要自己去配置规则,用起来略麻烦。这个可以用插件集成eclipse开发环境里去。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 xxx@163.com 举报,一经查实,本站将立刻删除。