与任何工具一样,购买结果的一部分取决于评估标准的好坏,因此理解人们在评估安全静态分析工具时可能使用的标准是很重要的。
显然,每项标准的权重将取决于个别公司的优先次序,但清单可能是合理的通用的。
一些可能适用的标准是:-
发布于 2011-09-22 07:41:55
关于如何评估静态分析工具,下面是最重要的一点:
我再重复一遍。用你自己的代码试试。您需要运行一个测试,使用它来分析您的一些有代表性的代码,然后分析它的输出。
原因是静态分析工具的有效性差别很大,它们的有效性取决于在您的公司中编写什么样的代码。因此,对你的公司最好的工具可能与对另一家公司最好的工具不一样。
你不能按特征列表去做。仅仅因为一个工具说它支持Java,并不意味着它将在分析Java代码方面有任何优势--也不意味着它能够很好地分析Java代码和发现您关心的问题。
大多数静态分析供应商将乐于帮助您建立一个免费的试用程序,这样您就可以在您自己的代码上试用他们的工具--因此接受他们的建议。
加里McGraw和约翰史蒂文写了一篇关于如何选择安全静态分析工具的好文章。除了强调您需要在自己的代码中尝试工具以查看哪个是最好的之外,它们还指出,您应该考虑到该工具可以根据您的环境和需求定制得有多好,并为此成本进行预算。
发布于 2011-09-21 17:33:03
一长串的标准可能会分散你的注意力,就像帮助你找到一个好的解决方案一样。
以“假阳性”问题为例。这是这类工具的固有问题。长期的解决办法是学会如何与他们生活在一起。这意味着您的程序员将不得不学习如何围绕静态分析工具编写代码,了解是什么导致它触发假阳性,并以不同的方式编写代码,这样就不会触发假阳性。这是一种熟悉使用lint的技术,或者是那些试图免费编译代码的人:您可以调整代码,直到错误的肯定停止触发。
最大的标准是理解你想要解决的问题。让程序员完成一次运行静态分析器的步骤,消除代码中最大的问题,并坦率地了解他们应该了解的编程知识,而不是犯这些错误,这有很大的好处。但连续运行的静态分析仪的边际值要小得多,边际成本要高得多。
发布于 2011-09-20 16:57:23
多年来,我一直是C++代码的超级粉丝。对我来说,最大的两个因素是语言报道(当时没有其他人拥有)和“可居住性”。你知道,生活在静态分析中是一种主观的东西。在他们的手册中有一章叫做“和林特一起生活”,它在各种起起落落的过程中做得很好。要使其适合居住,需要有能力定制发出的警告和错误,但在某种程度上不会让开发人员疯狂地使用它。
在可伸缩性方面,我遇到了分析工具无法处理第三方代码库等问题,因此在一个大型项目中,这也是一个考虑因素。
https://security.stackexchange.com/questions/7326
复制相似问题