Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Опрелеление графа связности монолита
- Скомпилировать исходные файлы :avito модуля: `./gradlew :avito:assembleDebug` (скорее всего можно использовать таску которая только компилирует)
- Запустить утилиту для анализа зависимостей jdeps на папке с .class файлами: `jdeps -dotoutput dots -R -regex "com\.avito\.android\.module\..*" avito/build/tmp/kotlin-classes/debug/com/avito/android/module/`
- Сгруппировать зависимости: `perl -pe "s/(com\.avito\.android\.module\.\w+)(\.\w+)*/\1/g" dots/module.dot > dots/module.1.dot`
- Удалить мешающие данные: `perl -pe "s/ \(module\)| \(not found\)//g" dots/module.1.dot > dots/module.2.dot`
- Нормализовать строки: `perl -pe "s/ *-> */ -> /g" dots/module.2.dot > dots/module.3.dot`
- Подготовка файла для сбора статистики `perl -ne 'print $t if $.>web3 ; $t=$_' dots/module.3.dot | sort | uniq > dots/module.6.txt` (удаляет 1, 2, и последнюю строки, сортирует зависимости и удаляет дубликаты)
- Количество зависимых пакетов: `grep -oP "(\"com\.avito\.android\.module\.\w+)\"(?=\s->)" dots/module.6.txt | sort | uniq -c | sort -r > dots/dependencies_count.txt`
- Количество зависящих: `grep -oP "(?<=-> )(\"com\.avito\.android\.module\.\w+)\"(?=;)" dots/module.6.txt | sort | uniq -c | sort -r > dots/reverse_dependencies_count.txt`
- Восстановить граф зависимостей: `(echo "digraph \"module\" {"; cat dots/module.6.txt; echo "}") > dots/module.6.dot`
- Построить граф зависимостей `dot -T png -O dots/module.6.dot`
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement