是否有可能使用findbug的代码分析来检索Java函数调用中传递的变量的名称

问题描述 投票:0回答:1
url = "abc";  Intent intent = Intent.parseUri(url,other_variable);

我想要的是检索“ url”而不是“ abc”。

使用任何类型的静态代码分析,是否有可能检索传递的变量名称而不是其值的方法?

java android findbugs
1个回答
1
投票

编号

在大多数情况下,Java在编译时不会保存局部变量名称。它们仅被视为寄存器:v0 = "abc"v1 = new Something()等。

有时,变量名另存为“本地”,但这不是您可以指望的东西,即使它确实存在,我也不相信您可以检索到它。

我是说这是在Smali做了大量编码的人。虽然不是汇编语言或二进制语言,但它比Java的级别低,并且表明名称不是保守的。例如,以下Java:

String url = "abc";

在斯马里语中将是以下内容:

const-string/jumbo v0, "abc"

没有要检索的变量名的符号。

反编译为Java时可以再次显示。

String url = "abc";

当编译时丢失其变量名。因此,由反编译器决定给它一个。通常会选择

String string = "abc";

因为这是最简单,最易读的选项。

© www.soinside.com 2019 - 2024. All rights reserved.