Skip to content

Instantly share code, notes, and snippets.

@hackugyo
Last active November 19, 2015 03:22
Show Gist options
  • Select an option

  • Save hackugyo/1dc703f8dd9924190d44 to your computer and use it in GitHub Desktop.

Select an option

Save hackugyo/1dc703f8dd9924190d44 to your computer and use it in GitHub Desktop.
[rexdep](https://github.com/itchyny/rexdep) の使いかたがわからなかったのでJavaで試した

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

usage

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

or

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

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

package com.example;
interface IManager {
}
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;
import com.example.IManager;
public class MyManager implements IManager {
private MyManager() {
}
}
#!/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() {
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment