成功的程序员们都推崇哪种静态分析策略?

作为我的“成功程序员的7个习惯系列的一部分,今天我将讨论一些确保静态分析有效和可持续的方法。

策略

要从头开始,最好从你的静态分析策略开始。有些人想知道为什么这很重要,但实际上这对一个成功的静态分析计划至关重要。你的策略将涵盖诸如你应该运行哪些规则,什么时候可以忽略它们与什么时候必须修复它们,如何进行抑制等等。你还需要决定哪些代码需要被分析,即所有你闲置的遗留代码,这一点我们将很快讨论。

如果没有一个一致的策略,静态分析很快就会沦为一个偶尔执行的bugfinder,缩减了你从中获得的价值。如果你从事的是像医疗或汽车这样的合规性业务,无论如何你都必须进行静态分析,所以你不妨正确地进行静态分析,以获得一些价值。

工具选择

获得正确的工具很重要。该工具需要在你的代码编辑器(IDE)内,与你正在使用的语言,在你正在使用的操作系统上工作。该工具应该同时支持服务器和IDE内执行,IDE内执行(对开发人员而言)和基于Web的报告(对管理人员而言)。你需要能够配置工具来执行你想要的规则(而不仅仅是工具供应商希望你运行的规则)。成熟的工具都有开箱即用的配置,让你可以使用MISRAOWASPCWEPCI等行业倡议。

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

这些等等都是选择工具时需要考虑的问题。不要落入陷阱——它几乎不能提供什么有用的信息,说明一个工具是否真的能做到你需要的事情,静态分析工具只是工作方式不同而已。

规则选择

如上所述,很容易掉进陷阱,只要打开你的静态分析工具中的任何规则就可以了。有些厂商积极鼓励这样做,有些厂商甚至要求这样做!每个人的软件测试需求都是不同的。一个默认的配置可以让你入门,但要想成功,你必须让它成为你自己的。

要做的几件事包括关闭嘈杂的规则,并让严重性水平与自己的实际做法相匹配(你不希望一个工具在你认为严重性很低的时候说某件事很关键)。一个不明显的提示是关闭那些你喜欢但不打算在今天修复的规则。当你有时间解决违规问题时,再打开规则,而不是之前。在被举报时忽略它们,只会让开发者知道不是所有规则都重要,从而产生挫败感和坏习惯。

你正在运行的规则应该与你在现场遇到的问题、你可能合理预期的问题、安全问题、代码审查过程中发现的事情以及任何合规项目有关--这些规则你必须运行。

抑制

即使你有完全正确的规则,有时上下文会使某一特定的静态分析发现在代码的某一部分并不重要,而在另一部分却仍然至关重要。你在这里有几个选择,其中最有价值的是沮丧地关闭规则。如果你知道该规则可以在某些领域提供价值,这是一个糟糕的选择。如果你的工具不能让你正确配置和抑制,你就选错了工具——回到上面的第2步。

另一个有些人掉进的陷阱是对结果进行一些人工管理,并将认为重要的结果传递出去。这是劳动密集型的,不可扩展的,不可维护的,而且你最终会修复那些不那么重要的东西,而错过那些更重要的东西。你需要一个数据驱动的过程,帮助你评估哪些违规行为需要修复,哪些可以安全地忽略,然后有一种方法来标记它们,使它们不会再出现。理想情况下,这可以由开发人员直接在代码所在的IDE中完成,也可以由经理、架构师等在基于WebUI中完成。

有些人把这些抑制放在一个单独的系统中。这样做的好处是永远不会改变代码,但有风险,当你进行分支或重构时,或者出现一些同步问题时,需要返工。还有一些人以特殊注释的形式对代码进行修改。虽然这确实需要修改代码,但它是持久的、准确的,而且还能记录抑制——如果你被审计,这是很好的。考虑一下你的需求,选择最适合你的环境的方法。如果你的工具不支持这两种方法,请回到步骤2

遗留代码

遗留代码与抑制有关。决定如何处理旧代码很重要。这同样取决于你的需求,但我在下面介绍了几种方法。

有些组织选择只在有一个未完成的字段bug-report触及这些代码行的情况下才修复遗留代码中的静态分析违规行为——文件中的其他任何东西都不应该被触及。如果你的代码真的很老,或者变更的风险很高,这是一个完全合理的政策。它可以将风险降到最低。

另一个想法是,无论如何,当你在一个文件中的所有东西都要修复。这带来了一些变化的风险,但是如果你有一个好的单元测试套件(我们下次会讲到),那么你就不用那么担心了。从积极的一面来看,你接触的任何代码都将是最新的所需代码标准和最佳实践。陈旧的代码会比原来的代码更不陈旧。

你也可以采用混合方法,或者干脆忽略某个日期之前的所有旧代码,只用静态分析前进。弄清楚你能达到什么目的,然后这样做。只要先想好你提出的策略的风险和收益。

静态分析是你的软件质量/安全武器库中最有价值的工具之一。掌握它能带来巨大的价值,但如果弄错了,你的组织中的一代编码员就会注定要使用过时的质量和安全流程。如果你有问题,请在下面的评论中告诉我,我很乐意和你一起探讨如何使静态分析发挥作用。

posted @ 2021-03-12 11:10  SWTOR  阅读(94)  评论(0编辑  收藏  举报