IP Library Granted Patent US 8,209,646
Granted Patent B2
US 8,209,646 · App. 11/934,717 · Granted Jun 26, 2012

Apparatus and method for analyzing source code using path analysis and Boolean satisfiability

Assignee: Hewlett-Packard Development Company, L.P.
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 8,209,646
App. No.
11/934,717
Filed
Nov 2, 2007
Granted
Jun 26, 2012
Kind
B2
Examiner
TAT, BINH C
Art Unit
2825
USPC
716/6
Abstract

A computer readable storage medium includes executable instructions to identify a path in target source code. Constraints associated with the path are extracted. The constraints are converted to a Boolean expression. The Boolean expression is processed with a Boolean satisfiability engine to identify either a feasible path or an infeasible path. A feasible path is statically analyzed, while an infeasible path is not statically analyzed.

Claims (37)

1. A non-transitory computer readable storage medium, comprising executable instructions to:

identify a path in target source code of a program, wherein the path is a potential sequence of operations carried out when the program is executed;

extract constraints associated with the path;

convert the constraints to a Boolean expression;

process the Boolean expression with a Boolean satisfiability engine to identify either a feasible path or an infeasible path, wherein the infeasible path is a sequence of operations that is never carried out when the program is executed and a feasible path is a sequence of operations that is carried out when the program is executed;

perform a static analysis of a feasible path to report any bugs in the feasible path and omit static analysis of an infeasible path; and

executable instructions to bit width limit the input to the Boolean satisfiability engine.

2. The computer readable storage medium of claim 1 wherein the Boolean expression is expressed in Conjunctive Normal Form (CNF).

3. The computer readable storage medium of claim 1 further comprising executable instructions to parse the target source code.

4. The computer readable storage medium of claim 3 further comprising executable instructions to build a model of the target source code.

5. The computer readable storage medium of claim 4 further comprising executable instructions to identify a plurality of paths in the target source code.

6. A method comprising:

identifying a path in target source code of a program, wherein the path is a potential sequence of operations carried out when the program is executed;

extracting constraints associated with the path;

converting the constraints to a Boolean expression;

processing by a processor the Boolean expression with a Boolean satisfiability engine to identify either a feasible path or an infeasible path, wherein the infeasible path is a sequence of operations that is never carried out when the program is executed and a feasible path is a sequence of operations that is carried out when the program is executed; and

performing a static analysis of a feasible path to report any bugs in the feasible path and omit static analysis of an infeasible path.

7. The method of claim 6 , comprising:

limiting a bit width of the Boolean expression input to the Boolean satisfiablility engine.

8. The method of claim 6 , wherein the Boolean expression is expressed in Conjunctive Normal Form.

9. The method of claim 6 comprising:

parsing the target source code to identify the path.

10. The method of claim 6 , comprising:

building a model of the target source code to identify the path.

11. The method of claim 6 , comprising:

identifying a plurality of paths in the target source code, wherein either the feasible path or the infeasible path is identified from at least one of the plurality of paths.

12. A computer system comprising:

a hardware device to identify a path in target source code of a program, wherein the path is a potential sequence of operations carried out when the program is executed,

to extract constraints associated with the path,

to convert the constraints to a Boolean expression,

to process the Boolean expression with a Boolean satisfiability engine to identify either a feasible path or an infeasible path, wherein the infeasible path is a sequence of operations that is never carried out when the program is executed and a feasible path is a sequence of operations that is carried out when the program is executed, and

to perform a static analysis of a feasible path to report any bugs in the feasible path and omit static analysis of an infeasible path.

13. The computer system of claim 12 , wherein the hardware device is to limit a bit width the Boolean expression input to the Boolean satisfiablility engine.

14. The computer system of claim 12 , wherein the Boolean expression is expressed in Conjunctive Normal Form.

15. The computer system of claim 12 , wherein the hardware device is to parse the target source code to identify the path.

16. The The computer system of claim 12 , wherein the hardware device is to build a model of the target source code to identify the path.

17. The computer system of claim 12 , wherein the hardware device is to identify a plurality of paths in the target source code, wherein either the feasible path or the infeasible path is identified from at least one of the plurality of paths.

Assignments (11)
RELEASE OF SECURITY INTEREST REEL/FRAME 044183/0577 Recorded Feb 2, 2023
From: JPMORGAN CHASE BANK, N.A.
To: MICRO FOCUS LLC (F/K/A ENTIT SOFTWARE LLC)
Reel/Frame 063560/0001 →
RELEASE OF SECURITY INTEREST REEL/FRAME 044183/0718 Recorded Feb 2, 2023
From: JPMORGAN CHASE BANK, N.A.
To: MICRO FOCUS LLC (F/K/A ENTIT SOFTWARE LLC); BORLAND SOFTWARE CORPORATION; MICRO FOCUS (US), INC.; SERENA SOFTWARE, INC; ATTACHMATE CORPORATION; MICRO FOCUS SOFTWARE INC. (F/K/A NOVELL, INC.); NETIQ CORPORATION
Reel/Frame 062746/0399 →
CHANGE OF NAME Recorded Aug 8, 2019
From: ENTIT SOFTWARE LLC
To: MICRO FOCUS LLC
Reel/Frame 050004/0001 →
SECURITY INTEREST Recorded Oct 11, 2017
From: ENTIT SOFTWARE LLC; ARCSIGHT, LLC
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 044183/0577 →
SECURITY INTEREST Recorded Oct 11, 2017
From: ATTACHMATE CORPORATION; BORLAND SOFTWARE CORPORATION; NETIQ CORPORATION; MICRO FOCUS (US), INC.; MICRO FOCUS SOFTWARE, INC.; ENTIT SOFTWARE LLC; ARCSIGHT, LLC; SERENA SOFTWARE, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 044183/0718 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 9, 2017
From: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
To: ENTIT SOFTWARE LLC
Reel/Frame 042746/0130 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 9, 2015
From: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.
To: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
Reel/Frame 037079/0001 →
MERGER Recorded Nov 16, 2012
From: FORTIFY SOFTWARE, LLC
To: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.
Reel/Frame 029316/0274 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 16, 2012
From: HEWLETT-PACKARD SOFTWARE, LLC
To: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.
Reel/Frame 029316/0280 →
CERTIFICATE OF CONVERSION Recorded Apr 20, 2011
From: FORTIFY SOFTWARE, INC.
To: FORTIFY SOFTWARE, LLC
Reel/Frame 026155/0089 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 30, 2008
From: CHESS, BRIAN; FAY, SEAN; GOUNDAN, AYEE KANNAN
To: FORTIFY SOFTWARE, INC.
Reel/Frame 020440/0367 →
Continuity (1)
Related Publication 20090119624A1 · May 7, 2009