c语言静态接口 单片机,有没有单片机(C语言编写的代码)使用的静态分析工具?...

本文介绍了在汽车电子项目中常用的静态代码分析工具,包括编译器内置的MISRA-C检查、Polyspace的复杂度分析、QAC的全面规则检查和开源工具cppcheck的定制化应用。针对不同的需求和预算,提供了相应的选择建议。
摘要由CSDN通过智能技术生成

哈哈,这个问题我可以结合我的项目经验来答一下。

现在一般工业级,汽车级和航空级的产品代码都是需要做静态代码分析的,不知道题主是不是相关领域的码农?我就按汽车电子研发中用到的工具来简单回到一下。

需求

在选工具之前,首先需要明C语言代码静态分析到底分析什么内容。是检查MISRA-C编程规范?需不需要检查内存数组,死区代码,代码逻辑复杂度等等。另外,检查完之后是否需要形成相关的报告等等。

编译器自带检查工具

如果你搞的是汽车电子相关的研发项目,仅需要检查MISRA-C相关规则检查,不需要出报告什么的,建议你先看看编译器手册,像green hills,tasking这些专业级的编译器,一般都自带了静态检查选项的,只要打开相关选项就行。

编译器自带的静态分析功能有一个缺点,就是会极大地影响编译速度,因为它需要大量的时间去做静态规则检查。

polyspace

如果你不仅需要做MISRA-C规则检查,还需要分析代码逻辑复杂度,运行时bug等等,那么polyspace将是最好的工具。它的运行界面如下图所示:

168352526_1_20190813072708613

polyspace是mathworks家的产品,它们家最出名的产品是mathlab,质量相当有保证。但是也有一个缺点,那就是贵。

QAC

QAC也可以做各种MISRA-C规则分析以及其他代码静态分析,可以自动生成分析报告,界面也比较容易上手。

168352526_2_20190813072708769

168352526_3_20190813072708910

QAC比polyspace功能要弱一些,主要是没法进行运行时分析。这个工具在汽车零部件企业里用得比较多,价格也相对亲民一些。

PC-lint

PC-lint也可以做C代码静态分析,像keil这些IDE还做了接口直接调用,功能和QAC差不多。但是项目上我没有用过这个工具。

cppcheck

这个是个开源工具,可以做一定的静态分析,但是MISRA-C规则这类检查,需要自己去配置规则,用起来略麻烦。这个可以用插件集成eclipse开发环境里去。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值