nodeJsを使用して、特定のJavaソースコードのすべてのメソッドを返すモジュールを作成しようとしています。これまでのところ、 "java-parser"モジュールを使用して構築されたASTツリーを取得できますが、メソッドをフィルタリングするためにそれをトラバースする必要があります。JavaScript:Javaソースコードを解析してメソッドを抽出する
code = ' public class CallingMethodsInSameClass
{
public static void main(String[] args) {
printOne();
printOne();
printTwo();
}
public static void printOne() {
System.out.println("Hello World");
}
public static void printTwo() {
printOne();
printOne();
} }';
var javaParser = require("java-parser");
var traverse = require("babel-traverse").default;
var methodsList = [];
traverse(ast, {
enter(path){
//do extraction
}
}
私はバベル-トラバースはJsのためのものであることを理解するが、私はそう、私は方法をフィルタリングすることができトラバースする方法を求めていました。 ログインした場合、私は
throw new Error(messages.get("traverseNeedsParent", parent.type));
^
Error: You must pass a scope and parentPath unless traversing a
Program/File. Instead of that you tried to traverse a undefined node
without passing scope and parentPath.
ASTをこのエラーを取得していますが方法が種類以内に "MethodDeclaration" によって識別されます
{ node: 'CompilationUnit',
types:
[ { node: 'TypeDeclaration',
name: [Object],
superInterfaceTypes: [],
superclassType: null,
bodyDeclarations: [Array],
typeParameters: [],
interface: false,
modifiers: [Array] } ],
package: null,
imports: [] }
のように見えます。どんな助けもありがとうございます。