如果您问开发团队他们的主要目标是什么,最常见的三个答案可能包括:编写无错误的代码。符合设计规范。避免安全问题。那么,团队如何审查代码以确保实现这三个主要目标?答案很简单,代码分析。但它应该是静态代码分析吗?还是动态代码分析?还是两者的结合?让我们看看静态和动态代码分析如何在开发中发挥重要作用,以及它们的差异如何帮助规范代码。静态代码分析与动态代码分析有何不同?静态代码分析检查代码以识别逻辑和技术中的问题。动态代码分析运行代码并检查结果,这还涉及测试代码可能采用的可能执行路径。即使以最基本的方式,当开发团队测试代码时,他们也在执行动态分析。当程序员审查代码时,他们正在执行静态分析。无论使用哪种工具,开发人员和程序员都在进行分析,这最终有助于创建更好的代码。静态代码和动态代码本身都不是理想的,这意味着团队应该优化两者。开发团队不应将静态代码分析和动态代码分析视为非此即彼的关系,而应视为相辅相成的共生关系。代码审查类似于静态分析如果由于某种原因,团队决定跳过静态代码分析,这实际上意味着团队计划不审查代码。代码审查和静态代码分析就像相关术语。代码审查有助于发现代码问题,而无需进行耗时且成本高昂的动态测试。代码审查上下文中的静态代码分析是开发和维护优秀软件的第一步,也是最重要的一步。大多数静态代码分析是使用旨在评估代码、查找错误或弃用的技术和实践的工具完成的。将静态代码分析视为代码审查要素的组织可能会进行正式的代码审查,然后应用静态代码分析工具,最后通过选择的代码审查流程审查结果。如果机构决定首先与程序员和导师一起审查代码,他们可能会考虑首先使用静态代码分析。这种方法有可能捕获至少85%的代码错误,从而节省专家识别错误的宝贵时间。静态代码分析和审查特别适合快速开发和GitOps环境:其中经常对单个组件进行更改。例如,如果软件设计适当地隔离了组件行为,则静态分析可以捕获大多数代码错误。为什么要进行动态分析?简而言之,静态分析无法捕捉到每一个代码缺陷。当涉及到解决复杂的多组件应用程序中的问题时,静态分析尤其受限。当您想测量性能或测试扩展和/或负载平衡策略时,它几乎失去了价值。面对这些限制,动态代码分析开始发挥作用。协调动态和静态分析正如开发团队已经经常使用静态代码分析一样——他们也使用动态代码分析,即使这种分析没有被正式授权或管理。常规的软件测试和运行软件以验证修改或验证初始实现机制是动态代码分析的形式。所以这不是在静态代码分析和动态代码分析之间进行选择的问题。团队可能两者都用过。问题变成了如何有效地使用两者。静态代码分析最好与代码审查结合使用。动态代码分析适用于某种形式的自动化测试和测试数据生成。团队应该首先将动态代码分析重点放在静态分析可能无效的领域,例如组件性能、应用程序性能、应用程序逻辑、安全验证和跨组件边界。例如,自动测试数据生成工具,如RedgateSQLDataGenerator和DTMDataGenerator(仅举几例)模拟应用程序在满负载下的运行,验证所有逻辑路径,并测试这些点是否存在安全漏洞。一些机构可能已经在使用这些工具,但重要的是,它们可用于测试静态分析最有可能遗漏的特定方面。使用触手可及的工具和实践,自动化性能和负载测试很容易。对生成的数据进行任何形式的自动化测试都很难设置逻辑和安全验证。团队需要强调测试设计并仔细选择具有特定字段值约束的数据生成工具来运行识别潜在问题的测试。在安全验证方面,团队应将测试数据范围值扩展到正常操作之外,以确保不会引入潜在问题。静态代码分析与动态代码分析的争论表明,许多专注于单个步骤而不是整个过程的开发策略存在缺陷。作为整体开发和部署过程的一部分,静态代码分析和动态代码分析都发挥着重要作用。没有一方,另一方无法独立完成。原标题:静态和动态代码分析:互补技术,作者:TomNolle
