问问题
218 次
1 回答
1
静态分析意味着“阅读源代码并尝试识别故障”。出于安全考虑,静态分析工具会尝试找出代码中的安全漏洞,然后在代码发布以供生产使用之前修复这些漏洞。
动态分析意味着“观察应用程序的实际执行以识别故障(例如,取消引用空指针,数组访问超出数组末尾,重新使用动态分配的块而不首先释放它,......”。在应用程序期间完成开发和调试,它可以发现错误,然后在代码发布生产之前修复。在生产执行期间完成,它可能会检测软件即将产生的错误,并防止这些错误(例如,实际上不做deref,而是报告应用程序错误),由于动态分析的侵入性,代价是执行成本相当高。
每个人都有不同的优点和缺点。这两种技术都受到图灵诱导的无法完全推理软件活动的影响。这些工具中的大多数都存在遗漏问题或报告不真实问题的故障。通常这些工具会尽量避免报告误报,因为人们不会使用会产生大量此类错误的工具。限制误报也往往会限制报告真实错误,因此您不能确定干净的报告是否意味着“没有问题”。
于 2020-07-07T18:11:46.350 回答