当前位置:首页 > 公众号精选 > strongerHuang
[导读]素材来源|CSDN编排| strongerHuang当前标准的C语言编译器存在普遍只能找出代码中潜在的缺陷,而对程序方案设计并没有效。使用静态代码分析器有助于提升固件和捕获编译器难以察觉的问题。用于嵌入式的常见代码静态分析工具代码静态分析工具,顾名思义就是对代码进行静待...




素材来源 | CSDN


编排 | strongerHuang



当前标准的C语言编译器存在普遍只能找出代码中潜在的缺陷,而对程序方案设计并没有效。



使用静态代码分析器有助于提升固件和捕获编译器难以察觉的问题。




用于嵌入式的常见代码静态分析工具


代码静态分析工具,顾名思义就是对代码进行静待分析,以提前预判(分析)代码潜在的一些问题的工具。换句话说,就是通过工具找出你代码的bug(错误、警告)。




代码静态分析工具需要你的代码遵循一定规范,比如遵循C99MISRA 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 ------------





本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭