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

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

3天内不再提示

什么是静态代码分析?静态代码分析概述

北汇信息POLELINK 2023-07-19 12:09 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

静态分析可帮助面临压力的开发团队。高质量的版本需要按时交付。需要满足编码和合规性标准。错误不是一种选择。

这就是开发团队使用静态分析工具/源代码分析工具的原因。在这里,我们将讨论静态分析和使用静态代码分析器的好处,以及静态分析的局限性。

什么是静态分析?

静态分析是一种调试方法,通过自动检查源代码来完成,而无需执行程序。这使开发人员能够了解他们的代码库,并有助于确保其合规性和安全可靠性。

什么是静态代码分析?

静态代码分析是指静态分析工具执行的操作,即根据一组(或多组)编码规则分析一组代码。

静态代码分析和静态分析通常与源代码分析一起互换使用。

静态代码分析解决了源代码中可能导致漏洞的弱点。当然,这也可以通过手动源代码审查来实现。但是使用自动化工具要有效得多。

静态分析通常用于遵守编码准则,例如 MISRA。 它通常用于遵守行业标准,例如ISO 26262。

什么时候使用静态代码分析器/源代码分析工具执行静态分析?

静态代码分析是在软件测试开始之前的开发早期进行的。对于实践DevOps的组织来说,静态代码分析发生在“创建”阶段。

静态代码分析还通过创建自动反馈循环来支持 DevOps。开发人员会很早就知道他们的代码中是否存在任何问题,解决这些问题会更容易。

静态分析与动态分析

那么, 静态分析和动态分析有什么区别 呢?
这两种类型的代码分析都可以检测缺陷。最大的区别在于 他们在开发生命周期中发现缺陷的地方。

静态分析在运行程序之前(例如,在编码和单元测试之间)识别缺陷。

动态代码分析在运行程序后(例如,在单元测试期间)识别缺陷。然而,一些编码错误可能不会在单元测试期间出现。因此,动态测试可能会遗漏一些静态代码分析所能发现的缺陷。

静态代码分析器/静态分析工具的局限性是什么?

静态代码分析用于开发特定阶段的特定目的。但是静态代码分析工具存在一些局限性。

不了解开发人员的意图

wKgaomS3Yb6ACBvhAABiM2Fl43M943.png

静态分析工具可以在该计算中检测到可能的溢出。但它不能确定功能根本不起预期的作用!

不可静态执行的规则

一些编码规则依赖于外部文档。或者它们可以接受主观解释。

例如:
CERT-C MSC04:以可读的方式始终如一地使用注释。
可能的缺陷会导致假阳性和假阴性
在某些情况下,工具只能报告可能存在缺陷。

wKgZomS3Yb6AZ-i0AACE69mcc08649.png

如果我们对 foo() 一无所知,我们就不知道x的值是多少。

结果是不可判定的。这意味着工具可能会报告实际上不存在的缺陷(假阳性)。或者他们可能无法报告真正的缺陷(假阴性)。

静态代码分析器有哪些优势?

静态分析工具有几个好处,尤其是当您需要遵守行业标准时。
最好的静态代码分析工具提供了速度、深度和准确性。

速度

开发人员进行手动代码审查需要时间。自动化工具要快得多。

静态代码检查解决了早期的问题,并准确地指出了代码中的错误所在。因此,您将能够更快地修复这些错误。此外,早期发现的编码错误修复成本更低。

深度

测试不能覆盖所有可能的代码执行路径。但是静态 代码分析器 可以。

在构建过程中,静态代码分析器会检查代码。您将根据所应用的规则深入分析代码中可能存在的潜在问题。
下面是 Helix QAC中深入代码分析的示例 。

wKgZomS3Yb6ALO32AAJ4-ycuic8096.png

Helix QAC 中的代码分析示例

准确性

手动源代码审查容易出现人为错误。自动化工具不是。

他们扫描每一行代码以识别潜在问题。这有助于您确保在测试开始之前就有最高质量的代码。毕竟,当您遵守编码标准时,质量是至关重要的。

静态分析和静态代码分析器如何帮助开发人员左移?

静态分析是确保软件应用程序可靠性、安全性和可维护性的重要技术。它帮助开发人员及早发现和解决问题,提高代码质量,增强安全性,确保法规遵从性,并提高效率。使用静态分析工具,开发人员可以构建质量更好的软件,降低安全漏洞的风险,并最大限度地减少调试和修复问题所花费的时间和精力。

术语“左移”是指在软件开发生命周期(SDLC)的早期集成自动化软件测试和分析工具的做法。传统上,测试和分析通常是在编写代码后进行的,这导致了解决问题的被动方法。通过左移,开发人员可以在问题变成问题之前发现问题,从而减少调试和维护所需的时间和精力。这在敏捷开发中尤其重要,因为频繁的代码更改和更新可能会导致许多需要解决的问题。

静态分析的一个关键好处是,它可以节省调试和测试的时间和精力。通过在开发过程的早期识别潜在问题,您可以在任何问题变得更加难以修复(且成本高昂)之前解决它们。随着时间的推移,您还将获得更高质量的应用程序,这些应用程序更可靠、更容易维护,并防止问题在整个代码库中传播,从而使以后更难识别和修复。

使用静态分析左移的好处包括:

  1. 及早发现问题。 通过将静态分析集成到开发过程中,开发人员可以尽早发现问题,使其在成为更大的问题之前得到解决。这减少了调试和维护所需的时间和精力,并有助于确保代码的可靠性和安全性。
  2. 降低成本。 在SDLC中较早地解决问题可以降低后期修复bug和其他问题的成本。这可以节省时间和资源,并降低可能影响项目时间表的延误或其他问题的风险。
  3. 提高代码质量。 静态分析有助于识别编码标准违规和其他可能影响代码质量的问题。通过尽早解决这些问题,开发人员可以确保代码编写良好、可维护且易于调试。
  4. 增强的安全性。 静态分析工具可以识别代码中的安全漏洞,允许开发人员在代码发布到生产环境之前解决这些问题。这可以降低安全漏洞和其他可能影响应用程序安全性的问题的风险。

使用静态分析左移如何帮助提高利润

通过静态分析左移还可以提高组织的估计投资回报率 (ROI) 和成本节约。

静态分析的主要优点之一是它能够在SDLC早期发现缺陷和漏洞。从长远来看,早期检测可以节省您的公司时间和金钱。根据 美国国家标准与技术研究院(NIST) 的一项研究,修复缺陷的成本随着开发周期的进展而显着增加。在需求阶段检测到的缺陷修复成本可能约为60美元,而在生产中检测到的缺陷可能高达10000美元!通过采用静态分析,组织可以减少进入生产阶段的缺陷数量,并显著降低修复缺陷的总体成本。

除了降低修复缺陷的成本外,静态分析还可以提高代码质量,从而进一步节省成本。改进的代码质量可以减少测试、调试和维护所需的时间和精力。 IBM 的一项研究发现 ,通过提高代码质量,修复缺陷的成本最多可降低75%。

安全性是静态分析可以帮助降低成本的另一个领域,尤其是与安全漏洞和负面品牌状态相关的成本。 IBM的一项研究发现,数据泄露的成本可能在125万至819万美元之间。静态分析可以在SDLC的早期发现安全漏洞,使组织能够在部署软件之前修复这些漏洞。通过这样做,组织可以显著降低安全漏洞的风险和成本,并保护其声誉。

除了节省成本外,静态分析还可以提高生产力。通过在开发周期的早期发现缺陷,开发人员可以减少日后调试和修复缺陷所需的时间和精力。这可以为其他开发活动(如功能开发或测试)腾出时间。通过提高生产力,组织可以减少软件开发的时间和成本,并提高更快地交付软件的能力。

在软件开发中采用左移方法可以为组织带来显着的成本节约和投资回报率。通过及早发现缺陷和漏洞,公司可以显著降低修复缺陷的成本,提高代码质量和安全性,并提高生产力。这些好处可以提高客户满意度、提高软件质量并降低开发成本。

如何选择静态代码分析器?

在决定哪种工具适合您时,需要考虑以下几点。
程序设计语言
分析器是为许多不同的编程语言设计的。因此,选择一个支持你的语言的工具是很重要的。

标准
静态分析器的主要用途之一是符合标准。因此,如果你所在的行业需要编码标准,你需要确保你的工具支持该标准。

为什么选择 Perforce 静态代码分析器工具进行静态分析?

30多年来,Perforce静态分析解决方案一直备受信赖,能够为各行各业的关键任务项目团队提供最准确的结果。Helix QAC和Klocwork经过认证,符合编码标准和合规要求。而且它们提供的假阳性和假阴性更少。

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

    关注

    69

    文章

    5360

    浏览量

    91884
  • 代码
    +关注

    关注

    30

    文章

    4976

    浏览量

    74378
  • 软件测试
    +关注

    关注

    2

    文章

    252

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Perforce 静态分析现已正式支持 Rust语言!

    您是否正计划通过 Rust 编程来提升内存安全性,却又担心它无法覆盖所有的安全漏洞?Perforce QAC 和 Klocwork 现在已支持分析 Rust 代码,填补了开源代码检查工具在质量和治理工具链方面的空白。
    的头像 发表于 04-08 15:38 442次阅读
    Perforce <b class='flag-5'>静态</b><b class='flag-5'>分析</b>现已正式支持 Rust语言!

    变频器的静态调试步骤

    变频器的“静态调试”通常有两种理解:一种是指电机 不旋转 的情况下,让变频器自动测量电机电气参数的 “静态自学习” (或静态辨识);另一种更广泛的含义是指变频器在 带电机但不带负载 的情况下,进行
    的头像 发表于 03-11 07:36 673次阅读
    变频器的<b class='flag-5'>静态</b>调试步骤

    锁存器中的时间借用概念与静态时序分析

    对于基于锁存器的设计,静态时序分析会应用一个称为时间借用的概念。本篇博文解释了时间借用的概念,若您的设计中包含锁存器且时序报告中存在时间借用,即可适用此概念。
    的头像 发表于 12-31 15:25 5638次阅读
    锁存器中的时间借用概念与<b class='flag-5'>静态</b>时序<b class='flag-5'>分析</b>

    分析嵌入式软件代码的漏洞-代码注入

    安全漏洞时,测试人员必须采取一个攻击者的心态。 诸如模糊测试的技术可能是有用的,但是该技术通常太随机,无法高度可靠。 静态分析可以有效地发现代码注入漏洞。注意到早期生成的静态
    发表于 12-22 12:53

    HarmonyOS应用代码混淆技术方案

    代码混淆技术可以增加代码的复杂性和模糊性,从而提高攻击者分析代码的难度。
    的头像 发表于 11-21 16:17 5732次阅读
    HarmonyOS应用<b class='flag-5'>代码</b>混淆技术方案

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

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

    Whetstone代码涉及的浮点指令汇编分析

    对benchmark中的whetstone进行代码分析,通过反汇编统计所出现的浮点指令,共有26种,如下 特点是只涉及单精度的浮点指令,并且存在有浮点Load/Store的压缩指令,还有一些伪代码不过不影响
    发表于 10-22 08:11

    如何在Zephyr中进行静态代码分析

    在嵌入式软件开发中,“能编译通过”并不等于“可以放心交付”。安全性、可靠性和合规性是产品能否顺利量产的关键。进入量产的Bug会浪费宝贵的工程时间,也会削弱用户信任;安全漏洞可能暴露设备,带来严重后果;在受监管市场中,若未满足MISRA或CERT检查要求,甚至会直接导致产品发布延迟。
    的头像 发表于 10-17 10:28 1055次阅读

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

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

    第三届大会回顾第7期 | 面向OpenHarmony大规模代码的路径敏感的稀疏值流分析

    静态分析(Static Analysis)是软件开发中不可或缺的一部分,它可以帮助开发人员提高代码质量、减少缺陷和安全风险。
    的头像 发表于 08-18 11:31 1283次阅读
    第三届大会回顾第7期 | 面向OpenHarmony大规模<b class='flag-5'>代码</b>的路径敏感的稀疏值流<b class='flag-5'>分析</b>

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

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

    Perforce QAC产品简介:面向C/C++的静态代码分析工具(已通过SO 26262认证)

    Perforce QAC专为C/C++开发者打造,支持多种编码规范、功能安全标准(ISO 26262)等,广泛用于汽车、医疗、嵌入式开发领域,可帮助快速识别关键缺陷、提升代码质量、实现合规交付。
    的头像 发表于 07-10 15:57 1461次阅读
    Perforce QAC产品简介:面向C/C++的<b class='flag-5'>静态</b><b class='flag-5'>代码</b><b class='flag-5'>分析</b>工具(已通过SO 26262认证)

    动态BGP与静态BGP的区别?

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

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

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

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

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