Spent a bit of time this weekend adapting a 3d graph visualizer to render JGF files and am working on a tool to turn abstract syntax trees into JGF files. This way I can view code as a graph and work on tools to manipulate it at the graph layer instead of just text. Gonna work on better labelling and display next week and then work on connecting between source files and highlighting node types / quick searching them

@mauve I built a tool to visualize call graphs in D3, but there was just so much noise... But similarly, a feature I had originally envisioned was program slicing.

Follow

@j3rn Oo may I get a link? I was thinking I'd have each file rendered on a "layer" in 3d with calls linked between files.

@mauve I went looking, but it appears that I didn't preserve the code. It wasn't much, just a D3 force-directed graph. I've got a video, but it's too big for me to upload here.

A related thing that I was working on was Viz (github.com/J3RN/viz) which scans an Elixir codebase and generates a GraphViz DOT file (or JSON, or CSV), which you can then put in Vizi (pending better name, github.com/J3RN/vizi), which is just an HTML+JS wrapper around GraphViz compiled to WASM.

@mauve Viz does nesting of things based on namespace hierarchy, like what you mentioned. The biggest drawback to this whole approach is that GraphViz doesn't (AFAIK) have the concept of dynamically adding/removing nodes, and so it would totally re-render for each slice you took, potentially moving things all over the place.

Ideally something like D3 would be able to handle this, but I think I was overwhelmed trying to get D3 to do a bunch of fancy things.

Sign in to participate in the conversation
Mauvestodon

Escape ship from centralized social media run by Mauve.