javascript
  • java
  • node.js
  • babeljs
  • abstract-syntax-tree
  • 2017-10-25 24 views 0 likes 
    0

    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: [] } 
    

    のように見えます。どんな助けもありがとうございます。

    答えて

    2

    ASTは別のJSONオブジェクトです。試してみてくださいjsonpath。条件node=="MethodDeclaration"にフィルタリングするだけで、すべてのメソッドを抽出するために

    npm install jsonpath 
    

    var jp = require('jsonpath'); 
    var methods = jp.query(ast, '$.types..[?(@.node=="MethodDeclaration")]'); 
    console.log(methods); 
    

    は、より多くのJSONパス構文についてhereを参照してください。

    関連する問題