[HN Gopher] Codegraph - static code analyzator / code diagramer
___________________________________________________________________
Codegraph - static code analyzator / code diagramer
Author : sargstuff
Score : 68 points
Date : 2023-04-17 17:02 UTC (5 hours ago)
(HTM) web link (github.com)
(TXT) w3m dump (github.com)
| marcodiego wrote:
| Unrelated, but curious: when "analyzator" should be used instead
| of "analyzer"?
| chrisweekly wrote:
| Never. "Analyzator" is not a word.
|
| The HN title matches the repo's README, which was authored by
| someone whose English language skills are questionable.
| xnuinside wrote:
| I was really surprised to saw a lot of stars on one of my oldest
| repos )) it was just for my purposes and I didn't continue work
| on it because thought that it is not needed at all ))
| esafak wrote:
| That graph is illegible. I would remove most of the labels by
| default and show them on hover.
| UncleMeat wrote:
| Even doing that won't help.
|
| Like, a reasonably complex program is going to have a call
| graph with tens or even hundreds of thousands of nodes.
| Graphviz won't save you. Collapsing sccs won't save you. It
| won't actually be useful to navigate.
| esafak wrote:
| They could collapse nodes into clusters, and reveal them on
| zoom, etc.
|
| This needs more sophistication to be useful is what I'm
| saying.
| prettyStandard wrote:
| Agree but maybe only show labels for the largest modules and
| functions and also scale node size relative to function and
| module size.
| jschrf wrote:
| Nice work!
|
| Other posts in this thread are touching on it, but graph layout
| and layer segmentations are where you could improve.
|
| Screen real-estate is the biggest challenge when visualizing
| large amounts of code.
|
| Similar to maps show different detail levels based on aspect
| ratio and zoom, you can decompose your "features" (mapping
| terminology) based on level, i.e.
| packages->modules->functions->code
|
| OP, have you ever used Gephi? I used to build static analysis
| tools for viz of large-scale codebases. Taking a bit of time to
| export analysis data into a Gephi format (GEXF in my case) really
| helped.
|
| In Gephi, you can play around with different layout algorithms
| (peep the plugins). This may help you select a layout algo or
| combination thereof to help render tons of data in a human-
| friendly form.
| theK wrote:
| Python only?
|
| Cool tool nonetheless, have built similar things to visualize
| code architecture and create doc artifacts in CI, usually the
| biggest challenge is to scope the pieces that will be included
| and what layout algo to use, maybe a feature to implement?
| adamc wrote:
| I haven't looked very hard, but `pip install codegraph` didn't
| result in a codegraph command anywhere. (This was macos, using a
| Python 3.8 venv.)
|
| Digging around a bit found a 'cg' command, which seems to be
| codegraph (based on the --help output). Didn't show anything
| interesting for a Django app, though... I'm guessing it couldn't
| really follow what manage.py was doing?
|
| Anyhow, if 'cg' is the command, might want to update the docs.
| sargstuff wrote:
| README for codequery[0]outlines an overview of tool set to go
| from source code to visualization. (although, not as a generate
| live updates per editor changes)
|
| [0] : https://github.com/ruben2020/codequery
| MoreQARespect wrote:
| [dead]
| sasas wrote:
| Can anyone recommend something similar for Java / Smali ?
| Specific use case is reverse engineering Android application with
| partially obsufcated code.
|
| Current approach is following "xrefs" in JADX and hooking methods
| with dynamic instrumentation with Frida (displaying backtraces
| etc). Got to be a quicker way while chipping away renaming
| classes and methods and mapping out source/sinks.
| cmcconomy wrote:
| Although it's discontinued, SourceTrail is still great for this
| purpose.
| Nezteb wrote:
| Shortly before this was posted, I asked for a similar thing!
| https://news.ycombinator.com/item?id=35603022
|
| Although in my case it'd ideally be language-agnostic and hook
| into LSP so that I can click on nodes and jump to various
| files/modules/functions.
|
| Still a cool project though!
| kevin_thibedeau wrote:
| Radare2
|
| https://www.radare.org/r/
| sargstuff wrote:
| emacs. LSP (under editor such as emacs[0]) provides the
| context/way for being able to define a specific language parse
| specifics about where to add/define emacs hooks/jump points for
| a given language nodes/files/modules/functions)
|
| [0] : https://www.masteringemacs.org/article/tree-sitter-
| complicat...
| anigbrowl wrote:
| Good concept. visualization is poor. Force Atlas is really not
| that great for structural analysis, and nodes need to be weighted
| by degree among other more code-specific factors. Consider
| bringing the code graph into NetworkX or some similar library and
| using graphML to leverage existing visualization solutions rather
| than reinventing the wheel.
___________________________________________________________________
(page generated 2023-04-17 23:00 UTC)