java - 为什么 SpotBugs(FindBugs)可以扫描 Java Bytecode?
问题描述
我一直觉得静态分析器必须查看源代码才能进行分析,但是 Spotbugs 是如何分析 Java Bytecode 的呢?那不是编译好的源文件吗?
解决方案
Java 字节码比本地机器码保留了更多的信息。
类名、函数名、调用参数和返回类型都被保留。因此,分析或反编译回源代码比硬件机器代码(例如 C 编译结果)要容易得多。
此外,没有理由不能对任何机器代码进行静态分析,尤其是在使用调试信息编译的情况下。
毕竟,处理器命令已记录在案。编译不是隐藏代码功能的方法。
推荐阅读
- git - git cmd / github桌面上的所有最新错误
- docker - 多个容器之间的 Docker 命名卷
- function - 需要一个类型为 'a * 'b -> 'b -> 'a 的函数
- python - “r.start 不是函数” Fermipy Conda 错误
- scala - Spark 3.0 读取 json 文件比 Spark 2.4 慢得多
- regex - 能够在 .htaccess 测试站点中成功重写 URL,但是在 localhost 或实时站点中使用相同的代码时不起作用
- asp.net-identity - 使用 ASP.NET Identity 或 Identity Server 4 使用本机应用程序进行 Facebook 登录
- python - 如何在 python 中保存类和函数以供通用使用
- pandas - 在 Pandas 中对时间序列数据进行子集化的正确方法是什么?
- c - 如何在 C 语言中打印具有不同颜色的命令的标准输出和标准错误