我想搜索某个注释的所有出现,以选择分析区域。
以nullck分析为例;我想找到所有的@NotNull
注释,并从包含声明为@NotNull
的变量的方法开始运行nullck分析。
有可能用烟灰做这件事吗?Jimple似乎不保留注释信息。
或者,编写一个注释预处理器,围绕用@NotNull
注释的局部变量生成特殊标记,并在Soot运行时匹配这些标记,这是一个好主意吗?
变量信息似乎不会暴露给编译器以外的任何人;即使在.class
中也没有,即使是注释处理器也没有,甚至SOURCE级别的保留也没有。
所以答案是,在当前的java中,我们不可能将其传递给烟灰。
对于不在局部变量上的注释,如方法和参数,它们位于soot.tagkit.Host.getTags()
下。然而,有必要使用jap
而不是jtp
。