
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.使用静态分析,减轻团队压力作为Parasoft的解决方案架构师,我们接触过很多在这方面寻求帮助的人,所以有这方面疑惑的不止你一个人!如果你想了解更多信息,可以下载并阅读我整理的完整指南(https:/alm.parasoft./getting-started-with-static-analysis-whitepaper)。首先我们假定你已经安装了静态分析工具并配置了所有初始设置。除此以外,如果刚开始没有确定项目需要采取的策略,入门会比较困难。这里我所说的“入门”是指深入理解将静态分析集成到现有项目中的一般方法,以及如何提高静态分析随着时间的推移带来的投资回报。什么是静态分析.简单来说,静态
2、分析是在不执行代码的情况下检查源代码和二进制代码的过程,通常用于查找bug的前期准备或评估代码质量。与需要运行程序的动态分析(例如Parasoft Insure +)不同,静态分析可以直接分析源代码而不需要执行源代码。这意味着静态分析可用于部分完整的代码,库和第三方源代码。开发人员可以将静态分析应用在编写或修改代码的过程中,甚至可以应用到任何代码库。支持安全检测在应用程序安全域中,静态代码分析采用了静态应用程序安全性测试(SAST)技术。静态分析可以支持安全漏洞检测,同时支持bug检测,质量指标和编码标准一致性检测。支持功能安全和编码标准另外,静态分析工具强制要求(在某些情况下“强烈推荐”)能
3、够支持安全标准(如ISO 26262或EN 50128)的检测,因为这些标准能够检测难以发现的缺陷并提高软件的安全性。当然,这又回归到安全性的问题上,因为静态分析工具还可以帮助软件团队遵守主要用于验证安全编码的编码标准,例如CERT甚至MISRA。为你的项目使用静态分析静态分析工具的一个优点是它们可以在项目的任何阶段引入和使用,即使项目是不完整的或者只有部分编码是有效的。引入静态分析的最大难点在于代码量大会产生大量的警告。因此,将静态分析应用到项目中时的重点应该是使团队能够尽快高效工作,并最大限度地减少团队被静态分析的警告困扰的情况。这并不是说这些警告不重要,但大多数开发人员都不会修复现有或遗
4、留代码缺陷,至少不是立即处理。最重要的应该是将静态分析运用到日常流程中,以便最大化静态分析的使用效果和可用性,然后处理最危险的bug和安全漏洞。一旦团队变得更加熟练,你就可以专注于优化工具和流程,提高投资回报率。开始前设定目标为了充分利用静态分析,了解最终目标非常重要。例如,如果目标是安全性,那么重点是决定分析和补救的策略,或者如果目标是遵守MISRA C等编码标准,那么重点将变成满足编码标准,并根据需要向认证机构认证。当第一次采用静态分析时,很容易陷入一个陷阱越多越好(即分析和警告越多意味着你从工具中获的价值越大)。这是一个常见的陷阱。与之相反,我们需要专注于最终目标。如果安全性是重点,请你
5、将注意力放在提高安全性和减少其他类型警告上。当然,致命的bug也很重要,但它们不应该分散主要目标。随着时间的推移,团队变得更加熟练,你将能够纳入其他次要目标,例如提高整体质量或实施编码标准。随着静态分析成为每个开发人员日常工作的一部分,他们将能够更快地分析结果并更有效地修复bug。到了这个时候,你将能够更有效地实现次要目标,而不是一开始的忽视。在产品每个阶段使用静态分析的策略一旦确立了主要目标,下面就需要确定产品的成熟度,因为它会影响静态分析的采用方式。下面列出了产品的主要开发阶段,确定你的项目的所在阶段,然后采取合适的方法。现有项目 开发中最常见的方案是团队决定使用静态分析的规则,并将其推广
6、到当前项目。每个项目都可以选择在sprint开始时或在主要新功能更新开始时使用静态分析。实际上,软件团队一直在工作 - 即使一个产品“完成”,因为另一个版本或变体进入开发。这种情况的关键在于每天都有大量现有代码和新代码。推荐被称为“底线”方法的集成方法,主要的思想是在开发新代码时将其改进,同时将不太重要的警告作为技术债务推迟。我们后面会详细谈谈这个问题。现有项目 - 维护中对成熟的产品采用静态分析可能与仍在开发中的项目有不同的目标。这是一个处于软件开发生命周期后期的产品,其中编写的新代码很少,只有修复挥之不去的bug和安全漏洞。对这些项目采用静态分析的主要方法称为“确认和推迟”。在这种方法中,
7、由于开发的新代码很少,所有发现的bug和安全漏洞都会被添加到现有的技术债务中。新项目(Greenfield Project)既然软件团队通常不会重新开始,那新产品和项目是将新工具和技术集成到开发过程中的理想点。在这些项目中,几乎没有特定于项目的现有代码,但它仍然可能依赖于第三方和开源软件。开发人员可以从一开始就将静态分析集成到他们的开发环境中,从而在编写代码时确保高质量的标准。这允许采用编码标准并确保在出现时处理关键的静态分析警告,从而减少技术债务堆中的bug和漏洞。在这种情况下采用的方法恰当地命名为“绿地”。静态分析采用方法:如何管理早期静态分析报告一旦将静态分析工具安装到项目中,该工具通常
8、会报告相当长的违规和警告报告。这可能是多到无法处理的,特别是在大型代码库中,因此如何管理这些报告将会直接影响到工具集成到项目中能否成功。并非所有警告都是至关重要的,因此不需要立即处理所有警告。学习哪些需要立即解决而哪些需要推迟处理是成功的关键。如上所述,产品的成熟度和规模对方法有直接影响,下面将更详细地概述。底线方法顾名思义,在这种方法中,开发人员决定在初步分析之后,他们不会让任何更严重的警告和违规进入代码库。换句话说,他们需要分析每个警告来确定其准确性,并及时修复,如果它确实是一个bug。团队还可以决定在现有代码中添加已发现的关键警告,并将其添加到报告工具中的bug列表中。这些类型的警告可能
9、是严重的安全漏洞,如SQL注入,或严重的内存错误,如缓冲区溢出。在大多数情况下,可以推迟不太严重的警告以供以后分析。你可能会想,“这不仅仅会增加我们的技术债务吗.”如果你这样想,那你就是对的!但在这个阶段,我们对此表示满意。这些警告中的任何潜在错误都已经在技术债务堆中。至少现在,它们被识别出来并且以后更容易修复。确认并推迟处理方法如果产品已经在市场上并且正在维护中,那么识别代码中的任何bug和安全漏洞仍然是有益的,但让开发人员分析(更不用说修复)所有这些警告是不可行的。在这种情况下,查看最重要的报告并确定行动方案是有意义的。其余的警告只需要确认,因为软件团队认识到它们存在,但它们大多数都被推迟
10、了。(这再次增加了该组织的技术债务,但如上所述,这些漏洞在技术上已经存在作为技术债务。)这种方法不同于底线方法的地方在于确定关键警告后,你会推迟其余的警告,而不需要所有的都分析。绿地方法现有代码很少的项目是静态分析的理想起点。在这种情况下,软件团队可以调查出现的所有警告并修复发现的错误。与其他方法不同,你只需要管理很少的警告,因此开发人员可以解决额外的工作。这也是通过这些工具实现和实施编码标准的理想时间,因为可以在IDE中以及在将任何代码提交到版本控制之前识别和修复违规(你可以在此处描述的其他方案中执行此操作)。在三个主要阶段采用何种静态分析,可以通过如何处理积压的警告来区分,如下所示:在三个
11、主要阶段采用静态分析:在绿地项目中,大多数报告的警告都经过调查和修复,几乎没有进入技术债务堆。正在开发的项目往往会积压大量的警告,这些警告大部分都是推迟处理,只处理严重警告,维护中的产品往往会推迟大多数警告。配置与过滤开源或轻量级静态分析工具与商业高级静态分析工具之间的主要区别之一在于能否配置为分析启用哪组检查器,并根据警告类别,文件名,严重性等过滤掉报告的结果属性。这有助于突出目标开发人员可以专注于他们感兴趣的警告类型,并减少在任何时间产生的垃圾信息量。配置检查器和过滤结果之间也存在差异。尽管一开始限制全局配置中的规则数量似乎更好,但通常应使用过滤来限制报告X围,而不是完全消除检查程序。如果
12、在配置中关闭后来证明是重要的规则,则警告存储库中将没有历史记录,因此你将无法确定错误是由最近的更改引入还是在静态分析之前已经在代码中。我建议使用配置将规则集限制为可预见对软件团队有用的规则。同样,以最终目标为出发点:如果提高安全性是关键目标,那么启用所有与安全相关的规则,禁用不太重要的规则,启用CERT C等内置安全编码标准。如果你正在使用Parasoft C/C+test等高级静态分析解决方案,你可以利用其内置的管理工具来处理静态分析报告中生成的数据,并推进未来的重点开发工作。总结静态分析工具使团队无需执行代码,就能够检测和跟踪错误安全漏洞。这些工具可应用于现有、传统和第三方代码并提供质量审查结果。采用何种静态
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论