A code base is parsed to identify methods encapsulated therein. Thereafter, a call graph is generated based on the parsing using a graph generation technique. The call graph is a directed call graph comprising a plurality of nodes characterizing the identified methods. It can then be determined, based on one or more design patterns used to generate the code base, that at least a portion of the nodes generated call graph are disconnected nodes. At least two of the disconnected nodes are then connected using a stitching algorithm to result in a modified call graph. Data characterizing the modified call graph can then be provided (e.g., displayed in a graphical user interface, stored in a database, loaded into memory, transmitted to a remote computing device, etc.).
Legal claims defining the scope of protection, as filed with the USPTO.
1. A computer-implemented method comprising: parsing a code base to identify methods encapsulated therein; generating a call graph based on the parsing using a graph generation technique, the call graph being a directed call graph comprising a plurality of nodes characterizing the identified methods; determining, based on one or more design patterns used to generate the code base, that at least a portion of the nodes generated call graph are disconnected nodes, wherein at least a portion of the design patterns are non-standard and are not recognized by the graph generation technique; connecting at least two of the disconnected nodes using a stitching algorithm to result in a modified call graph, wherein the stitching algorithm performs operations comprising: for each of the one or more design patterns: find a set of called method nodes in the call graph to be called in runtime that depend on such design pattern; find a set of callee method nodes that are hierarchically associated with the set of called methods that depend on such design pattern; and add directed edges to the set of callee method nodes from the set of called method nodes if both sets contain at least one node; advance to a next design pattern if at least one edge is added between a callee and a called node; and advance to the next design pattern if the set of called method nodes and the set of callee method nodes are both empty; and providing data characterizing the modified call graph.
2. The method of claim 1 , wherein edges between nodes of the directed call graph are unidirectional edges connecting method nodes corresponding to invocations by a calling method to a callee method in the code base.
3. The method of claim 1 , wherein the connecting uses a second graph generation technique that differs from the graph generation technique.
4. The method of claim 1 , wherein the providing data characterizing the modified call graph comprises: causing the data characterizing the modified call graph in a graphical user interface, loading the modified call graph into memory, storing data characterizing the modified call graph in physical persistence, or transmitting the modified call graph to a remote computing device.
5. The method of claim 1 , wherein certain nodes are identified as being disconnected based on a first design pattern and such certain nodes are not identified as being disconnected based on a second design pattern.
6. A system comprising: at least one data processor; and memory storing instructions which, when executed by the at least one data processor, result in operations comprising: parsing a code base to identify methods encapsulated therein; generating a call graph based on the parsing using a graph generation technique, the call graph being a directed call graph comprising a plurality of nodes characterizing the identified methods; determining, based on one or more design patterns used to generate the code base, that at least a portion of the nodes generated call graph are disconnected nodes, wherein at least a portion of the design patterns are non-standard and are not recognized by the graph generation technique; connecting at least two of the disconnected nodes using a stitching algorithm to result in a modified call graph, wherein the stitching algorithm performs operations comprising: for each of the one or more design patterns: find a set of called method nodes in the call graph to be called in runtime that depend on such design pattern; find a set of callee method nodes that are hierarchically associated with the set of called methods that depend on such design pattern; and add directed edges to the set of callee method nodes from the set of called method nodes if both sets contain at least one node; advance to a next design pattern if at least one edge is added between a callee and a called node; and advance to the next design pattern if the set of called method nodes and the set of callee method nodes are both empty; and providing data characterizing the modified call graph.
7. The system of claim 6 , wherein edges between nodes of the directed call graph are unidirectional edges connecting method nodes corresponding to invocations by a calling method to a callee method in the code base.
8. The system of claim 6 , wherein the connecting uses a second graph generation technique that differs from the graph generation technique.
9. The system of claim 6 , wherein the providing data characterizing the modified call graph comprises: causing the data characterizing the modified call graph in a graphical user interface, loading the modified call graph into memory, storing data characterizing the modified call graph in physical persistence, or transmitting the modified call graph to a remote computing device.
10. The system of claim 6 , wherein certain nodes are identified as being disconnected based on a first design pattern and such certain nodes are not identified as being disconnected based on a second design pattern.
11. A non-transitory computer program product storing instructions which, when executed by at least one computing device, result in operations comprising: parsing a code base to identify methods encapsulated therein; generating a call graph based on the parsing using a graph generation technique, the call graph being a directed call graph comprising a plurality of nodes characterizing the identified methods; determining, based on one or more design patterns used to generate the code base, that at least a portion of the nodes generated call graph are disconnected nodes, wherein at least a portion of the design patterns are non-standard and are not recognized by the graph generation technique; connecting at least two of the disconnected nodes using a stitching algorithm to result in a modified call graph, wherein the stitching algorithm performs operations comprising: for each of the one or more design patterns: find a set of called method nodes in the call graph to be called in runtime that depend on such design pattern; find a set of callee method nodes that are hierarchically associated with the set of called methods that depend on such design pattern; and add directed edges to the set of callee method nodes from the set of called method nodes if both sets contain at least one node; advance to a next design pattern if at least one edge is added between a callee and a called node; and advance to the next design pattern if the set of called method nodes and the set of callee method nodes are both empty; and providing data characterizing the modified call graph.
12. The computer program product of claim 11 , wherein edges between nodes of the directed call graph are unidirectional edges connecting method nodes corresponding to invocations by a calling method to a callee method in the code base.
13. The computer program product of claim 11 , wherein the connecting uses a second graph generation technique that differs from the graph generation technique.
14. The computer program product of claim 11 , wherein the providing data characterizing the modified call graph comprises: causing the data characterizing the modified call graph in a graphical user interface, loading the modified call graph into memory, storing data characterizing the modified call graph in physical persistence, or transmitting the modified call graph to a remote computing device.
Cooperative Patent Classification codes for this invention. Click any code to explore related patents in that topic.
December 14, 2020
July 5, 2022
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.