System and method for identifying source code defect introduction during source code modification
Uloženo v:
| Název: | System and method for identifying source code defect introduction during source code modification |
|---|---|
| Patent Number: | 11544,055 |
| Datum vydání: | January 03, 2023 |
| Appl. No: | 17/533242 |
| Application Filed: | November 23, 2021 |
| Abstrakt: | Methods, systems, and computer-readable media are disclosed herein that provide a comprehensive view that reveals all or nearly all possible method dependencies that are present in client workflows. In aspects, when computer code for a particular method is going to be edited, other methods are identified that have upstream or downstream dependencies relative to the particular method. The methods that will be affected based on the computer code editing can be presented in a user-interactive graphical user interface that facilitates exploration of upstream and downstream dependencies. |
| Inventors: | CERNER INNOVATION, INC. (Kansas City, KS, US) |
| Assignees: | CERNER INNOVATION, INC. (North Kansas City, MO, US) |
| Claim: | 1. A computerized method for impact identification based on code analysis, the method comprising: generating a static dependency graph of a first plurality of dependencies of a workflow encoded in a plurality of code base, wherein generating the static dependency graph comprises: generating a plurality of separate dependency maps for the plurality of code bases, combining the plurality of separate dependency maps into one map, parsing the one map, and generating the static dependency graph of the first plurality of dependencies from the one map; generating a first dynamic dependency graph of a second plurality of dependencies based on execution of the workflow in a first domain; identifying at least one difference between the first plurality of dependencies and the second plurality of dependencies based on the static dependency graph and the first dynamic dependency graph; generating a second dynamic dependency graph of a third plurality of dependencies based on execution of the workflow in a second domain; and performing an impact analysis based on a comparison of the first plurality of dependencies, the second plurality of dependencies, and the third plurality of dependencies. |
| Claim: | 2. The method of claim 1 , wherein performing the impact analysis comprises one or more of: identifying upstream and downstream method call dependencies for the workflow; identifying overlap between the first plurality of dependencies, the second plurality of dependencies, and the third plurality of dependencies; or identifying the at least one difference between the first plurality of dependencies, the second plurality of dependencies, and the third plurality of dependencies for the workflow. |
| Claim: | 3. The method of claim 1 , wherein identifying the at least one difference between the first plurality of dependencies and the second plurality of dependencies comprises one or more of: superimposing the first dynamic dependency graph and the static dependency graph; or identifying that at least one method that is present in the first dynamic dependency graph is absent from the static dependency graph. |
| Claim: | 4. The method of claim 1 , identifying the at least one difference between the first plurality of dependencies and the second plurality of dependencies comprises one or more of: superimposing the first dynamic dependency graph and the static dependency graph; or identifying that at least one method that is absent in the first dynamic dependency graph is present from the static dependency graph. |
| Claim: | 5. The method of claim 1 , wherein generating the static dependency graph further comprises: scanning computer code in the plurality code bases; and identifying the first plurality of dependencies between method calls based on scanning the computer code; wherein the static dependency graph includes each of the first plurality of dependencies identified, and wherein the first plurality of dependencies represents upstream and downstream calls between methods of the workflow. |
| Claim: | 6. The method of claim 5 , wherein the first plurality of dependencies includes at least one upstream method that calls another downstream method in the workflow. |
| Claim: | 7. The method of claim 5 , wherein the first plurality of dependencies includes at least one downstream method that is called by another upstream method in the workflow. |
| Claim: | 8. The method of claim 1 , wherein generating the first dynamic dependency graph comprises executing the workflow using a first domain. |
| Claim: | 9. The method of claim 8 , wherein generating the first dynamic dependency graph further comprises tracing the first plurality of method calls based on executing the workflow using the first domain. |
| Claim: | 10. The method of claim 9 , wherein generating the first dynamic dependency graph further comprises: identifying at least one of an upstream dependency relationship or a downstream dependency relationship for all methods present in the first plurality of method calls; wherein the first dynamic dependency graph includes the second plurality of dependencies, and the second plurality of dependencies include the at least one of the upstream dependency relationship or the downstream dependency relationship for all methods present in the first plurality of method calls. |
| Claim: | 11. The method of claim 10 , wherein generating the second dynamic dependency graph comprises: executing the workflow using a first domain; tracing a second plurality of method calls based on executing the workflow using the first domain; and identifying at least one of an upstream dependency relationship or a downstream dependency relationship for methods present in the second plurality of method calls; wherein the first dynamic dependency graph includes the third plurality of dependencies, and the third plurality of dependencies includes the at least one of the upstream dependency relationship or the downstream dependency relationship for the methods present in the second plurality of method calls. |
| Claim: | 12. One more non-transitory computer-readable media having computer-executable instructions embodied thereon that when executed using one or more processors perform a method, the media comprising: generating a static dependency graph of a first plurality of dependencies of a workflow encoded in a plurality of code bases, wherein generating the static dependency graph comprises: generating a plurality of separate dependency maps for the plurality of code bases, combining the plurality of separate dependency maps into one map, parsing the one map, and generating the static dependency graph of the first plurality of dependencies from the one map; generating a first dynamic dependency graph of a second plurality of dependencies based on execution of the workflow in a first domain; identifying at least one difference between the first plurality of dependencies and the second plurality of dependencies based on the static dependency graph and the first dynamic dependency graph; generating a second dynamic dependency graph of a third plurality of dependencies based on execution of the workflow in a second domain; and performing an impact analysis based on a comparison of the first plurality of dependencies, the second plurality of dependencies, and the third plurality of dependencies. |
| Claim: | 13. The media of claim 12 , wherein generating the static dependency graph further comprises: receiving the plurality of code bases as input; and wherein the first plurality of dependencies includes at least 90% of dependencies present in the plurality of code bases. |
| Claim: | 14. The media of claim 12 , wherein generating the first dynamic dependency graph comprises: executing the workflow using the first domain; and tracing each of the first plurality of method calls based on executing the workflow in the first domain. |
| Claim: | 15. The media of claim 14 , wherein generating the first dynamic dependency graph further comprises: generating a sequenced method call tree that represents all of the first plurality of method calls traced; and based on the sequenced method call tree, identifying at least one of an upstream dependency relationship or a downstream dependency relationship for all methods present in the first plurality of method calls; wherein the first dynamic dependency graph includes the second plurality of dependencies, and wherein the second plurality of dependencies includes the at least one of the upstream dependency relationship or the downstream dependency relationship for all methods traced for the first plurality of method calls. |
| Claim: | 16. The media of claim 12 , further comprising generating and causing display of a graphical user interface (GUI) that displays computer code for the workflow encoded in a code base. |
| Claim: | 17. The media of claim 16 , further comprising: receiving a selection of a first method directly from the computer code displayed in the GUI; and in response to the selection, generating and causing display of the impact analysis as specific to the first method in the GUI, wherein the impact analysis that is specific to the first method specifies at least one of an upstream dependency relationship or a downstream dependency relationship of a second method relative to the first method. |
| Claim: | 18. The media of claim 17 , further comprising: receiving a subsequent selection of the second method from the impact analysis that is specific to the first method in the GUI; and in response to the subsequent selection, generating and causing display of the impact analysis as specific to the first method and the second method, wherein the impact analysis as specific to the first method and the second method specifies at least one of another upstream dependency relationship or another downstream dependency relationship of a third method relative to the second method. |
| Claim: | 19. The media of claim 12 , wherein identifying the at least one difference between the first plurality of dependencies and the second plurality of dependencies comprises: identifying that at least one method that is present in the first dynamic dependency graph is absent from the static dependency graph; or identifying that the at least one method that is absent in the first dynamic dependency graph is present from the static dependency graph. |
| Claim: | 20. A system for impact identification based on code analysis, the system comprising: one or more processors; a dependency graph generating module that executed by the one or more processors to: generates a static dependency graph of a first plurality of dependencies of a workflow encoded in a plurality of code bases, wherein generating the static dependency graph comprises: generating a plurality of separate dependency maps for the plurality of code bases, combining the plurality of separate dependency maps into one map, parsing the one map, and generating the static dependency graph of the first plurality of dependencies from the one map; generates a first dynamic dependency graph of a second plurality of dependencies based on execution of the workflow in a first domain; generates a second dynamic dependency graph of a third plurality of dependencies based on execution of the workflow in a second domain; a superimposing module that identifies at least one difference between the first plurality of dependencies and the second plurality of dependencies based on the static dependency graph and the first dynamic dependency graph; and an impact analysis module that performs an impact analysis based on the first plurality of dependencies, the second plurality of dependencies, and the third plurality of dependencies. |
| Patent References Cited: | 5936634 August 1999 Kawamoto 8898676 November 2014 Hiltgen et al. 9122490 September 2015 Fanning 10275240 April 2019 Kogan et al. 10817283 October 2020 Naik 11106460 August 2021 Culibrk et al. 20090083268 March 2009 Coqueret et al. 20100299305 November 2010 Laxman et al. 20120036497 February 2012 Karthik et al. 20120311523 December 2012 Venkataraman et al. 20130080993 March 2013 Stravers 20130227542 August 2013 Pei et al. 20140310559 October 2014 Deng 20140331203 November 2014 Elshishiny et al. 20160188325 June 2016 Blitzstein 20170068676 March 2017 Jayachandran 20200034135 January 2020 Shi et al. 20200174907 June 2020 Lundquist et al. 20200349055 November 2020 Reddy et al. 20210049050 February 2021 Goodwin 20210049465 February 2021 Bogdan 20210247976 August 2021 Masis et al. 20220164181 May 2022 Reddy et al. |
| Other References: | Notice of Allowance received for U.S. Appl. No. 17/101,284, dated Apr. 4, 2022, 12 pages. cited by applicant Preinterview First Office Action received for U.S. Appl. No. 17/101,284, mailed on Dec. 22, 2021,4 pages. cited by applicant |
| Primary Examiner: | Deng, Anna C |
| Attorney, Agent or Firm: | Shook, Hardy & Bacon LLP |
| Přístupové číslo: | edspgr.11544055 |
| Databáze: | USPTO Patent Grants |
| Abstrakt: | Methods, systems, and computer-readable media are disclosed herein that provide a comprehensive view that reveals all or nearly all possible method dependencies that are present in client workflows. In aspects, when computer code for a particular method is going to be edited, other methods are identified that have upstream or downstream dependencies relative to the particular method. The methods that will be affected based on the computer code editing can be presented in a user-interactive graphical user interface that facilitates exploration of upstream and downstream dependencies. |
|---|