Android tool для построения графа зависимостей классов
Менеджерам, тимлидам и Android-разработчикам посвящается.
Все мы много слышали о хорошей архитектуре, но почти никто так ее и не видел. Заинтересовавшись этим вопросом, я написал тулзу для визуализации метрики class coupling. Одной командой и используя только APK файл она строит граф зависимостей между классами проекта, который является мощным аргументом в любом обсуждении архитектурных вопросов.
Вот пример архитектуры со слабо связанными модулями:
А это классический Android-проект (далеко не самая запущенная форма):
Сразу становится понятно, что какие-либо изменения во втором проекте так или иначе затронут и другие фичи, а это значит, что уйдет больше времени на реализацию и тесты. С другой стороны, первый проект требует больше сопроводительного кода для корректного разделения фич, но это дает свои преимущества.
Использование
Склонируйте репо или скачайте последний релиз github.com/...dependency-graph/releases
Запустите генерацию:
run.bat full\path\to\the\apk\app-release.apk com.example.testUnix:
./run.sh full/path/to/the/apk/app-release.apk com.example.testГде com.example.test — фильтр. Без него вы увидите много мусора, но всё же возможность его не использовать есть: просто передайте nofilter.
Дождитесь успешного окончания работы и откройте файл index.html в браузере.
Пользуйтесь, оставляйте фидбеки, создавайте issue на гитхабе — это поможет в развитии проекта и тогда, возможно, на следующем проекте вы вложитесь в эстимейт ;)
12 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарівВышла версия 0.1.0! Что нового: поддержка мультидекс, возможность пропустить inner классы, скрипт сборки ant.
Я ищу contributors! Если у вас есть желание взять участие в разработке, вам сюда: github.com/…bel:"contributors wanted
А оно может размер кругов рисовать в зависимости от количества связей?(чем больше зависимостей больше круг). Еще было бы неплохо(опция) просто зафиксировать плоскость и растягивать круги по своим кастомным группам).
Спасибо
Это супер, спасибо!
Good job, teammate :)
Молодец, прикольно получилось.
github.com/... bjc-dependency-visualizer
raw.githubusercontent.com/... ples/some-big-project.png
Вы не общую либу там случайно используете?
www.youtube.com/watch?v=5iFnzr73XXk
d3 вроде бы
я использовал часть кода этого репозитория
Крутая штука, где ставить лайк?))
лучше стар на гитхабе :)
Классная вещь, спасибо!