[导读]素材来源|CSDN编排| strongerHuang当前标准的C语言编译器存在普遍只能找出代码中潜在的缺陷,而对程序方案设计并没有效。使用静态代码分析器有助于提升固件和捕获编译器难以察觉的问题。用于嵌入式的常见代码静态分析工具代码静态分析工具,顾名思义就是对代码进行静待...
素材来源 | CSDN
编排 | strongerHuang
当前标准的C语言编译器存在普遍只能找出代码中潜在的缺陷,而对程序方案设计并没有效。
使用静态代码分析器有助于提升固件和捕获编译器难以察觉的问题。
用于嵌入式的常见代码静态分析工具
代码静态分析工具,顾名思义就是对代码进行静待分析,以提前预判(分析出)代码潜在的一些问题的工具。换句话说,就是通过工具找出你代码的bug(错误、警告)。
代码静态分析工具需要你的代码遵循一定规范,比如遵循C99、MISRA C:2012等,不然工具不支持对你代码的静态分析。
代码静态分析工具有独立存在的(就是一款软件工具),也有集成在IDE中的。比如比如:IAR EWARM就自带静待分析工具。
同时,有些工具支持通过“安装插件”的形式集成在IDE中,比如:在keil MDK中添加PC-lint代码静态分析工具。
下面罗列几个常见的代码静态分析工具:
-
PC-lint
-
LDRA
-
Parasoft C / C test
-
PVS-Studio
-
VectorCAST
以下是每一位嵌入式软件开发工程师都应该熟悉的静态代码编译器的七种功能和用法。
捕捉潜在的漏洞
静态代码分析器广为人知的用途之一就是扫描软件中潜在的问题和漏洞。这些问题小到switch case遗漏了break语句,大到缓存溢出的潜在风险。
静态代码分析器能够发现那些容易被编译器或者代码审核人员忽略的问题。在开发的早期阶段配置一个静态代码分析器在实践中能够确保潜在风险被立即处理,而不是等到开发的后期阶段。
强制执行代码规范
执行代码规范是确保软件开发一致性和代码可读性的重要举措。代码规范不仅会涉及代码可读性等问题,它还能迫使代码变得优雅。一个典型的例子就是许多静态代码分析器支持MISRA C。
静态代码分析器能够确保开发者没有违背大多数推荐实现方法,也没有违背标准的优雅实践(但是有些规则要求人工检查,机器无法自动判别)。如果真的发生了违规行为,静态分析器会将违规行为报告给开发者,开发者可以给予纠正。使用静态分析器能够快速判断代码是否遵循了已定义的标准。
确保严格执行ANSI-C标准
那些想严格按照ANSI-C标准开发可移植软件的开发者可以用静态代码分析器判断是否有非标准的用法混杂在代码里。
将分析器设置为“strict”将会查找出那些可移植性较差的或者兼容性较弱的代码区域。开发者随后可以再次检查这部分代码,使得软件更好地遵守ANSI-C标准,或者至少在文档中注明这部分代码。
强大的类型检查功能
C语言并不支持强类型检查。在C语言中,如果开发者自己创建了一种类型,编译器会忽略新类型而使用底层的C语言类型。
举个例子,如上图所示,编译器会视变量Var1为int类型(实现时定义)而不是新的MyEnum_t类型。开发者也许想区分int和MyEnum_t两种类型,并让编译器在两者混用之时做出警告。
然而,在第13行编译器并不认为把变量Var2(底层是int类型)的值赋给变量Var1(底层也是int类型)存在什么错误。静态代码分析器能够设置严格的类型检查,将Var1=Var2因不同类型间的赋值而置为高亮,以及检查出其它不符合开发者本意的问题。
提供量纲检查
1998年发射失败的火星气候探测器是我最关注的航空器失事事故之一。航空器的失败是由于输入轨道插入参数时使用了非标准的lbs*s 而不是 N*s (哎呀!)。火星气候探测器的失事永远警示着我们确保度量单位正确的重要性。但C编程语言没有提供任何的量纲分析来确保计算的一致性。
但是,静态代码分析器能够完成这些检查,以确保不会将千米误乘以英尺从而得到一个错误的结果。量纲分析的设置在各种工具中各不相同,但开发者应该好好利用这个重要的特性。
支持基本的堆栈分析
理解栈的最坏使用场景是开发任何实时嵌入式系统的关键。有很多的方法能分析和确定堆栈的最坏情况下的的使用状态,但可以用静态代码分析器来找找合理使用堆栈的感觉。静态分析器可以计算函数的堆栈使用情况和调用图来给出堆栈所需的大致空间。
静态分析工具还可以帮助深入了解程序对函数调用,以及函数结果的确定性。使用静态分析来熟悉堆栈的使用和最坏工作状态有助于初步理解堆栈的最坏状态分析。
帮助检查线程
静态分析工具也可以用来查看在相同处理器上同时执行的线程和任务所出现的问题。
举个例子,分析工具可以识别是否有与加锁或解锁互斥相关的任何异常。线程检查对在实时系统中查找问题非常有效,但配置此类分析却要花费很大的代价。只要能发现存在异常的线程,这种代价还是值得付出的。
总结
静态分析是开发人员开发实时系统的一个宝贵工具。静态分析器的七种用途只是其强大功能的几个例子。
静态代码分析器的使用可以大大提高代码的质量和鲁棒性,如果设置得当,甚至可以确保代码与常见的或自定义的编码标准的一致性。
参考来源:https://blog.csdn.net/happytofly/article/details/80121895https://www.edn.com/7-uses-for-a-static-code-analyzer/
声明:本文来源网络,版权归原作者所有。如涉及作品版权问题,请与我联系删除。
------------ END ------------
本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
纽约2026年8月18日 /美通社/ -- 美国万通证券作为美国金融业监管局及SIPC成员,总部位于纽约、提供全牌照服务的投资银行和证券经纪及交易商,今日宣布为其客户YXT.COM GROUP HOLDING Ltd(纳...
关键字:
COM
GROUP
HOLDING
代码
北京2026年8月13日 /美通社/ -- 在 AI 重塑软件工程范式的当下,企业数智化转型正步入深水区。近日,全球领先的AI工厂全栈服务商软通动力宣布,全面引入阿里云全栈 Agentic 智能编程平台 Qoder,成功...
关键字:
阿里云
全栈
AI
代码
纽约2026年8月8日 /美通社/ -- 美国万通证券作为美国金融业监管局及SIPC成员,总部位于纽约、提供全牌照服务的投资银行和证券经纪及交易商,今日宣布为其客户YXT.COM GROUP HOLDING Ltd(纳斯...
关键字:
COM
GROUP
HOLDING
代码
北京2026年8月6日 /美通社/ -- 伴随AI Coding等长流程场景的渗透,单一Agent已难以满足企业复杂的业务需求,由大量Agent持续并发运行、共同完成复杂业务的"多智能体群智协同&qu...
关键字:
AI
智能体
测试
代码
科罗拉多州布鲁姆菲尔德2026年7月29日 /美通社/ -- Quantinuum Inc.(纳斯达克股票代码:QNT)(简称“Quantinuum”)今日宣布,将于2026...
关键字:
ANTI
量子计算
CCD
代码
美国北卡罗来纳州夏洛特2026年7月24日 /美通社/ -- 霍尼韦尔科技(纳斯达克代码:HON)近日公布了2026年第二季度业绩。合并财报包含霍尼韦尔航空航天(纳斯达克代码:HONA)的经营数据。霍尼韦尔航空航天已于2...
关键字:
霍尼韦尔
航天
代码
自动化
在软件工程数十年的迭代历程中,无数开发者都曾遭遇过“上帝类”带来的噩梦:一个数千行的类里同时混杂了数据查询、格式转换、日志打印、异常处理等十多种完全不相关的逻辑,每次修改其中一个小功能,都要通读整个类的所有代码,稍有不慎...
关键字:
程序
代码
AI编程助手已经彻底改变了一名开发者一个上午能完成的工作量。过去需要几个小时才能理清思路、写出草稿的代码,现在几秒钟就能生成。对于探索性工作和快速原型开发来说,这种效率提升是实实在在的。
关键字:
AI编程助手
代码
嵌入式
结合英矽智能的Pharma.AI平台与保瑞在全球范围内的研发、生产、质量控制及商业化能力,探索创新的药物研发模式 上海和台北2026年7月15日 /美通社/ -- 由生成式人工智能(AI)驱动的临床阶段生物科技公司英矽...
关键字:
人工智能
智能驱动
ARMA
代码
美国旧金山和中国苏州2026年6月30日 /美通社/ -- 信达生物制药集团(香港联交所股票代码:01801),一家致力于研发、生产和销售肿瘤、自身免疫、代谢及心血管、眼科等重大疾病领域创新药物的生物制药公司,今日和礼来...
关键字:
CD
BSP
代码
OV
新加坡2026年6月12日 /美通社/ -- 51Talk在线教育集团("51Talk"或"公司")(纽约证券交易所美国股票代码:COE)今日公布了其截至2026年3月31日的第一...
关键字:
AI
代码
创始人
新加坡
上海2026年6月12日 /美通社/ -- 2026年6月11日,上海国际碳中和技术、产品与成果博览会现场绿意汇聚。通标标准技术服务有限公司(以下简称"SGS")与安迪苏维生素战略事业部(以下简称&q...
关键字:
供应链
可持续发展
代码
环境影响
上海2026年6月11日 /美通社/ -- 5月20日,上海外服(集团)有限公司(以下简称"上海外服")与上海具身慧智科技有限公司(以下简称"上海具身慧智")签署战略合作框架协议。...
关键字:
智能机器人
硅基
人工智能
代码
纽约2026年6月4日 /美通社/ -- 美国万通证券作为美国金融业监管局及SIPC成员,总部位于纽约、提供全牌照服务的投资银行和证券经纪及交易商,今日宣布完成其客户Hitek Global Inc.(纳斯达克股票代码:...
关键字:
GLOBAL
代码
纳斯达克
TE
AI驱动动能与审慎扩张推动营业利润率升至37.8% 境内业务聚焦长期投资,人民币私募二级产品交易额同比增长63.6% 全球网络从牌照布局进入实际运营阶段,海外资产配置规模(AUA)升至人民币661亿元(约9...
关键字:
AI
新加坡
代码
ADS
湖州2026年5月12日 /美通社/ -- 5月9日,在第十个中国品牌日到来之际,由新华社品牌工作办公室指导,中国搜索主办的2026世界品牌莫干山大会"搜索•点赞•传播品牌好故事论坛"在浙江德清成功举...
关键字:
人工智能
AI
代码
多模
加速业务组合精简,航空航天业务分拆稳步推进,预计于2026年第三季度完成 美国北卡罗来纳州夏洛特市2026年4月21日 /美通社/ -- 霍尼韦尔(纳斯达克代码:HON)昨日宣布已与全球标识与防护解决方案制造...
关键字:
霍尼韦尔
航天
代码
自动化
上海2026年4月18日 /美通社/ -- 2026上海国际花卉节今日正式开幕。作为浦东前滩分会场的赞助方之一,骊住受邀参展并设立品牌展区,同时支持上海浦东新区民办惠立学校学生团队创作公共艺术装置《时库门》,将青年创意融...
关键字:
温度
BSP
代码
可持续发展
济南2026年4月2日 /美通社/ -- 3月24日,济南恒誉环保科技股份有限公司控股子公司——山东合晟环保科技有限公司10万吨/年轮胎热解综合利用投资扩产项目启动仪式在济南举行。邹平市副市长王涛及各委办局相关...
关键字:
轮胎
BSP
代码
核心技术
深圳2026年4月3日 /美通社/ -- AI编程工具让"人人都是程序员"的愿景触手可及。社交媒体上,"零基础三天上线App""文科生靠AI改写开源项目"的&q...
关键字:
代码
AI
LAB
工程师