Commit f9bcacc
committed
fix(python): resolve self./cls. calls into local Calls edges
Two independent bugs meant a call from inside one method to another via
self./cls. — the majority of calls inside any Python class — never became a
Calls edge in the graph:
- ir_to_graph registered functions in node_map only under their bare name,
but extract_class extracts calls with a qualified caller name
("ClassName.method_name"). Looking up the caller always missed, so the
call fell through to cross-file unresolved-call resolution instead of a
same-file edge.
- extract_callee_name returned the full attribute text ("self.helper") for
a `self.helper()` call instead of the bare method name, which couldn't
match anything in node_map either.
Register methods under both the bare and qualified name, and strip
self./cls. from the callee name before matching. Also fixes Contains
(class -> method) edges incorrectly linking same-named methods across two
different classes in one file, which used the same bare-name lookup.
get_callers/get_callees/get_call_graph/analyze_impact on methods were
systematically undercounting call relationships unless the callee happened
to also be found by the cross-file fallback.1 parent 55096f0 commit f9bcacc
2 files changed
Lines changed: 86 additions & 5 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
604 | 604 | | |
605 | 605 | | |
606 | 606 | | |
607 | | - | |
| 607 | + | |
| 608 | + | |
| 609 | + | |
| 610 | + | |
| 611 | + | |
| 612 | + | |
| 613 | + | |
| 614 | + | |
| 615 | + | |
| 616 | + | |
| 617 | + | |
| 618 | + | |
608 | 619 | | |
609 | 620 | | |
610 | 621 | | |
611 | 622 | | |
612 | | - | |
| 623 | + | |
| 624 | + | |
| 625 | + | |
| 626 | + | |
| 627 | + | |
| 628 | + | |
| 629 | + | |
| 630 | + | |
| 631 | + | |
| 632 | + | |
613 | 633 | | |
614 | 634 | | |
615 | 635 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
155 | 155 | | |
156 | 156 | | |
157 | 157 | | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
158 | 168 | | |
159 | 169 | | |
160 | 170 | | |
| |||
193 | 203 | | |
194 | 204 | | |
195 | 205 | | |
196 | | - | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
197 | 210 | | |
198 | | - | |
199 | | - | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
200 | 216 | | |
201 | 217 | | |
202 | 218 | | |
| |||
588 | 604 | | |
589 | 605 | | |
590 | 606 | | |
| 607 | + | |
| 608 | + | |
| 609 | + | |
| 610 | + | |
| 611 | + | |
| 612 | + | |
| 613 | + | |
| 614 | + | |
| 615 | + | |
| 616 | + | |
| 617 | + | |
| 618 | + | |
| 619 | + | |
| 620 | + | |
| 621 | + | |
| 622 | + | |
| 623 | + | |
| 624 | + | |
| 625 | + | |
| 626 | + | |
| 627 | + | |
| 628 | + | |
| 629 | + | |
| 630 | + | |
| 631 | + | |
| 632 | + | |
| 633 | + | |
| 634 | + | |
| 635 | + | |
| 636 | + | |
| 637 | + | |
| 638 | + | |
| 639 | + | |
| 640 | + | |
| 641 | + | |
| 642 | + | |
| 643 | + | |
| 644 | + | |
| 645 | + | |
| 646 | + | |
| 647 | + | |
| 648 | + | |
| 649 | + | |
| 650 | + | |
| 651 | + | |
591 | 652 | | |
592 | 653 | | |
593 | 654 | | |
| |||
0 commit comments