hackugyo
11/19/2015 - 2:31 AM

[rexdep](https://github.com/itchyny/rexdep) の使いかたがわからなかったのでJavaで試した

rexdep の使いかたがわからなかったのでJavaで試した

#!/usr/bin/env sh
(
    set -eu -o pipefail; \
    # $1があればそれをパッケージ名にする \
    package_name=${1:-}; \
    find ./ -name "*.java" | \
        xargs -J % \
              rexdep --pattern "^import ${package_name}.*\.(\S+);" \
              --format dot % | \
        sed 's/\.java//g' \
)
package com.example;

import com.example.IManager;

public class YourManager implements IManager {

    private YourManager() {
    }
}
package com.example;

import com.example.IManager;

public class MyManager implements IManager {

    private MyManager() {
    }
}
package com.example;

import com.example.MyManager;
import com.example.YourManager;
import android.app.Activity;

public class MyActivity extends Activity {
    private MyManager mMyManager;
    private YourManager mYourManager;

    private MyActivity() {
    }
}
package com.example;

interface IManager {

}

rexdep の使いかたがわからなかったのでJavaで試した.

usage

$ ./rexdep_java.sh | dot -Tpng -o test.png

or

$ ./rexdep_java.sh com.example | dot -Tpng -o test_pretty.png

システムのimportの依存関係がぜんぶとれてしまうとコード解析の邪魔なので,パッケージ名を指定できるようにした.