加载中...

静态代码分析(Static Code Analysis)指在不执行程序的情况下,对源代码、字节码或二进制进行自动化分析,以发现潜在缺陷、安全漏洞、风格违规和可维护性问题。与之相对,需要运行程序的检测称为动态分析。
从浅到深包括:词法与风格检查(如命名、缩进);基于抽象语法树的模式匹配(发现可疑代码结构);数据流与控制流分析(追踪空指针解引用、资源泄漏、未初始化变量);污点分析(追踪不可信输入流向敏感操作,用于发现注入类漏洞);以及基于形式化方法的抽象解释与符号执行。
各语言生态代表:C/C++ 的 Clang Static Analyzer、Coverity;Java 的 SpotBugs、Error Prone;JavaScript/TypeScript 的 ESLint;Python 的 pylint、mypy;跨语言平台有 SonarQube、CodeQL、Semgrep。安全领域的此类工具统称 SAST。
优点是无需测试用例、可全量覆盖代码、能在编码阶段即时反馈;固有弱点是误报与漏报并存,规则需要按项目调优,否则告警噪音会让开发者习惯性忽略。

登录 后参与讨论
暂无讨论,来发表第一条评论吧