aviatorscript icon indicating copy to clipboard operation
aviatorscript copied to clipboard

请教个问题:Expression.getVariableNames方法

Open andy-yanggu opened this issue 2 years ago • 5 comments

现在我自定义了一个函数: get函数。 在Aviator中这样使用,get(today_sum, -1),getVariableNames方法能返回today_sum, -1这个值能有办法返回吗?

andy-yanggu avatar Dec 13 '22 07:12 andy-yanggu

基于目前的api不能。 但是有办法可以拿到,通过自定义Visitor,你的需求visitField结合visitMethod即可实现,我之前项目就是这么实现的,解析所有用到的函数以及函数入参

hillfly avatar Jan 12 '23 07:01 hillfly

我试了5.3.3中,用compile.getVariableFullNames();可以获取到自定义函数的参数名称,但是当脚本存在use java.util.*;时,会认为java.util 和 * 也是参数名

MadaraFsl avatar Jan 13 '23 06:01 MadaraFsl

基于目前的api不能。 但是有办法可以拿到,通过自定义Visitor,你的需求visitField结合visitMethod即可实现,我之前项目就是这么实现的,解析所有用到的函数以及函数入参

请教下怎么获得expression的bytecode呢?classReader读不到

Entanglement0711 avatar Jan 28 '23 09:01 Entanglement0711

基于目前的api不能。 但是有办法可以拿到,通过自定义Visitor,你的需求visitField结合visitMethod即可实现,我之前项目就是这么实现的,解析所有用到的函数以及函数入参

大佬,能给个代码示例吗?官方文档中没有Visitor示例

andy-yanggu avatar Feb 08 '23 07:02 andy-yanggu

我试了5.3.3中,用compile.getVariableFullNames();可以获取到自定义函数的参数名称,但是当脚本存在use java.util.*;时,会认为java.util 和 * 也是参数名

你好,这个问题,你们后面解决了吗

andy-yanggu avatar Apr 07 '23 09:04 andy-yanggu