繁体   English   中英

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

[英]Is it possible to retrieve the name of the variable that is passed in a function call in java using code analysis of findbugs

url = "abc";  Intent intent = Intent.parseUri(url,other_variable);

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

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

不。

大多数情况下,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";

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM