IP Library › Granted Patent US 9,176,850
Granted Patent B2
US 9,176,850 · App. 14/194,080 · Granted Nov 3, 2015

Automated parallel software code impact analysis

Inventors: Abhishek Singh (Bangalore, IN); Sachin Vasudeva (Fremont, CA)
Assignee: Juniper Networks, Inc.
G06F11/3668G06F8/75G06F11/3604G06F11/368
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 9,176,850
App. No.
14/194,080
Granted
Nov 3, 2015
Kind
B2
Abstract

A server device is configured to receive a request to identify a manner in which changed code propagates within an application; generate a group of blocks that correspond to code associated with a parent function corresponding to the application and which includes the changed code; perform an intra-procedural analysis on the group of blocks to identify a block that is affected by the changed code included within an epicenter block; perform an inter-procedural analysis on functions associated with the block, where, when performing the inter-procedural analysis, the server device is to generate another group of blocks associated with the functions, and identify another block that is affected by the changed code included within the epicenter block; and present, for display, information associated with the block or the other block that enables the application to be tested based on the block or the other block.

Claims (84)

1. A method comprising:

generating, by a device, a first control flow graph that corresponds to a first function associated with one or more of a plurality of lines of code,

the one or more of the plurality of lines of code including a changed line of code,

the first control flow graph including one or more blocks that correspond to the one or more of the plurality of lines of code, and

the one or more blocks including a particular block associated with the changed line of code;

identifying, by the device, at least one impacted block, of the one or more blocks, that is affected by a set of variables, within the particular block, that call a second function;

generating, by the device, a second control flow graph for the second function,

the second control flow graph including a different one or more blocks that correspond to different one or more of the plurality of lines of code;

detecting, by the device, a calling statement associated with a third function that is called by the first function;

assigning, by the device, a distance to the third function based on detecting the calling statement;

identifying, by the device and based on executing a plurality of analysis threads associated with the distance, at least one other impacted block, of the different one or more blocks, that is affected by the set of variables; and

providing, by the device and for display, identifiers associated with the at least one impacted block and the at least one other impacted block.

2. The method of claim 1 , where identifying the at least one impacted block includes:

traversing the one or more blocks to identify the at least one impacted block.

3. The method of claim 1 , where identifying the at least one other impacted block includes:

traversing the different one or more blocks to identify the at least one other impacted block.

4. The method of claim 1 ,

where generating the first control flow graph includes:

mapping a particular portion of the one or more of the plurality of lines of code to the particular block, and

where the particular portion of the one or more lines of code includes the changed line of code.

5. The method of claim 1 , further comprising:

creating interconnections between the one or more blocks based on the first function.

6. The method of claim 1 , where the set of variables is an impacted set of variables.

7. The method of claim 1 , where assigning the distance comprises:

determining a return statement associated with the third function, and

assigning the distance to the third function based on detecting the calling statement and based on detecting the return statement.

8. A system comprising:

a server device, including a processor, to:

generate a first control flow graph that corresponds to a first function associated with one or more of a plurality of lines of code,

the one or more of the plurality of lines of code including a changed line of code,

the first control flow graph including one or more blocks that correspond to the one or more of the plurality of lines of code, and

the one or more blocks including a particular block associated with the changed line of code;

identify a first impacted block, of the one or more blocks, that is affected by a set of variables, within the particular block, that call a second function;

generate a second control flow graph for the second function,

the second control flow graph including a different one or more blocks that correspond to different one or more of the plurality of lines of code;

assign a distance to a third function that is called by or calls the first function;

execute a plurality of analysis threads, associated with the distance, to identify a second impacted block, of the different one or more blocks, that is affected by the set of variables; and

provide information associated with the first impacted block and the second impacted block.

9. The system of claim 8 , where the server device is further to:

mark the first impacted block as having been affected by the changed line of code based on identifying the first impacted block.

10. The system of claim 8 , where the server device is further to:

mark the second impacted block as having been affected by the changed line of code based on identifying the second impacted block.

11. The system of claim 8 , further comprising:

perform an inter-procedural analysis based on the second impacted block and an interconnection associated with the second impacted block.

12. The system of claim 8 , where, when generating the first control flow graph, the server device is to:

receive a request, and

generate the first control flow graph based on the request.

13. The system of claim 12 , where the request is to perform a parallel impact analysis on the changed line of code.

14. The system of claim 8 , where, when identifying the first impacted block, the server device is to:

determine that a variable, of the set of variables, is associated with a used set of variables that corresponds to the first impacted block, and

identify the first impacted block based on determining that the variable is associated with the used set of variables.

15. A non-transitory computer-readable medium storing instructions, the instructions comprising:

one or more instructions that, when executed by at least one processor, cause the at least one processor to:

generate a first control flow graph that corresponds to a first function associated with one or more of a plurality of lines of code,

the one or more of the plurality of lines of code including a changed line of code,

the first control flow graph including one or more blocks that correspond to the one or more of the plurality of lines of code, and

the one or more blocks including a particular block associated with the changed line of code;

identify a first impacted block, of the one or more blocks, that is affected by a set of variables, within the particular block, that call a second function;

generate a second control flow graph for the second function,

the second control flow graph including a different one or more blocks that correspond to different one or more of the plurality of lines of code;

identify a second impacted block, of the different one or more blocks, that is affected by the set of variables;

identify a third function based on a statement detected within the second impacted block;

assign a distance to the third function;

identify a third impacted block based on the distance; and

provide information associated with the first impacted block, the second impacted block, and the third impacted block.

16. The non-transitory computer-readable medium of claim 15 , where the one or more instructions to generate the first control flow graph include:

one or more instructions that, when executed by the at least one processor, cause the at least one processor to:

receive a request to perform a parallel impact analysis on the changed line of code, and

generate the first control flow graph based on the request.

17. The non-transitory computer-readable medium of claim 15 , where the instructions further comprise:

one or more instructions that, when executed by the at least one processor, cause the at least one processor to:

mark the first impacted block, and

generate the information associated with the first impacted block and the second impacted block based on marking the first impacted block.

18. The non-transitory computer-readable medium of claim 15 , where the one or more instructions to identify the third impacted block comprise:

one or more instructions that, when executed by the at least one processor, cause the at least one processor to:

identify a plurality of analysis threads associated with the distance, and

identify the third impacted block by executing the plurality of analysis threads.

19. The non-transitory computer-readable medium of claim 15 , where the one or more instructions to identify the first impacted block comprise:

one or more instructions that, when executed by the at least one processor, cause the at least one processor to:

traverse the one or more blocks to identify the at least one impacted block.

20. The non-transitory computer-readable medium of claim 15 , where the one or more instructions to generate the first control flow graph comprise:

one or more instructions that, when executed by the at least one processor, cause the at least one processor to:

map a particular portion of the one or more of the plurality of lines of code to the particular block, and

where the particular portion of the one or more lines of code includes the changed line of code.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 28, 2014
From: SINGH, ABHISHEK; VASUDEVA, SACHIN
To: JUNIPER NETWORKS, INC.
Reel/Frame 032327/0867 →
Continuity (2)
Continuation 12914532 · Oct 28, 2010
Related Publication 20140181796A1 · Jun 26, 2014