我的编程空间,编程开发者的网络收藏夹
学习永远不晚

静态代码分析和动态代码分析是互为补充的技术

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

静态代码分析和动态代码分析是互为补充的技术

如果你问开发团队,他们的主要目标是什么,三个最常见的答案可能包括:

  • 编写无错误的代码。
  • 符合设计规范。
  • 规避安全问题。

那么,团队如何审查代码以确保这三个主要目标都得到满足?

答案很简单,是代码分析。但它应该是静态代码分析?还是动态代码分析?或者两者结合?

不妨看看静态代码分析和动态代码分析如何在开发中发挥重要作用,以及它们的差异如何有助于规范代码。

静态代码分析和动态代码分析有何不同?

静态代码分析检查代码,以识别逻辑和技术中的问题。动态代码分析则运行代码和检查结果,这还需要测试代码可能存在的执行路径。

即使采用最基本的方式,当开发团队测试代码时,他们是在执行动态分析。而当程序员审查代码时,则是在执行静态分析。无论使用哪种工具,开发人员和程序员都在执行分析,最终有助于创建更好的代码。

静态代码和动态代码本身都不是理想的选择,这意味着团队应优化两者。开发团队不能将静态代码分析和动态代码分析视为非此即彼的关系,而是应将它们视为互补和共生的关系。

代码审查类似静态分析

如果由于某种原因,团队决定略过静态代码分析,那其实意味着团队计划不审查代码。代码审查和静态代码分析好比是相关的术语。代码审查有助于发现代码问题,无需进行费时又费钱的动态测试。在代码审查环境下进行的静态代码分析是开发和维护优秀软件的第一步,也是最重要的一步。

大多数静态代码分析是使用旨在评估代码,查找错误或不推荐的技术和实践的工具完成的。将静态代码分析视为代码审查要素的组织可能会先进行正式的代码审查,然后运用静态代码分析工具,最后借助选择的代码审查流程审查结果。

如果机构决定先与程序员和导师一起审查代码,它们可能会考虑先使用静态代码分析。这种方法可能会揪出至少 85% 的代码错误,为专家省下识别错误的宝贵时间。

静态代码分析和审查特别适合快速开发和 GitOps 环境:在这种环境下,常常对单个组件进行更改。比如说,如果软件设计适当地隔离了组件行为,静态分析可以揪出大部分代码错误。

为什么进行动态分析呢?

简而言之,静态分析无法揪出每个代码缺陷。

解决复杂的多组件应用程序中的问题时,静态分析尤其受到限制。当您想要衡量性能或测试用于扩展及(或)负载均衡的策略时,它几乎失去价值。面对这些限制,动态代码分析就有了用武之地。

协调动态分析和静态分析

正如开发团队已经经常使用静态代码分析——即使这种分析不是正式规定或管理的,他们也使用动态代码分析。常规软件测试和运行软件以验证修正版或验证初始实现机制是动态代码分析的几种形式。

因此,这不是静态代码分析与动态代码分析两者择其一的问题。团队可能已经使用了两者。问题变成了如何有效地使用两者。

静态代码分析最好与代码审查结合使用。动态代码分析适用于某种形式的自动化测试和测试数据生成。

团队应先将动态代码分析的重点放在静态分析可能无效的方面,比如组件性能、应用程序性能、应用程序逻辑、安全验证和跨组件边界。比如说, Redgate SQL Data Generator 和DTM Data Generator (仅举几例)等自动化测试数据生成工具可模拟应用程序在满负荷下的操作、验证所有逻辑路径,并测试这些点是否存在安全漏洞。一些机构可能已经在使用这些工具,但重要的是,它们可以用来测试静态分析极有可能遗漏的特定方面。

使用唾手可得的工具和实践很容易实现性能和负载测试的自动化。面对任何形式的生成数据自动化测试,设置逻辑和安全验证比较困难。团队需要强调测试设计,并认真选择具有特定字段值约束的数据生成工具,以运行识别潜在问题的测试。在安全验证方面,团队应将测试数据范围值扩大到正常操作之外,以确保它们不会带来潜在的问题。

静态代码分析与动态代码分析之争表明了许多注重单个步骤而不是整个过程的开发策略存在缺陷。静态代码分析和动态代码分析都扮演重要的角色,它们都是整体的开发和部署流程的一部分。少了任何一方,另一方都不可能独立完成。

原文Static and dynamic code analysis: Complementary techniques,作者:Tom Nolle

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

静态代码分析和动态代码分析是互为补充的技术

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

静态代码分析和动态代码分析是互为补充的技术

每个程序员都希望一下子就能交付高性能、安全、无错误、合规的代码,但这是不可能的。有效的代码分析技术将对你有所帮助。

Java中动态代理和静态代理的示例分析

这篇文章主要介绍了Java中动态代理和静态代理的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。0、代理模式为什么要学习代理模式?这是SpringAOP的底层【Spri
2023-06-29

JavaScript静态代码分析的初学者指南

本文将向您介绍什么是JavaScript静态代码分析,为什么要使用它,以及如何在项目中通过快速设置来实现它。

PHP中封装性的静态代码分析工具

引言:随着Web应用的不断发展,PHP已经成为了一种广泛使用的编程语言。然而,由于PHP语言的灵活性和简易性,很容易写出复杂、难以维护的代码。为了解决这个问题,开发人员经常需要使用静态代码分析工具来检测潜在的问题和提供最佳实践建议。本文将介
2023-10-21

Mariana Trench:针对Android和Java应用程序的静态代码分析工具

在这篇文章中,我们将带领大家在自己的设备上安装并配置好Mariana Trench,然后利用Mariana Trench在一个小型的App中寻找出一个远程代码执行漏洞。

常见的代码静态分析工具功能对比与推荐

Sonar way、阿里规约、findbugs、pmd和checkstyle都是常见的代码静态分析工具,每个工具各具特色。

程序员必备:5个强大的静态代码分析工具

并非所有的代码都是完美的,其中可能存在许多无法察觉的问题,即便是最高级的安全分析师也会错过这些安全漏洞。

java中静态代码块与构造方法执行顺序判断的示例分析

这篇文章将为大家详细讲解有关java中静态代码块与构造方法执行顺序判断的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。静态代码优先于非静态的代码,是因为被static修饰的成员都是类成员,会随着J
2023-05-30

这5个开源和免费静态代码分析工具,你一个都没有用过吗?

如果您是软件开发人员或代码安全分析师,则通常需要分析源代码以检测安全漏洞并维护安全的质量代码。但是您的代码中可能存在许多难以手动发现的问题。毕竟,我们仍然是人类,因此即使是最高级的安全分析师也都会错过一些安全漏洞。

VNPY 交易所返回委托和交易状态到策略的源代码分析

主要分析两个在类策略模型ctaTemplate的中的函数,onTrade和onOrder,其实两个很相似,被别的其他实例调用,推入更新的Trade和Order实例,并执行函数内的代码。对于Tick级别的交易,还是还是会经常用到这两个。下面是
2023-06-02

为什么在 React 应用中使用动态导入进行代码分割是必须的

对于基于 Servlet 规范的 Java Web 应用程序,在开发完成后,通常会将其打包为 WAR 文件,然后部署到像 Apache Tomcat 或 Jetty 这样的 Web 容器中。

技术扫盲:关于低代码编程的可持续性交付设计和分析

CRUD程序员会不会越来越便宜?CRUD,是程序员的自嘲,讲自己经常开发增删改查或者接口包装的简单逻辑代码。
低代码分析2024-12-03

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录