java - 如何使用 Java 和 Rhino 查找所有出现的 Javascript 函数

标签 java javascript rhino

我需要使用 Java 和 Rhino 搜索 Javascript 文件中出现的所有特定 Javascript 函数。我已成功使用访问者模式浏览所有出现的函数调用(请参见下面的代码),但我无法检索被调用函数的名称。正确的做法是什么?

package it.dss.javascriptParser;


import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;

import org.mozilla.javascript.Parser;
import org.mozilla.javascript.ast.AstNode;
import org.mozilla.javascript.ast.FunctionCall;
import org.mozilla.javascript.ast.NodeVisitor;

public class JavascriptParser {

public static void main(String[] args) throws IOException {
    class Printer implements NodeVisitor {

        public boolean visit(AstNode node) {
            if (node instanceof FunctionCall) {
                              // How do I get the name of the function being called?

            }
            return true;
        }
    }

    String file = "/dss2.js";
    Reader reader = new FileReader(file);
    try {
        AstNode node = new Parser().parse(reader, file, 1);
        node.visit(new Printer());
    } finally {
        reader.close();
    }
}
}

最佳答案

FunctionCall类代表函数的调用,其目标是函数名称(org.mozilla.javascript.ast.Name)。

要获取调用函数的名称,请使用:

AstNode target = ((FunctionCall) node).getTarget();
Name name = (Name) target;
System.out.println(name.getIdentifier());

关于java - 如何使用 Java 和 Rhino 查找所有出现的 Javascript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14775697/

相关文章:

java - Apache FTP 服务器 - 20 秒不活动后连接超时 - 无法检索目录列表

java - Java 中的动态继承

javascript - 在非常受限的环境中连接到 ODBC(有点挑战)

javascript - 在 Rhino 中使用 JSHint 的配置文件

java - 如何使用 htmlunit 代替 rhino 的替代 js/浏览器引擎?

java - 如何仅使用标签对 JSP 中的列表(运行时变量)进行排序?

java - 替换多次出现的字符

javascript - Array.prototype.find() 未定义

javascript - jQuery Widget Factory _trigger 实例

java - 如何将 Java 类中的静态方法导入到在 Rhino 中运行的 JS 中?甲骨文实现