【发布时间】:2015-11-05 20:18:38
【问题描述】:
当人们谈论静态分析时,他们通常会谈论质量指标和编程约定。似乎代码审计是不同的,因为它发现的是错误和安全漏洞。理论上,两者都是静态分析(代码审计是在不执行程序的情况下进行的,不是吗?使用 Findbugs、Coverity 等工具)。
那么,代码审计也是静态分析吗?
【问题讨论】:
标签: code-analysis static-analysis static-code-analysis code-auditing
当人们谈论静态分析时,他们通常会谈论质量指标和编程约定。似乎代码审计是不同的,因为它发现的是错误和安全漏洞。理论上,两者都是静态分析(代码审计是在不执行程序的情况下进行的,不是吗?使用 Findbugs、Coverity 等工具)。
那么,代码审计也是静态分析吗?
【问题讨论】:
标签: code-analysis static-analysis static-code-analysis code-auditing
Code audits 主要由人类完成(在一些工具的帮助下),就像任何其他类型的audits(例如financial audits)一样。 Code review 通常在开发团队内部完成,但代码审计通常由外部人员完成。
静态source code analysis 由软件code analysis tools 完成,在实践中使用它们非常复杂(因此实际上分析软件工具需要其用户的帮助或专业知识和/或将提供false positives)。
halting problem 是源代码分析的根本限制:没有工具可以静态检测每个无限循环程序(并且只能检测它们)。
为了分析 C 或 C++ 代码,您可以考虑使用 MELT 自定义您的 GCC 编译器。或者使用Frama-C,可能通过在你的源代码中添加ACSL注解(有足够的注解,并且在一些有限类的C程序上,主要用于嵌入式应用程序,该工具将能够证明您的代码在规范方面表现良好)。
但是有no silver bullet。编程很困难(即使使用工具)。
【讨论】: