axelson

axelson

Scenic Core Team

DepViz - A visual tool to understand inter-file dependencies

Hi everyone :wave:

I’ve always wanted a tool to better visually understand inter-file dependencies in Elixir projects to help me reduce compilation dependencies (and hence, reduce recompilation times), but none existed so I wrote my own! As part of my Code BEAM BR talk I’d like to release the tool.

Try it online at: https://depviz.jasonaxelson.com/

Or view the code:
https://github.com/axelson/dep_viz

This is what it looks like when you view a project:

It can highlight dependencies of a given file:

It can also highlight the files that depend on the given file at compile time:

To better understand how to use the tool, watching parts of my Code BEAM BR will likely be helpful:
https://www.codebeambr.com/video/12

Who is it for?

Any elixir developer that wants to better understand (and hopefully reduce!) the inter-file dependencies of their project.

Acknowledgements

I’d like to thank my wife for helping me with the design, along with @rodrigues and members of the Elixir Hawaii community for providing valuable feedback during the initial design and development.

I hope this tool can prove helpful to people!

Most Liked

josevalim

josevalim

Creator of Elixir

This is awesome! Great job @axelson and everyone involved!

axelson

axelson

Scenic Core Team

My Code BEAM BR talk about DepViz was posted semi-recently. In it I give an overview of DepViz and talk about what causes applications to have lots of compile-time dependencies:

https://www.codebeambr.com/video/12

FYI, the talk is in English :blush:

tomekowal

tomekowal

This looks fantastic!

Did you see the talk by Rafał Studnicki about similar topic? https://www.youtube.com/watch?v=LkGx33Suzsk He does a very similar thing but uses different visualization method.
The idea is that all files are on a big circle sorted by module name. This makes closely connected files appear together (because they share the same prefix MyApp.MyContext…).

This also means that places or files do not change that much when you add new ones.

I wonder if it would be possible to use your tool which has more functionalities but with visualisation method proposed by him?

Where Next?

Popular in Discussions Top

CharlesO
Erlang :list.nth simple, but 1 - based nth(1, [H|_]) -> H; nth(N, [_|T]) when N > 1 -> nth(N - 1, T). Elixir Enum.at … coo...
New
AstonJ
I’ve just started the Phoenix part of the utterly brilliant online course by @pragdave. On generating the Phoenix app he uses the --no-ec...
New
und0ck3d
Hello everyone! A few days ago I’ve created a topic here about how people were creating CMSs with Elixir and Phoenix. I’ve been studying...
New
pillaiindu
In django there is a cache framework backed by memcached. Rails also puts a lot of emphasis on caching, and even the idea of russian-doll...
New
AstonJ
If so I (and hopefully others!) might have some tips for you :slight_smile: But first, please say which area you’re finding most challen...
New
gausby
I asked this very same question on twitter and got some interesting feedback, but I thought it would be a good question to ask here as we...
1207 40042 209
New
sergio
Kind of like when jquery came out, it was super necessary. Existing drag and drop libraries have a bunch of baggage to support old browse...
New

Other popular topics Top

KronicDeth
Elixir plugin for JetBrain’s IntelliJ Platform (including Rubymine) This is a plugin that adds support for Elixir to JetBrains IntelliJ...
289 36654 110
New
aadeshere1
I have a another noob question about loop. Since elixir is immutable, while loop is not directly possible. total = 10 while total != 0 ...
New
chrismccord
Phoenix 1.4.0 released Phoenix 1.4 is out! This release ships with exciting new features, most notably with HTTP2 support, improved deve...
688 31494 112
New
WestKeys
Currently suffering from paralysis by [HTTP client] analysis. This is rather unusual in Elixirland as there tends to be consensus on the ...
New
romenigld
I am trying to run a deploy with docker and I successfully runned with this command: docker build -t romenigld/blog-prod . but when I t...
New
sergio
Kind of like when jquery came out, it was super necessary. Existing drag and drop libraries have a bunch of baggage to support old browse...
New

We're in Beta

About us Mission Statement