SHARE
TWEET

Опрелеление графа связности монолита

a guest Feb 27th, 2019 160 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Опрелеление графа связности монолита
  2. Скомпилировать исходные файлы :avito модуля: `./gradlew :avito:assembleDebug` (скорее всего можно использовать таску которая только компилирует)
  3. Запустить утилиту для анализа зависимостей jdeps на папке с .class файлами: `jdeps -dotoutput dots -R -regex "com\.avito\.android\.module\..*" avito/build/tmp/kotlin-classes/debug/com/avito/android/module/`
  4. Сгруппировать зависимости: `perl -pe "s/(com\.avito\.android\.module\.\w+)(\.\w+)*/\1/g" dots/module.dot > dots/module.1.dot`
  5. Удалить мешающие данные: `perl -pe "s/ \(module\)| \(not found\)//g" dots/module.1.dot > dots/module.2.dot`
  6. Нормализовать строки: `perl -pe "s/ *-> */ -> /g" dots/module.2.dot > dots/module.3.dot`
  7. Подготовка файла для сбора статистики `perl -ne 'print $t if $.>web3 ; $t=$_' dots/module.3.dot | sort | uniq > dots/module.6.txt` (удаляет 1, 2, и последнюю строки, сортирует зависимости и удаляет дубликаты)
  8. Количество зависимых пакетов: `grep -oP "(\"com\.avito\.android\.module\.\w+)\"(?=\s->)" dots/module.6.txt | sort | uniq -c | sort -r > dots/dependencies_count.txt`
  9. Количество зависящих: `grep -oP "(?<=-> )(\"com\.avito\.android\.module\.\w+)\"(?=;)" dots/module.6.txt | sort | uniq -c | sort -r > dots/reverse_dependencies_count.txt`
  10. Восстановить граф зависимостей: `(echo "digraph \"module\" {"; cat dots/module.6.txt; echo "}") > dots/module.6.dot`
  11. Построить граф зависимостей `dot -T png -O dots/module.6.dot`
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top