在编写代码时,大多数人都知道他们在做什么 - 至少在当时 - 但以后会有多清楚,以及其他人如何理解它?是否过于复杂?它是否遵循规定的编码标准?是否有微妙的错误可能使其容易受到黑客攻击?除非你检查,否则你不知道,这意味着静态分析。
软件质量的基础(通常需要资格认证或认证)是静态分析:对源代码的解析和检查。静态分析提供了对代码编写情况的深刻见解,特别是参考质量指标和遵守编码标准;它为进一步的评估提供了基础,包括控制和数据流分析以及结构覆盖分析;它为工件提供了基础,这些工件既是可接受的认证文件,也是质量的有形证据。
静态分析在源代码级别工作,方法是像编译器一样解析代码,同时识别与控制和数据流相关的信息,例如条件分支的下落。它整理的数据为指标提供了基础,这些指标可帮助开发人员更好地了解正在开发的代码的清晰度、复杂性甚至可测试性。在最简单的形式中,它可以标记看似微小的事情,例如拼写错误,这些事情可能会导致数小时的延迟,然后才被发现。更复杂的静态分析工具还可以计算诸如循环复杂性之类的指标,循环复杂度是通过程序或代码段的唯一路径数的度量,例如可能由过高的循环密度(嵌套在循环中的条件数)导致的。静态分析工具可以为程序的不同部分提供密度分数,可以指导开发人员提供更简单,更清晰的路径。这也带来了更好的可理解性和改进的可测试性。
静态分析的另一个功能是确保符合编码标准,无论是行业定义的、用户定义的还是两者的组合。MISRA C、CERT C、CWE 等标准源自开发安全可靠的软件的研究和行业最佳实践。静态分析提供保护,防止在某些情况下可能导致问题的细微错误和疏忽,例如最近因未检查变量长度而导致的臭名昭着的“心脏出血”漏洞。许多行业功能安全标准,如汽车行业的ISO 26262和医疗设备的IEC 62304,也要求通过静态分析进行检查,确保(例如)没有隐藏的数据流,也没有为了代码质量和安全性而无条件的跳跃。
静态分析有助于“映射”未来分析
静态分析为代码系统开发了一种“大脑图谱”,可以用作动态分析技术的基础,例如详细的结构覆盖分析以及自动化单元和集成测试。反过来,这些生成自己的相关指标,以加强高质量开发过程的证据。这些测试及其生成的工件与需求可追溯性工具结合使用,通过将功能、安全性和安保要求链接到代码、分析结果以及测试用例和结果,建立了透明的开发生命周期。实际上,这种双向可追溯性不仅为忠实和完整地实施要求提供了证据。它还支持对整个生命周期中发生的需求更改或失败测试的影响分析,突出显示受影响的软件系统的所有部分,从而突出显示需要重复的任何分析和测试。
静态分析数据提供额外的好处
静态分析对单元测试的有用性始于对代码结构的理解。通过静态分析,可以分析应用程序的数据和控制方面,理解接口,并推导出测试用例工具的基础。这些线束对于与需求相关的测试非常宝贵,可节省时间和费用。
从这个派生的数据集中,还可以自动生成测试用例本身来执行大部分代码,并通过结构覆盖率分析提供证据。这些自动生成的测试提供了一种理想的机制来增强基于需求的测试,以得出一组强大的测试用例,这些用例可以满足功能、安全和安保要求。同样,需求可追溯性可以从需求链接到验证软件组件和验证应用程序的测试用例。
在整个软件开发生命周期中使用静态分析时,可以防止潜在错误持续到需要更多的精力和费用来纠正的程度。来自静态分析的数据和依赖它的分析工具对于制作越来越多的政府和工业组织认证所需的测试证明和文档至关重要。
审核编辑:郭婷
-
源代码
+关注
关注
96文章
2944浏览量
66670 -
编译器
+关注
关注
1文章
1618浏览量
49052
发布评论请先 登录
相关推荐
评论