IP Library Granted Patent US 11,288,044
Granted Patent B1
US 11,288,044 · App. 17/325,604 · Granted Mar 29, 2022

System and method for interprocedural analysis

Inventors: Aharon Abadi (Givatayim, IL); Bar Makovitzki (Givatayim, IL); Ron Shemer (Givatayim, IL)
Assignee: WHITESOURCE LTD.
G06F8/433G06F8/436G06F8/4434G06F8/75
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,288,044
App. No.
17/325,604
Granted
Mar 29, 2022
Kind
B1
Abstract

A computer-implemented method, system and computer program product, the method comprising: obtaining a representation of computer code; analyzing the computer code using a first algorithm to obtain a call graph; subject to the call graph not complying with a stopping criteria: analyzing a part of the computer code using a second algorithm to obtain further edges for the at least one second node; and combining the further edges with the call graph, to obtain a second call graph; and outputting the second call graph.

Claims (46)

1. A computer-implemented method comprising:

obtaining a representation of computer code;

analyzing the computer code using a first algorithm to obtain a call graph;

subject to the call graph not complying with a stopping criteria:

analyzing a part of the computer code using a second algorithm to obtain further edges for at least one second node comprised in the call graph; and

combining the further edges with the call graph, to obtain a second call graph; and

outputting the second call graph.

2. The method of claim 1 , wherein the stopping criteria is that the call graph comprises at least one first node associated with at least one resolved target and at least one second node associated with an unresolved target.

3. The method of claim 1 , wherein the second algorithm requires more resources than the first algorithm.

4. The method of claim 1 , further comprising:

subject to the second call graph comprising at least one third node associated with an unresolved target:

analyzing the computer code using a third algorithm to obtain additional edges for the at least one third node; and

combining the additional edges with the second call graph,

thereby obtaining a third call graph comprising the call graph, the further edges and the additional edges.

5. The method of claim 4 , wherein the first algorithm is a class hierarchy analysis, the second algorithm is a point-to analysis and the third algorithm resolves dynamic method calls.

6. The method of claim 4 , wherein the first algorithm is a file dependency analysis, the second algorithm is a type inference analysis and the third algorithm is a point-to analysis.

7. The method of claim 1 , wherein the first algorithm is a file dependency static analysis, name-based analysis or class hierarchy analysis.

8. The method of claim 1 , wherein the first algorithm or the second algorithm is a class hierarchy analysis.

9. The method of claim 1 , wherein the second algorithm is dynamic analysis or point-to analysis.

10. The method of claim 9 , wherein the third algorithm is a type inference analysis or dynamic analysis.

11. A computerized apparatus having a processor, the processor being configured to perform the steps of:

obtaining a representation of computer code;

analyzing the computer code using a first algorithm to obtain a call graph;

subject to the call graph not complying with a stopping criteria:

analyzing a part of the computer code using a second algorithm to obtain further edges for at least one second node comprised in the call graph; and

combining the further edges with the call graph, to obtain a second call graph; and

outputting the second call graph.

12. The apparatus of claim 11 , wherein the stopping criteria is that the call graph comprises at least one first node associated with at least one resolved target and at least one second node associated with an unresolved target.

13. The apparatus of claim 11 , wherein the second algorithm requires more resources than the first algorithm.

14. The apparatus of claim 11 , wherein the processor is further configured to:

subject to the second call graph comprising at least one third node associated with an unresolved target:

analyze the computer code using a third algorithm to obtain additional edges for the at least one third node; and

combine the additional edges with the second call graph,

thereby obtain a third call graph comprising the call graph, the further edges and the additional edges.

15. The apparatus of claim 14 , wherein the first algorithm is a class hierarchy analysis, the second algorithm is a point-to analysis and the third algorithm resolves dynamic method calls.

16. The apparatus of claim 14 , wherein the first algorithm is a file dependency analysis, the second algorithm is a type inference analysis and the third algorithm is a point-to analysis.

17. The apparatus of claim 11 , wherein the first algorithm is a file dependency static analysis, name-based analysis or class hierarchy analysis.

18. The apparatus of claim 11 , wherein the first algorithm or the second algorithm is a class hierarchy analysis, dynamic analysis or point-to analysis.

19. The apparatus of claim 14 , wherein the third algorithm is a type inference analysis or dynamic analysis.

20. A computer program product comprising a computer readable storage medium retaining program instructions, which program instructions when read by a processor, cause the processor to perform a method comprising:

obtaining a representation of computer code;

analyzing the computer code using a first algorithm to obtain a call graph;

subject to the call graph not complying with a stopping criteria:

analyzing a part of the computer code using a second algorithm to obtain further edges for at least one second node comprised in the call graph; and

combining the further edges with the call graph, to obtain a second call graph; and

outputting the second call graph.

Assignments (2)
SECURITY INTEREST Recorded Jul 1, 2025
From: WHITE SOURCE LTD.
To: BANK LEUMI LE-ISRAEL B.M.
Reel/Frame 071572/0376 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 20, 2021
From: ABADI, AHARON; MAKOVITZKI, BAR; SHEMER, RON
To: WHITESOURCE LTD.
Reel/Frame 056301/0403 →