mirror of
https://github.com/Aider-AI/aider.git
synced 2025-05-29 16:54:59 +00:00
wip
This commit is contained in:
parent
a1b5206345
commit
407e47b6ed
1 changed files with 30 additions and 11 deletions
|
@ -171,6 +171,9 @@ class RepoMap:
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
import random
|
||||||
|
import graphviz
|
||||||
|
|
||||||
fnames = sys.argv[1:]
|
fnames = sys.argv[1:]
|
||||||
|
|
||||||
rm = RepoMap()
|
rm = RepoMap()
|
||||||
|
@ -180,29 +183,33 @@ if __name__ == "__main__":
|
||||||
defines = defaultdict(set)
|
defines = defaultdict(set)
|
||||||
references = defaultdict(set)
|
references = defaultdict(set)
|
||||||
|
|
||||||
|
root = os.path.commonpath(fnames)
|
||||||
|
|
||||||
|
show_fnames = set()
|
||||||
for fname in fnames:
|
for fname in fnames:
|
||||||
|
show_fname = os.path.relpath(fname, root)
|
||||||
|
show_fnames.add(show_fname)
|
||||||
|
|
||||||
data = rm.run_ctags(fname)
|
data = rm.run_ctags(fname)
|
||||||
|
|
||||||
for tag in data:
|
for tag in data:
|
||||||
ident = tag["name"]
|
ident = tag["name"]
|
||||||
defines[ident].add(fname)
|
defines[ident].add(show_fname)
|
||||||
dump("def", fname, ident)
|
# dump("def", fname, ident)
|
||||||
|
|
||||||
idents = utils.get_name_identifiers(fname)
|
idents = utils.get_name_identifiers(fname)
|
||||||
for ident in idents:
|
for ident in idents:
|
||||||
dump("ref", fname, ident)
|
# dump("ref", fname, ident)
|
||||||
references[ident].add(fname)
|
references[ident].add(show_fname)
|
||||||
|
|
||||||
idents = set(defines.keys()).intersection(set(references.keys()))
|
idents = set(defines.keys()).intersection(set(references.keys()))
|
||||||
|
|
||||||
import graphviz
|
|
||||||
|
|
||||||
dot = graphviz.Digraph()
|
dot = graphviz.Digraph()
|
||||||
for fname in fnames:
|
for fname in show_fnames:
|
||||||
dot.node(fname)
|
dot.node(fname)
|
||||||
|
|
||||||
|
edges = defaultdict(int)
|
||||||
for ident in idents:
|
for ident in idents:
|
||||||
dump(ident)
|
|
||||||
for refs in references[ident]:
|
for refs in references[ident]:
|
||||||
defs = defines[ident]
|
defs = defines[ident]
|
||||||
if len(defs) != 1:
|
if len(defs) != 1:
|
||||||
|
@ -210,7 +217,19 @@ if __name__ == "__main__":
|
||||||
defs = list(defs)[0]
|
defs = list(defs)[0]
|
||||||
if refs == defs:
|
if refs == defs:
|
||||||
continue
|
continue
|
||||||
dot.edge(refs, defs, label=ident)
|
edges[(refs, defs)] += 1
|
||||||
print(f"{refs} -{ident}-> {defs}")
|
|
||||||
|
|
||||||
dot.render("tmp", format="png", view=True)
|
max_w = max(edges.values())
|
||||||
|
|
||||||
|
for edge, weight in edges.items():
|
||||||
|
refs, defs = edge
|
||||||
|
r = random.randint(0, 255)
|
||||||
|
g = random.randint(0, 255)
|
||||||
|
b = random.randint(0, 255)
|
||||||
|
color = f"#{r:02x}{g:02x}{b:02x}80"
|
||||||
|
weight = weight * 10 / max_w
|
||||||
|
weight = max(weight, 1)
|
||||||
|
dot.edge(refs, defs, penwidth=str(weight), color=color)
|
||||||
|
# print(f"{refs} -{weight}-> {defs}")
|
||||||
|
|
||||||
|
dot.render("tmp", format="pdf", view=True)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue