Soot能否对不完整或存在轻微错误的代码执行程序分析?
Soot对存在错误的代码的分析支持说明
Soot的核心设计是面向合法可编译的Java字节码或Java源码执行程序分析,针对不同类型的代码错误,支持情况如下:
- 对于编译期可检测的语法/类型错误(比如你示例中声明为void的方法返回int值的问题,属于类型校验不通过的编译错误):默认情况下Soot无法直接分析这类代码。无论Soot是直接读取.class字节码,还是通过内置前端处理Java源码,都会因为代码不符合Java语言规范,无法生成合法的中间表示(如Jimple),直接抛出编译异常终止处理流程。
- 对于可正常编译通过,但存在运行时逻辑错误的代码(比如存在空指针风险、数组越界、业务逻辑错误等):这类代码只要能生成合法的字节码,Soot完全支持对其执行各类程序分析,逻辑层面的bug不会影响Soot的中间代码生成和分析流程。
如果确实需要对不完整、存在编译错误的代码做分析,可先手动修复这类基础编译错误,让代码可以正常编译为字节码后再提交给Soot处理。
内容的提问来源于stack exchange,提问作者Exploring
相关产品推荐
相关产品推荐

