首页 > 解决方案 > 为什么 SpotBugs(FindBugs)可以扫描 Java Bytecode?

问题描述

我一直觉得静态分析器必须查看源代码才能进行分析,但是 Spotbugs 是如何分析 Java Bytecode 的呢?那不是编译好的源文件吗?

标签: javabytecodestatic-analysis

解决方案


Java 字节码比本地机器码保留了更多的信息。

类名、函数名、调用参数和返回类型都被保留。因此,分析或反编译回源代码比硬件机器代码(例如 C 编译结果)要容易得多。

此外,没有理由不能对任何机器代码进行静态分析,尤其是在使用调试信息编译的情况下。

毕竟,处理器命令已记录在案。编译不是隐藏代码功能的方法。


推荐阅读