IP Library Granted Patent US 10,853,060
Granted Patent B2
US 10,853,060 · App. 16/740,619 · Granted Dec 1, 2020

Software refactoring systems and methods

Inventors: Colleen Kimball (Ithaca, NY); Katey Huddleston (Ithaca, NY); Paul Nicotera (Ithaca, NY)
Assignee: ARCHITECTURE TECHNOLOGY CORPORATION
G06F8/72G06F8/427G06F8/443
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 10,853,060
App. No.
16/740,619
Granted
Dec 1, 2020
Kind
B2
Abstract

A computer-implemented method includes creating, by a computing device, an abstract syntax tree based on a source code file of a software application, the source code file including source code defining operations of the software application. The method also includes traversing, by the computing device, the abstract syntax tree. The method further includes identifying, by the computing device and based on the traversing of the abstract syntax tree, one or more code violations present in the source code. The method also includes generating, by the computing device, at least one refactoring option for the one or more code violations, each refactoring option of the at least one refactoring option representing a change to the source code file that is configured to remediate the associated code violation.

Claims (60)

1. A computer-implemented method comprising:

identifying, by one or more computing devices and based on traversing an abstract syntax tree, code violations present in source code;

generating, by the one or more computing devices, refactoring options for the code violations, each refactoring option representing a change to the source code that is configured to remediate an associated code violation;

receiving indications, from users, of selected refactoring options associated with particular code violations;

analyzing the selected refactoring options using machine learning;

identifying, by the one or more computing devices and based on traversing the abstract syntax tree, code violations present in additional source code; and

generating updated refactoring options for the identified code violations in the additional source code based on the analysis of the selected refactoring options.

2. The computer-implemented method of claim 1 , wherein the one or more computing devices comprise a plurality of computing devices in an enterprise network.

3. The computer-implemented method of claim 1 , further comprising:

automatically performing, by the one or more computing devices, one or more changes to the additional source code based on the updated refactoring options.

4. The computer-implemented method of claim 1 , wherein analyzing the selected refactoring options using machine learning comprises:

analyzing the selected refactoring options using one or more of decision tree learning, association rule learning, learning via artificial neural networks, inductive logic programming, support vector machines, clustering, Bayesian networks, reinforcement learning, representation learning, similarity and metric learning, sparse dictionary learning, genetic algorithms, or rule-based machine learning.

5. The computer-implemented method of claim 1 , further comprising:

displaying a segment of the additional source code including the identified code violations present in the additional source code and the updated refactoring options;

receiving an indication of a selection of a first refactoring option of the updated refactoring options; and

changing the additional source code based on the first refactoring option.

6. The computer-implemented method of claim 1 , further comprising:

traversing the abstract syntax tree and counting a total number of significant nodes within a code block during the traversing, wherein a significant node represents a significant line of source code, and wherein identifying the code violations further includes determining that the total number of significant nodes within the code block exceeds a pre-determined threshold.

7. The computer-implemented method of claim 1 , further comprising:

disallowing transmission of the source code between computing devices of the one or more computing devices.

8. A device comprising:

a memory configured to store source code; and

one or more processors in communication with the memory, the one or more processors configured to:

identify, based on traversing an abstract syntax tree, code violations present in the source code;

generate refactoring options for the code violations, each refactoring option representing a change to the source code that is configured to remediate an associated code violation;

receive indications, from a user, of selected refactoring options associated with particular code violations;

analyze the selected refactoring options using machine learning;

identify, based on traversing the abstract syntax tree, code violations present in additional source code; and

generate updated refactoring options for the identified code violations in the additional source code based on the analysis of the selected refactoring options.

9. The device of claim 8 , wherein the one or more processors are further configured to:

automatically perform one or more changes to the additional source code based on the updated refactoring options.

10. The device of claim 8 , wherein to analyze the selected refactoring options using machine learning, the one or more processors are further configured to:

analyze the selected refactoring options using one or more of decision tree learning, association rule learning, learning via artificial neural networks, inductive logic programming, support vector machines, clustering, Bayesian networks, reinforcement learning, representation learning, similarity and metric learning, sparse dictionary learning, genetic algorithms, or rule-based machine learning.

11. The device of claim 8 , wherein the one or more processors are further configured to:

display a segment of the additional source code including the identified code violations present in the additional source code and the updated refactoring options;

receive an indication of a selection of a first refactoring option of the updated refactoring options; and

change the additional source code based on the first refactoring option.

12. The device of claim 8 , wherein the one or more processors are further configured to:

traverse the abstract syntax tree and count a total number of significant nodes within a code block during the traversing, wherein a significant node represents a significant line of source code, and wherein to identify the code violations, the one or more processors are further configured to determine that the total number of significant nodes within the code block exceeds a pre-determined threshold.

13. The device of claim 8 , wherein the one or more processors are further configured to:

disallow transmission of the source code to another computing device.

14. A non-transitory computer-readable storage medium storing instructions that, when executed, cause one or more processors to:

identify, based on traversing of abstract syntax tree, code violations present in source code;

generate refactoring options for the code violations, each refactoring option representing a change to the source code that is configured to remediate an associated code violation;

receive indications, from a user, of selected refactoring options associated with particular code violations;

analyze the selected refactoring options using machine learning;

subsequently identify, based on traversing the abstract syntax tree, code violations present in additional source code; and

generate updated refactoring options for the identified code violations in the additional source code based on the analysis of the selected refactoring options.

15. The non-transitory computer-readable storage medium of claim 14 , wherein the instructions further cause the one or more processors to:

automatically perform one or more changes to the additional source code based on the updated refactoring options.

16. The non-transitory computer-readable storage medium of claim 14 , wherein to analyze the selected refactoring options using machine learning, the instructions further cause the one or more processors to:

analyze the selected refactoring options using one or more of decision tree learning, association rule learning, learning via artificial neural networks, inductive logic programming, support vector machines, clustering, Bayesian networks, reinforcement learning, representation learning, similarity and metric learning, sparse dictionary learning, genetic algorithms, or rule-based machine learning.

17. The non-transitory computer-readable storage medium of claim 14 , wherein the instructions further cause the one or more processors to:

display a segment of the additional source code including the identified code violations present in the additional source code and the updated refactoring options;

receive an indication of a selection of a first refactoring option of the updated refactoring options; and

change the additional source code based on the first refactoring option.

18. The non-transitory computer-readable storage medium of claim 14 , wherein the instructions further cause the one or more processors to:

traverse the abstract syntax tree and count a total number of significant nodes within a code block during the traversing, wherein a significant node represents a significant line of source code, and wherein to identify the code violations, the one or more processors are further configured to determine that the total number of significant nodes within the code block exceeds a pre-determined threshold.

19. The non-transitory computer-readable storage medium of claim 14 , wherein the instructions further cause the one or more processors to:

disallow transmission of the source code to another computing device.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 13, 2020
From: KIMBALL, COLLEEN; HUDDLESTON, KATEY; NICOTERA, PAUL
To: ARCHITECTURE TECHNOLOGY CORPORATION
Reel/Frame 051491/0564 →
Continuity (2)
Continuation 15926912 · Mar 20, 2018
Related Publication 20200150951A1 · May 14, 2020
Cited By (5)
US 12,386,614 US 12,430,126 US 12,578,930 US 12,724,605 US 12,724,606