是否可以使用findbugs的代码分析检索在java中的函数调用中传递的变量的名称

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

我想要的是我想要反击的是“网址”而不是“abc”?是否有任何可能的方法来检索传递的变量的名称,而不是使用任何类型的静态代码分析它的值?

java android findbugs
1个回答
1
投票

没有。

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

有时,变量名称会保存为“本地”,但这不是您可以依赖的东西,我相信即使它确实存在也无法检索它。

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

String url = "abc";

在Smali会有以下情况:

const-string/jumbo v0, "abc"

没有要检索的变量名称的迹象。

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

String url = "abc";

编译时丢失其变量名称。所以由反编译器给它一个。它通常会选择

String string = "abc";

因为那是最简单,最易读的选择。

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