[HN Gopher] Code2flow: Pretty good call graphs for dynamic langu...
___________________________________________________________________
Code2flow: Pretty good call graphs for dynamic languages
Author : nothrowaways
Score : 82 points
Date : 2021-12-09 10:55 UTC (2 days ago)
(HTM) web link (github.com)
(TXT) w3m dump (github.com)
| ashton314 wrote:
| Under the "Known limitations" section, the author mentions that
| anonymous functions get skipped. That might be a dealbreaker for
| some.
|
| Since this program just walks the statically apparent callgraph,
| you'll get an under-approximation of the behavior of your
| program. If you'd like an _over_ -approximation, something like
| control-flow analysis can handle cases with anonymous functions.
| [^1] [^2] [^3] There are still some limitations, but CFA is
| really powerful.
|
| (Anyone curious can contact me (see my blog) if you want more
| information on CFA.)
|
| [^1]: https://lambdaland.org/posts/2021-05-20_cfa/
|
| [^2]: https://en.wikipedia.org/wiki/Control_flow_analysis
|
| [^3]: https://www.ccs.neu.edu/home/shivers/papers/pldi88.pdf
| woodruffw wrote:
| Very cool! It always makes me happy to see people develop tools
| that _are_ useful without tying themselves in knots over the
| general case (total callgraph generation).
|
| It's worth noting that it's impossible in the general case to
| generate a perfect callgraph for _static_ languages as well.
| Function pointers in C are the obvious example, but more
| generally anything that converts control-flow into data-flow
| (like a dispatch table) causes the same problem.
| [deleted]
| feanaro wrote:
| Isn't this something already accomplished by Sourcetrail (a FOSS
| tool!) with _much_ better UX? It 's unfortunate that it is now
| dying.
| scottrogowski wrote:
| The two are very similar. I wrote the first version of this
| almost 10 years ago and only became aware of the existence of
| Sourcetrail while doing the rewrite a few months back.
|
| On the surface - there is a difference in languages.
| Sourcetrail explicitly supports C/C++/Java/Python while
| Code2flow supports Python/JS/PHP/Ruby.
|
| I would love to give code2flow the capability of Sourcetrail
| but would need to feel very good about it making money before I
| devoted that time to it.
| zadwang wrote:
| This actually should be the way codes are written. This is how we
| reason about codes in our minds.
| emteycz wrote:
| Not really... I built a block-based IDE like that which
| compiled to TypeScript/React (you could switch to writing code
| and back to blocks at any time)... And I just never used it,
| writing code was much faster, even though it supported custom
| "macro" blocks and other new ways of making programs.
| nitrogen wrote:
| It depends on what kind of problems you're solving. System
| integrations and ETL-type stuff where it's mostly data
| transformation and not too much logic are great for visual
| dataflow programming. It's a lot easier if you can have code-
| within-blocks and blocks-within-code, too.
|
| Also, I suspect there's going to be a correlation between a
| preference for spatial vs. lexical reasoning and a preference
| for visual vs. textual development.
| emteycz wrote:
| Yeah I agree, I originally built that block-code tool for
| data transformations and in that domain it is used in
| practice and very useful. But it's just
| configuration/queries, no unrestricted coding (the users
| were shooting their feet too much).
| hutzlibu wrote:
| How about writing code and then looking at it through blocks?
|
| That might be superior, if done right.
| scottrogowski wrote:
| Wow. Seeing your open source project while scrolling through
| hacker news is something that really brightens your day. I'm
| happy to answer any questions people have.
| soldeace wrote:
| This project is AMAZING. Earlier this week I had the exact same
| idea of a project while disentangling a bowl of spagetthi code.
| I'm glad I've seen it here today so I didn't have to reinvent
| the wheel. Also, I'm impressed by the quality of the
| documentation. It's pure eyecandy. Kudos!
| habitue wrote:
| I could have used something like this numerous times whenearning
| a new codebase (or a new part of a big codebase). I wonder why
| this tooling isn't more popular.
|
| The next thing that would be great is hyperlinks to the source
| code from each node in the graph
| ReleaseCandidat wrote:
| Well, there is Understand https://www.scitools.com/ Source
| Insight https://www.sourceinsight.com/ Imagix 4D
| https://www.imagix.com/
___________________________________________________________________
(page generated 2021-12-11 23:00 UTC)