logo Parasoft 行业资讯(二) 我也要发布文档

健康的静态分析策略



作为有关成功程序员的7种习惯的系列文章的一部分,今天,我将讨论确保静态分析有效且可持续的几种方法。


策略

首先,最好从静态分析策略开始。有些人想知道为什么这很重要,但这实际上对于成功的静态分析计划至关重要。您的策略将涵盖诸如应运行哪些规则,什么时候可以忽略它们,何时必须修复它们,如何执行抑制等等之类的事情。您还需要确定需要分析哪些代码,即通过所有遗留代码来进行分析。您只是坐在那里,我们将在稍后讨论。

如果没有一致的策略,静态分析将迅速演变为偶尔执行的错误查找程序,从而缩小了您从中获得的价值。如果您从事医疗或汽车等合规性业务,则无论如何都必须进行静态分析,这样一来,您就可以正确地进行分析并获得一定的价值。


工具选择

获得正确的工具很重要。该工具需要在您使用的操作系统上的代码编辑器(IDE)中使用您所使用的语言进行工作。该工具应支持服务器和in-IDE执行,in-IDE(对于开发人员)和基于Web的报告(对于管理人员)。您需要能够将工具配置为仅执行所需的规则(而不仅仅是工具供应商希望您运行的规则)。成熟的工具具有开箱即用的启动配置,可让您采用MISRAOWASPCWEPCI等行业计划。

能够使用自己的规则,想法和最佳实践来扩展该工具对您的长期成功也很重要。而且不要忘了技术支持–有人可以查看有关嘈杂规则的问题并帮助您解决这些问题吗?您要使用开源并自己进行修复吗?通常,您是否使用供应商服务来帮助您快速启动项目并朝正确的方向前进?

这些以及更多是选择工具时要考虑的所有事情。不要陷入困境——它提供了关于工具是否真正能够满足您的需要的有用信息,而静态分析工具的工作方式却有所不同。


规则选择

如上所述,很容易陷入陷阱,只需打开静态分析工具中的任何规则即可。一些供应商积极鼓励这样做,另一些甚至要求!每个人的软件测试需求都不同。默认配置可以帮助您入门,但是要成功,您必须自己进行配置。

需要做的一些事情包括关闭嘈杂的规则并设置严重性级别以符合您自己的实际做法(您不希望工具在您认为严重性较低时就说出一些关键内容)。一个不明显的提示是关闭您喜欢但不打算立即解决的规则。如果您有时间解决违规问题,请先打开规则,而不要先打开规则。当告知开发人员并非所有规则都重要时,在报告它们时忽略它们只会导致沮丧和不良习惯。

您正在运行的规则应与您在现场遇到的问题,您可能会合理预期的问题,安全性问题,在代码检查过程中发现的问题以及任何合规性项目有关-您必须运行的规则。


压制

即使您拥有正确的规则,有时上下文也会使特定的静态分析在代码的一部分中显得不重要,而在另一部分中仍然至关重要。您这里有一些选择,其中最有价值的就是挫败并关闭规则。如果您知道该规则可以在某些领域提供价值,那么这是一个错误的选择。如果您的工具无法正确配置和抑制,则您选择了错误的工具,返回上述步骤2


一些陷入的陷阱是对结果进行一些手动管理并散发出重要的结果。这是劳动密集型的,不可伸缩的,不可维护的,您将最终解决不那么重要的事情,而错过了更重要的事情。您需要一个以数据为依据的流程,以帮助您评估哪些违规问题需要解决,哪些违规问题可以安全地忽略,然后提供一种标记这些违规情况的方法,以免再次发生。理想情况下,这可以由开发人员直接在代码所在的IDE中以及由管理人员,架构师等在基于WebUI中完成。

有些人将这些抑制作用放在单独的系统中。这样的好处是从不更改代码,但是冒着在分支或重构或存在某些同步问题时要求进行返工的风险。其他人则以特殊注释的形式对代码进行了更改。尽管这确实需要进行代码更改,但它是持久且准确的,并且还记录了禁止的内容-如果您经过审核,那就很棒。考虑您的需求,并选择最适合您的环境的方法。如果您的工具不支持这两种工具,请返回步骤2


旧版代码

旧版代码与禁止相关。决定要如何处理旧代码很重要。同样,这取决于您的需求,但是我在下面介绍了几种方法。

一些组织选择仅在存在涉及这些代码行的未解决的现场错误报告的情况下,才修复遗留代码中的静态分析违规问题——文件中的其他内容都不应被触及。如果您的代码确实很旧,或者更改的风险很高,那么这是一个完全合理的策略。它将风险最小化。

另一个想法是,无论如何,都可以修复文件中的所有内容。这带来了变更的风险,但是如果您有一个好的单元测试套件(我们将在下一次讨论),那么您不必担心太多。从积极的方面来说,您触摸的任何代码都将具有最新的必需代码标准和最佳实践。过时的代码将比以前少过时了。

您也可以执行混合方法,或者只是在某个日期之前忽略所有旧代码,而仅使用静态分析。找出可以实现的目标并以这种方式做到。首先,请考虑一下您提出的策略的风险和收益。


静态分析是软件质量/安全性库中最有价值的工具之一。正确执行将带来巨大的价值,但是错误执行可能会使组织中的新一代编码人员注定要使用过时的过时质量和安全流程。如果您有任何疑问,请在下面的评论中让我知道——很乐意就如何使静态分析发挥作用进行讨论。