1
0

More than 5 years have passed since last update.

javaのpublicメソッドを抽出してみる

Posted at

仕事でjavaのpublicメソッドを抽出するプログラムが必要になりそうなので、書いてみた
Java7のNewIOとJava8のStream関数を使って実装してみる

JavaFileAnalyser.java

package triple;

import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;

public class JavaFileAnalyser {
    private static Pattern PATTERN ;
    public static void main(String args[]) throws Exception{
        PATTERN = Pattern.compile(".*public(.*)(?:\\s|\\t)(.*)\\((.*)\\).*");

        List<String> list = Files.newBufferedReader(
                Paths.get("C:/Java/jdk1.8.0_102/src/javax/script/AbstractScriptEngine.java"),
                Charset.forName("UTF-8"))
        .lines()
        .filter(JavaFileAnalyser::isMethod)
        .map(JavaFileAnalyser::parse)
        .collect(Collectors.toList());

        Files.write(Paths.get("C:/Users/****/workspace/FileOpe/result/result.txt"), 
                list, 
                Charset.forName("UTF8"),
                StandardOpenOption.CREATE);
    }

    public static boolean isMethod(String str){
        if(PATTERN.matcher(str).find()){
            return true;
        }
        return false;
    }

    public static String parse(String str){
        Matcher m = PATTERN.matcher(str); 
        if(m.find()){
            return String.format("戻り値のシグニチャ : %s メソッド名:%s 引数 :%s",m.group(1),m.group(2),m.group(3));
        }
        return "";

    }

}
戻り値のシグニチャ :  メソッド名:AbstractScriptEngine 引数 :
戻り値のシグニチャ :   AbstractScriptEngine メソッド名: 引数 :Bindings n
戻り値のシグニチャ :  void メソッド名:setContext 引数 :ScriptContext ctxt
戻り値のシグニチャ :  ScriptContext メソッド名:getContext 引数 :
戻り値のシグニチャ :  Bindings メソッド名:getBindings 引数 :int scope
戻り値のシグニチャ :  void メソッド名:setBindings 引数 :Bindings bindings, int scope
戻り値のシグニチャ :  void メソッド名:put 引数 :String key, Object value
戻り値のシグニチャ :  Object メソッド名:get 引数 :String key
戻り値のシグニチャ :  Object メソッド名:eval 引数 :Reader reader, Bindings bindings 
戻り値のシグニチャ :  Object メソッド名:eval 引数 :String script, Bindings bindings
戻り値のシグニチャ :  Object メソッド名:eval 引数 :Reader reader
戻り値のシグニチャ :  Object メソッド名:eval 引数 :String script

コンストラクタの情報も取得してしまっているようだが、細かいことは気にしないことにする(おい)

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0