Аналіз структури проектів для Flow.
ОС: Windows, Linux.
Виконайте наступні дії:
- Встановлюємо Erlang OTP: http://www.erlang.org/downloads (спробуйте запустити escript, має видати в консоль - escript: Missing filename).
- Встановлюємо http://www.graphviz.org/Download.php і перевіряємо чи виконується dot.exe -v (Windows) або dot -v (Linux).
- Скачуємо zip архів і копіюємо вміст в будь-яке зручне місце.
- Налаштовуємо на неї зручний alias в WAMP сервері.
- Запускаємо потрібною командою за допомогою escript importio з даної папки.
- Переглядаємо результати на сервері: http://127.0.0.1/importio/ + tree.html або graph.html.
- Або переглядаємо graph.jpeg файл в папці import.io\data побудований утилітою dot.
Якщо коротко, то опції в нас наступні: Повні назви:
- --root_folders :string — список кореневих папок через кому, наприклад - "C:\root_folder1, C:\folder\root_folder2"
- --file :string — назва файлу для аналізу - myproject/reports/main,
- --inner_search :boolean — проводити аналіз імпортів тільки в папці кореневого файлу, для прикладу згори це — myproject/reports/. Корисна опція для початку аналіза та оптимізації свого проекта.
- --graph :boolean — побудувати дані у вигляді графа,
- --tree :boolean — побудувати дані у вигляді дерева,
- --dot :boolean — побудувати дані у вигляді графа з ефективним layout'ом,
- --depth :integer — максимальна глибина проходу по імпортам,
- --cleaned_level :integer — максимальна глибина видалення зайвих імпортів,
- --cleanup :boolean — увімкнути авто-видалення зайвих імпортів,
Відповідні короткі назви (aliases):
- -rf для --root_folders,
- -f для --file,
- -oi для --inner_search,
- -dp для --depth,
- -cl для --cleaned_level;
- Очищення зайвих імпортів до глибини 3:
escript importio -rf "C:\flowapps, C:\flow\lib" -f myproject/reports/main -dp 5 --cleanup -cl 3
- Побудова дерева:
escript importio -rf "C:\sports, C:\flow\lib, C:\material" -f myproject/reports/main -dp 5 --tree
- Побудова інтерактивного графа:
escript importio -rf "C:\flowapps, C:\flow\lib" -f adminpanel/main -dp 6 -oi --graph
- Побудова графа імпортів з ефективним layout'ом в .jpeg:
escript importio -rf "C:\flowapps, C:\flow\lib" -f adminpanel/main -dp 6 --dot
Головна ціль програми — це аналіз структури проекту по імпортам в ньому. Є декілька варіантів дослідження:
- Намалювати інтерактивний граф зв'язків (для невеликих проектів):
- Намалювати інтерактивне дерево (для малих та середніх проектів, для великих - ефективне відображення регулюється глибиною проходу по папкам):
- Червоним в ньому позначені “важкі” модулі, імпорти в яких потребують впорядкування та декомпозування — їх просто занадто багато!
- Жовтим позначені ті імпорти, які можна видалити, бо вони вже десь зустрічаються глибше (вручну або автоматично за допомогою параметра —cleanup). При наведені на жовту вершину ви побачите попап з інформацією де саме цей імпорт повторюється.
- Синім — модулі, які мають імпорти.
- Білим\Світложовтим — кінцеві модулі, листя нашого дерева.
- Ефективно намалювати граф зв'язків і зберегти рез-тат в jpeg файл для перегляду: Якби це парадоксально не здавалося, судячи з картинки вище, але це дуже ефективний спосіб оцінити весь проект на око. Відчуваєш себе географом\дослідником, що розглядає карту :) Дуже чітко видно перевантажені модулі і на що потрібно звернути увагу.