Methods, systems, and computer program products for identifying computer program source code constructs
AssigneeUniversity of North Carolina
InventorsJason McColm Smith, Paul David Stotts
Life of this patent
Estimating the term…
Abstract
Methods, systems, and computer program products for identifying computer source code constructs are disclosed. According to one method, computer source code is converted to a format suitable for an automated inference engine. The automated inference engine receives as inputs the converted source code, a set of elemental design patterns defining patterns to be identified, and a set of rules defining relationships between patterns. The automated inference engine outputs proofs indicative of patterns present in the source code. The proofs may be converted to a source code pattern report.
Claims46
A method for detecting constructs in computer program source code in a manner that is independent of underlying source code variations used to implement the source code constructs, the method comprising:
- (a) converting a first computer source code file into a fact set in a mathematical notation that supports direct expression of semantic reliances between elements of source code and is suitable for inputting into an automated inference engine;
- (b) accessing a catalog including elemental design patterns and constructs composed of elemental design patterns for identifying predetermined source code constructs, wherein the elemental design patterns and the constructs in the catalog are independent of source code semantic tags;
- (c) accessing a set of rules in the mathematical notation usable by the automated inference engine to identify relationships between source code constructs;
- and
- (d) inputting the fact set, the catalog, and the rules to the automated inference engine and identifying constructs present in the first computer program source code file.
A method for detecting constructs in computer program source code in a manner that is independent of underlying source code variations used to implement the source code constructs, the method comprising:
- (a) converting a first computer source code file into a fact set in a mathematical notation suitable for inputting into an automated inference engine, wherein converting the first computer source code file into a fact set in a mathematical notation includes converting the first computer source code file into a rho calculus notation, wherein the rho calculus notation comprises an extension of sigma calculus notation to include transitivity;
- (b) accessing a catalog including elemental design patterns and constructs composed of elemental design patterns for identifying predetermined source code constructs, wherein the elemental design patterns and the constructs in the catalog are independent of source code semantic tags;
- (c) accessing a set of rules in the mathematical notation usable by the automated inference engine to identify relationships between source code constructs;
- and
- (d) inputting the fact set, the catalog, and the rules to the automated inference engine and identifying constructs present in the first computer program source code file.
A method for detecting constructs in computer program source code in a manner that is independent of underlying source code variations used to implement the source code constructs, the method comprising:
- (a) converting a first computer source code file into a fact set in a mathematical notation suitable for inputting into an automated inference engine;
- (b) accessing a catalog including elemental design patterns and constructs composed of elemental design patterns for identifying predetermined source code constructs, wherein the elemental design patterns and the constructs in the catalog are independent of source code semantic tags;
- (c) accessing a set of rules in the mathematical notation usable by the automated inference engine to identify relationships between source code constructs, wherein accessing a set of rules usable by the automated inference engine includes accessing rules in a rho calculus notation, wherein the rho calculus notation comprises an extension of sigma calculus notation to include transitivity;
- and
- (d) inputting the fact set, the catalog, and the rules to the automated inference engine and identifying constructs present in the first computer program source code file.
A system for identifying computer source code constructs comprising computer-executable instructions embodied in a computer-readable storage media, the computer-readable storage media comprising:
- (a) a source-code-to-fact-set converter for converting computer program source code into a fact set in a mathematical notation that supports direct expression of semantic reliances between elements of source code and is suitable for inputting into an automated inference engine;
- (b) an elemental design pattern (EDP) catalog including at least one elemental design pattern to be compared to the fact set;
- (c) a rule set including at least one rule for defining relationships between source code constructs;
- and
- (d) an automated inference engine for receiving as input the fact set, the EDP catalog, and the rule set, and for producing output indicative of patterns in the computer program source code.
A computer program product comprising computer executable instructions embodied in a computer readable storage medium for performing steps comprising:
- (a) converting computer program source code into a fact set in a mathematical notation that supports direct expression of semantic reliances between elements of source code and is suitable for inputting into an automated inference engine;
- (b) providing an elemental design pattern catalog including at least one elemental design pattern for identifying a construct in the source code;
- (c) providing a rule set defining relationships between elemental design patterns identified as present in the computer program source code;
- and
- (d) comparing the fact set to the elemental design pattern catalog and applying the rules in the rule set to identify constructs present in the computer program source code, wherein comparing the fact set to the elemental design pattern catalog and applying the rules includes inputting the fact set, the elemental design pattern catalog, and the rules into an automated inference engine and identifying the construct present in the computer program source code.
Dependencies are inferred from the claim text.