0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

什么是静态分析?如何管理早期静态分析报告

麦克泰技术 来源:麦克泰技术 作者:麦克泰技术 2022-11-01 11:35 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

Parasoft作为软件测试工具,小编接触过很多在这方面寻求帮助的人,所以有这方面疑惑的不止你一个人哦!

我们假定你已经安装了静态分析工具并配置了所有初始设置。除此以外,如果刚开始没有确定项目需要采取的策略,入门会比较困难。小编所说的“入门”是指深入理解将静态分析集成到现有项目中的一般方法,以及如何提高静态分析随着时间的推移带来的投资回报。

什么是静态分析?

简单来说,静态分析是在不执行代码的情况下检查源代码和二进制代码的过程,通常用于查找bug的前期准备或评估代码质量。与需要运行程序的动态分析(例如Parasoft Insure ++)不同,静态分析可以直接分析源代码而不需要执行源代码。

这意味着静态分析可用于部分完整的代码,库和第三方源代码。开发人员可以将静态分析应用在编写或修改代码的过程中,甚至可以应用到任何代码库。

支持功能安全和编码标准

在应用程序安全域中,静态代码分析采用了静态应用程序安全性测试(SAST)技术。静态分析可以支持安全漏洞检测,同时支持bug检测,质量指标和编码标准一致性检测。

另外,静态分析工具强制要求(在某些情况下“强烈推荐”)能够支持安全标准(如ISO 26262或EN 50128)的检测,因为这些标准能够检测难以发现的缺陷并提高软件的安全性。当然,这又回归到安全性的问题上,因为静态分析工具还可以帮助软件团队遵守主要用于验证安全编码的编码标准,例如CERT甚至MISRA。

静态分析工具优点及难点

静态分析工具的一个优点是它们可以在项目的任何阶段引入和使用,即使项目是不完整的或者只有部分编码是有效的。引入静态分析的最大难点在于代码量大会产生大量的警告。因此,将静态分析应用到项目中时的重点应该是使团队能够尽快高效工作,并最大限度地减少团队被静态分析的警告困扰的情况。这并不是说这些警告不重要,但大多数开发人员都不会修复现有或遗留代码缺陷,至少不是立即处理。

最重要的应该是将静态分析运用到日常流程中,以便最大化静态分析的使用效果和可用性,然后处理最危险的bug和安全漏洞。一旦团队变得更加熟练,你就可以专注于优化工具和流程,提高投资回报率。

如何管理早期静态分析报告

一旦将静态分析工具安装到项目中,该工具通常会报告相当长的违规和警告报告。这可能是多到无法处理的,特别是在大型代码库中,因此如何管理这些报告将会直接影响到工具集成到项目中能否成功。

并非所有警告都是至关重要的,因此不需要立即处理所有警告。学习哪些需要立即解决而哪些需要推迟处理是成功的关键。如上所述,产品的成熟度和规模对方法有直接影响,下面将更详细地概述。

底线方法

顾名思义,在这种方法中,开发人员决定在初步分析之后,他们不会让任何更严重的警告和违规进入代码库。换句话说,他们需要分析每个警告来确定其准确性,并及时修复,如果它确实是一个bug。

团队还可以决定在现有代码中添加已发现的关键警告,并将其添加到报告工具中的bug列表中。这些类型的警告可能是严重的安全漏洞,如SQL注入,或严重的内存错误,如缓冲区溢出。在大多数情况下,可以推迟不太严重的警告以供以后分析。你可能会想,“这不仅仅会增加我们的技术债务吗?”如果你这样想,那你就是对的!但在这个阶段,我们对此表示满意。这些警告中的任何潜在错误都已经在技术债务堆中。至少现在,它们被识别出来并且以后更容易修复。

确认并推迟处理方法

如果产品已经在市场上并且正在维护中,那么识别代码中的任何bug和安全漏洞仍然是有益的,但让开发人员分析(更不用说修复)所有这些警告是不可行的。

在这种情况下,查看最重要的报告并确定行动方案是有意义的。其余的警告只需要确认,因为软件团队认识到它们存在,但它们大多数都被推迟了。(这再次增加了该组织的技术债务,但如上所述,这些漏洞在技术上已经存在作为技术债务。)这种方法不同于底线方法的地方在于确定关键警告后,你会推迟其余的警告,而不需要所有的都分析。

绿地方法

现有代码很少的项目是静态分析的理想起点。在这种情况下,软件团队可以调查出现的所有警告并修复发现的错误。与其他方法不同,你只需要管理很少的警告,因此开发人员可以解决额外的工作。这也是通过这些工具实现和实施编码标准的理想时间,因为可以在IDE中以及在将任何代码提交到版本控制之前识别和修复违规(你可以在此处描述的其他方案中执行此操作)。

在三个主要阶段采用何种静态分析,可以通过如何处理积压的警告来区分,如下所示:

732f3bc4-5992-11ed-a3b6-dac502259ad0.jpg

在三个主要阶段采用静态分析:在绿地项目中,大多数报告的警告都经过调查和修复,几乎没有进入技术债务堆。正在开发的项目往往会积压大量的警告,这些警告大部分都是推迟处理,只处理严重警告,维护中的产品往往会推迟大多数警告。

配置与过滤

开源或轻量级静态分析工具与商业高级静态分析工具之间的主要区别之一在于能否配置为分析启用哪组检查器,并根据警告类别,文件名,严重性等过滤掉报告的结果属性。这有助于突出目标——开发人员可以专注于他们感兴趣的警告类型,并减少在任何时间产生的垃圾信息量。

配置检查器和过滤结果之间也存在差异。尽管一开始限制全局配置中的规则数量似乎更好,但通常应使用过滤来限制报告范围,而不是完全消除检查程序。如果在配置中关闭后来证明是重要的规则,则警告存储库中将没有历史记录,因此你将无法确定错误是由最近的更改引入还是在静态分析之前已经在代码中。

我建议使用配置将规则集限制为可预见对软件团队有用的规则。同样,以最终目标为出发点:如果提高安全性是关键目标,那么启用所有与安全相关的规则,禁用不太重要的规则,启用CERT C等内置安全编码标准。如果你正在使用Parasoft C/C++test等高级静态分析解决方案,你可以利用其内置的管理工具来处理静态分析报告中生成的数据,并推进未来的重点开发工作。

总结

静态分析工具使团队无需执行代码,就能够检测和跟踪错误安全漏洞。这些工具可应用于现有、传统和第三方代码并提供质量审查结果。

采用何种静态分析方法在一定程度上取决于项目的成熟度。大量代码确实会产生大量警告。但这完全是可管理的,能否成功取决于团队如何决定处理结果。好好考虑为项目的每个成熟度阶段引入不同的技术,以及如何将这些工具集成到开发人员,团队负责人和经理的日常工作流程中。

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 代码
    +关注

    关注

    30

    文章

    4941

    浏览量

    73148
  • 应用程序
    +关注

    关注

    38

    文章

    3342

    浏览量

    59926
  • 静态分析
    +关注

    关注

    1

    文章

    45

    浏览量

    4182

原文标题:如何使用静态分析,减轻团队压力?

文章出处:【微信号:麦克泰技术,微信公众号:麦克泰技术】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    关于晶振的静态电容与动态电容

    静态电容与动态电容 C0与C1 的区别是什么呢?
    的头像 发表于 11-21 15:38 4097次阅读
    关于晶振的<b class='flag-5'>静态</b>电容与动态电容

    什么是CVE?如何通过SAST/静态分析工具Perforce QAC 和 Klocwork应对CVE?

    本文将为您详解什么是CVE、CVE标识符的作用,厘清CVE与CWE、CVSS的区别,介绍CVE清单内容,并说明如何借助合适的静态分析工具(如Perforce QAC/Klocwork),在软件开发早期发现并修复漏洞。
    的头像 发表于 10-31 14:24 281次阅读
    什么是CVE?如何通过SAST/<b class='flag-5'>静态</b><b class='flag-5'>分析</b>工具Perforce QAC 和 Klocwork应对CVE?

    vivado时序分析相关经验

    -fanout_greater_than 100 -max_nets 100“此tcl命令可以报告扇出大于100的100条最长路径。 命令生成的报告如上,可以分析fanout和驱动类型。对于较大的fanout,最好
    发表于 10-30 06:58

    知识分享 | 使用MXAM进行AUTOSAR模型的静态分析:Embedded Coder与TargetLink模型

    知识分享在知识分享栏目中,我们会定期与读者分享来自MES模赛思的基于模型的软件开发相关Know-How干货,关注公众号,随时掌握基于模型的软件设计的技术知识。使用MXAM进行AUTOSAR模型的静态
    的头像 发表于 08-27 10:04 489次阅读
    知识分享 | 使用MXAM进行AUTOSAR模型的<b class='flag-5'>静态</b><b class='flag-5'>分析</b>:Embedded Coder与TargetLink模型

    汽车软件团队必看:基于静态代码分析工具Perforce QAC的ISO 26262合规实践

    ISO 26262合规指南,从ASIL分级到工具落地,手把手教你用静态代码分析(Perforce QAC)实现高效合规。
    的头像 发表于 08-07 17:33 867次阅读
    汽车软件团队必看:基于<b class='flag-5'>静态</b>代码<b class='flag-5'>分析</b>工具Perforce QAC的ISO 26262合规实践

    D3502C:低静态电流设计,延长设备续航能力

            在当今电子设备日益便携化和智能化的背景下,电源管理芯片的低功耗设计成为提升设备续航能力的关键因素之一。D3502C 高压降压转换器,凭借其低静态电流设计,显著延长了电池供电设备
    的头像 发表于 07-14 14:53 377次阅读

    动态BGP与静态BGP的区别?

    的 IP,只要远端发起 BGP 握手,且来自 AS 65002,即自动建立对等关系。四、实战应用场景分析场景一:传统运营商边界路由器 使用静态 BGP BGP 对等关系固定,变化极少 需要手动管理
    发表于 06-24 06:57

    详解ADC电路的静态仿真和动态仿真

    ADC电路主要存在静态仿真和动态仿真两类仿真,针对两种不同的仿真,我们存在不同的输入信号和不同的数据采样,因此静态仿真和动态仿真是完全不同的两个概念,所以设置的参数不同。
    的头像 发表于 06-05 10:19 1520次阅读
    详解ADC电路的<b class='flag-5'>静态</b>仿真和动态仿真

    揭秘ABAQUS强大到超乎想象的分析功能有哪些?

    和研究人员解决复杂工程问题的得力助手。本文将深入探讨ABAQUS那些强大到超乎想象的分析功能,揭示它如何在不同领域发挥关键作用。 一、静态与动态分析的双剑合璧 ABAQUS的核心功能之一是其强大的
    的头像 发表于 05-21 16:15 528次阅读
    揭秘ABAQUS强大到超乎想象的<b class='flag-5'>分析</b>功能有哪些?

    DA9233高效、超低静态电流降压稳压器和超低静态电流 LDO数据手册

    DA9233 是一款高效、超低静态电流降压稳压器和超低静态电流 LDO,采用紧凑型 I2C 可配置 WLCSP 封装。降压稳压器还具有超低输出纹波(10mV)。 该器件适用于需要低纹波和高效电源
    的头像 发表于 04-08 18:07 615次阅读
    DA9233高效、超低<b class='flag-5'>静态</b>电流降压稳压器和超低<b class='flag-5'>静态</b>电流 LDO数据手册

    高度集成、可配置的低静态电流电源管理IC DA9072数据手册

    DA9072 是一款高度集成、可配置的低静态电流电源管理 IC(PMIC),集成了可穿戴设备、家庭自动化和低功耗电池应用的最常见需求。 PMIC包括一个具有电源路径管理功能的线性充电器、超低
    的头像 发表于 04-02 11:39 742次阅读
    高度集成、可配置的低<b class='flag-5'>静态</b>电流电源<b class='flag-5'>管理</b>IC DA9072数据手册

    集成电路设计中静态时序分析介绍

    本文介绍了集成电路设计中静态时序分析(Static Timing Analysis,STA)的基本原理、概念和作用,并分析了其优势和局限性。   静态时序
    的头像 发表于 02-19 09:46 1303次阅读

    ADC的静态指标有专用的分析工具吗?

    请问:ADC的静态指标有专用的分析工具吗?该指标很少在评估ADC指标时使用,是否该指标不重要,应用中什么情况下需要评估该指标? 另外ADC的SNR = 6.02*N + 1.76 +10*log10(fs/2BW) 当被采样信号为单音时 该BW为多少?
    发表于 02-08 08:13

    英诺达发布全新静态验证产品,提升芯片设计效率

    了重要一步,将为中国芯片产业的发展注入新的活力。 静态验证作为一种业界普遍使用的验证方法,通过对设计的源代码进行深入分析,能够发现设计中的潜在问题。与动态仿真验证和形式化验证相结合,静态验证可以显著提高验证的覆盖率,帮助设计师在
    的头像 发表于 12-24 16:53 1159次阅读

    静态路由和链路聚合的通信原理

    静态路由和链路聚合的通信原理
    发表于 12-23 16:59 10次下载