Android tool для построения графа зависимостей классов

Менеджерам, тимлидам и Android-разработчикам посвящается.

Все мы много слышали о хорошей архитектуре, но почти никто так ее и не видел. Заинтересовавшись этим вопросом, я написал тулзу для визуализации метрики class coupling. Одной командой и используя только APK файл она строит граф зависимостей между классами проекта, который является мощным аргументом в любом обсуждении архитектурных вопросов.

Вот пример архитектуры со слабо связанными модулями:

А это классический Android-проект (далеко не самая запущенная форма):

Сразу становится понятно, что какие-либо изменения во втором проекте так или иначе затронут и другие фичи, а это значит, что уйдет больше времени на реализацию и тесты. С другой стороны, первый проект требует больше сопроводительного кода для корректного разделения фич, но это дает свои преимущества.

Использование
Склонируйте репо или скачайте последний релиз github.com/...​dependency-graph/releases
Запустите генерацию:

run.bat full\path\to\the\apk\app-release.apk com.example.test
Unix:
./run.sh full/path/to/the/apk/app-release.apk com.example.test
Где com.example.test — фильтр. Без него вы увидите много мусора, но всё же возможность его не использовать есть: просто передайте nofilter.
Дождитесь успешного окончания работы и откройте файл index.html в браузере.

Пользуйтесь, оставляйте фидбеки, создавайте issue на гитхабе — это поможет в развитии проекта и тогда, возможно, на следующем проекте вы вложитесь в эстимейт ;)

github.com/...​tsev/apk-dependency-graph

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Вышла версия 0.1.0! Что нового: поддержка мультидекс, возможность пропустить inner классы, скрипт сборки ant.
Я ищу contributors! Если у вас есть желание взять участие в разработке, вам сюда: github.com/…​bel:"contributors wanted

А оно может размер кругов рисовать в зависимости от количества связей?(чем больше зависимостей больше круг). Еще было бы неплохо(опция) просто зафиксировать плоскость и растягивать круги по своим кастомным группам).
Спасибо

Это супер, спасибо!

Молодец, прикольно получилось.

я использовал часть кода этого репозитория

Крутая штука, где ставить лайк?))

Классная вещь, спасибо!

Підписатись на коментарі