logo Parasoft C/C++test 使用教程 我也要发布文档

在前期步骤中采用静态分析


到目前为止,2020年是充满挑战的一年。随着我们中越来越多的人在家外远程办公,比以往任何时候都重要的是,我们产生的代码要尽可能的好。静态分析是软件开发人员以及安全和功能安全专业人员的理想焦点。

我们都知道,静态代码分析是我们应该做的事情。我们中有些人知道我们应该这样做,因为它会帮助我们。其他人则可能感觉像是对他们施加了静态分析,这既浪费时间,又乏味,或者创建工作却无济于事。虽然我想说这些人是错误的,但不幸的是,他们可能是正确的!


做的比你能转化的多

如果静态分析缓慢、嘈杂(误报)、使用时痛苦、创造工作或无法提供价值,通常是因为您付出的努力超过了转化的余地。正确配置静态分析工具也是一个重要因素,但这本身就是一个完全独立的问题,我将在另一篇文章中介绍。

对于这篇文章,我想集中讨论许多静态分析的首次采用者所犯的一个错误——尝试过早地做太多事情。总体而言,从一开始就使静态分析工作流程和配置正确对成功至关重要——减少痛苦,获得更多收益。第一步是确保您拥有适合组织的正确工具。最近,我们制作了一个网络研讨会和白皮书,涵盖了如何选择合适的静态分析工具以满足您的需求的基础知识,因此请查看这些内容。


从静态分析开始

选择静态代码分析工具后,需要对其进行配置。您要运行哪些检查程序?我将以一个简单的指南开始:最好从一小组检查员入手,必要时甚至只有一个检查员,并确保您和您的团队正在磨练您的静态分析技能和工作流程,同时从中受益匪浅。常见的替代方法是打开一百或更多的检查程序,这些检查程序会产生大型报告,您会偶尔进行跟进。

静态分析工具在竖立安装之前会产生很多噪音。当我说“力不从心”时,噪音(有时称为误报)压倒了重要的警告。早期采用有时是出于学术上的追求,其目的是尽早调查以了解代码库中有多少错误。这种方法不考虑开发人员的工作流程及其日常使用的工具。这也不符合实用的需求来编写、测试和发布软件。

最好的方法是从小处着手,以不断不断地提高代码质量。消除最麻烦的关键代码问题,然后进行扩展以查找仍然重要但可能不太危险的其他问题。让我们看看它在实际意义上是如何工作的。

首先解决大问题

有时我们会看到组织尝试根据静态分析工具提供的所有可能检查程序的较大列表,以协商一致的方式组装检查程序的配置列表。尽管看似合理,但是如果您认为Parasoft工具具有1000多个检查器,则该方法有缺陷,因为它专注于该工具可以做什么,而不是根据客户支持,预期环境等来解决应用程序面临的实际问题。

即使错误类型在摘要中似乎很重要,团队也可以花费大量时间追查那些没有提供太多价值的检查程序中的违规行为。将静态分析与团队正在解决或期望面对的实际问题联系起来至关重要。缩小检查人员的名单很重要,但对于刚开始的团队或项目仍然可能产生过多的违规行为。您需要查看所吃“食物”的大小。

限制静态分析的“咀嚼”

最小化被咬的大小(不仅是检查器的数量)的一种好方法是评估您针对它运行的代码。如今,大多数项目都由现有的,旧的或继承的代码库组成。如果这些足够大,则无法对此代码进行静态分析并专用于解决问题的资源。您必须根据所分析的代码量来限制“位数”。

一种常见的方法是将对报告的警告的操作限制为新开发或最近修改的代码。例如,团队负责人决定在下一个冲刺阶段,将使用一组优先的检查器对所有新代码进行分析。第一组分析报告用于评估所需的工作量。如果这对于一次冲刺来说太多了,则可以进一步限制分析。另一方面,如果此方法不能产生足够的警告,或者错过了质量目标,请扩大范围。

这一切都是要说的:咬一小口,价值很高的一口。对其进行修复,完成某些工作,并将其构建到您的日常工作和文化中。慢慢添加到它。再设置一些检查器,最终,您将一开始就实现所有需要的检查器的理想目标。


观察并逐步增加静态分析的价值

从小处着手不仅仅是控制可管理的工作流程。它还可以帮助对该技术不熟悉并且对该工具不熟悉的开发人员快速了解其价值。通过首先给他们关键的发现,他们看到了对于修复和理解测试或代码审查可能遗漏了它们很重要的错误。随着分析的进行,开发人员将始终获得最可行的结果。目的是永远不要到达向开发人员发出低价值警告的位置。浪费他们的时间和工具,您应该利用自己的流程将其过滤掉。


避免分类

在讨论静态代码分析结果时,经常会进行分类。仅当流程不堪重负时,分流才在现实生活中使用过。咬牙切齿的软件团队在启用默认检查器的情况下在大型代码库上运行静态分析工具,因此不可避免地会收到许多警告。然后,他们尝试通过他们说,我需要修复哪些问题?哪些最重要?这是乏味的、过于主观的、容易出错的,并且几乎是不必要的。

工具应该为您分流。如果没有,则可能是您使用了错误的工具、错误的配置或错误的方法。现代的静态分析工具必须能够根据严重性、优先级和固有风险过滤警告。不要让工具本身强迫您咬一口。


总结

希望您发现此建议有用。成功采用静态分析需要精简步骤,才能大幅度提高质量,安全性和安全性。通过限制检查程序和代码量的分析范围来限制您的团队“受挫”的程度——每个人都可以看到其价值。避免“太大的麻烦”避免了许多关于静态分析工具的常见抱怨。 持续和逐步的改进可帮助每个人学习如何进行静态分析,并从投资中获得更好的价值。

祝您在2020年余下的静态分析旅程中好运!