560CMU05 标准需要代码分析
2023年8月17日SAC-SW220EB 世界机器人大会10大应用场景本周亮相
2023年8月17日让代码分析成为日常工作流程的一部分
IAR的工程师们见过许多来自各行各业的公司,我们注意到的是,配置起来越容易使用的代码分析工具越简单,开发人员就更有可能使用它们,这样能够帮助开发人员更快完成项目实现产品上市。让这些自动化工具成为开发者工具箱的一部分,意味着您可以在编写应用程序时检查和改进代码质量,同时可以在“区域”内了解这部分代码要做什么以及它如何与系统中的其他模块进行交互。为了有效地做到这一点,这些工具必须被整合到日常工作流程中。
在浏览其他人对整合代码分析的看法时,IAR的工程师发现谷歌在ACM出版物上发表了一篇文章,探讨了代码分析的优点。虽然文章对他们的整个代码库,包括C、C++和Java进行了全面的考察,但他们的结果非常明确:
“在开发过程的早期就能发现编译器错误,并且能够整合到开发人员的工作流程中。我们发现扩大编译器的检查集对提高 Google的代码质量是有效的。”
作者说,将静态分析检查整合到编译器工作流程中,并使其作为错误出现,极大地提高了对工具调查结果的关注度,这意味着他们的代码质量最后会很高。再往下看,他们谈到了一项调查,这项调查面向最近遇到编译器错误以及已经收到修复同一问题补丁的开发者:
“谷歌开发者认为,在编译时标记的问题(与已提交的代码补丁不同)能捕捉到更严重的漏洞;例如,编译过程中标记的问题里面有74%被调查参与者认为是‘真正的问题’,相比之下,在已提交的代码中发现的问题只有21%。”
文章还谈到了将代码分析作为工作流程一部分的重要性,指出当他们通过静态分析工具自动运行提交的代码并邀请工程师查看分析仪表板时,很少有工程师跟进到底。在编译过程中的即时反馈让静态分析使用起来更简单,也更难被忽视。因此,他们选择在每个人的工作流程中默认加入静态分析。谷歌团队认为,代码分析工具要想取得成功,一定要让开发人员感觉到他们用了这些工具,并从中受益,并且很享受用这些工具。
但是,在工作流程中加入代码分析,您期望看到什么样的结果呢?有一件事情是可以期望实现的,那就是提高应用程序的整体安全性,因为高质量代码可以消除漏洞去利用诸如缓冲区溢出和非法指针等机会,如该文所述。虽然这本身就是使用代码分析的一个很好的理由,但有时很难说服人们相信“一针不补,十针难缝”这句格言,您需要更显著的结果来说服开发者和管理层,让他们信服代码分析的好处。
Stefan Wagner等人的一篇论文使用经验数据来计算代码分析工具与传统测试在不同代码库上的优势。他们的结果很有说服力:在769个被识别到的漏洞中,76%是被代码分析工具发现,只有4%是在传统测试中发现,其余20%在代码审查中发现。如果能在开始测试前就消除75%的漏洞,那么能多快地实现软件的平均故障间隔时间(MTTF)目标?答案是 “非常快”。仅仅是看测试节省下来的时间和金钱,即可发现对代码分析工具的投资就是值得的,更不用说缩短产品上市周期省下的时间。这些都是功能安全认证机构喜欢看到的流程类型,因为它极大地降低了最终产品仍然含有漏洞的风险。