US20070016894A1 - System and method for static analysis using fault paths - Google Patents

System and method for static analysis using fault paths Download PDF

Info

Publication number
US20070016894A1
US20070016894A1 US11/183,157 US18315705A US2007016894A1 US 20070016894 A1 US20070016894 A1 US 20070016894A1 US 18315705 A US18315705 A US 18315705A US 2007016894 A1 US2007016894 A1 US 2007016894A1
Authority
US
United States
Prior art keywords
paths
program
recited
analysis
bug
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US11/183,157
Inventor
Vugranam Sreedhar
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to US11/183,157 priority Critical patent/US20070016894A1/en
Assigned to INTERNATIONAL BUSINESS MACHINES CORPORATION reassignment INTERNATIONAL BUSINESS MACHINES CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: SREEDHAR, VUGRANAM CHAKRAVARTHY
Publication of US20070016894A1 publication Critical patent/US20070016894A1/en
Priority to US12/132,018 priority patent/US8813033B2/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3608Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation

Definitions

  • the present invention relates to evaluation of program, and more particularly to systems and methods which determine program soundness.
  • a static analysis is said to be sound when the data flow information that it produces is guaranteed to be true on all program execution. Soundness of static analysis is extremely important and critical for many applications of static analysis, such as code generation and optimization. There are applications of static analysis for which one can sacrifice soundness. For example, one can do away with soundness for finding bugs and defects.
  • a negative consequence of loosing soundness in such applications is increased reporting of false negatives.
  • software diagnosis as in medical diagnosis, there are two kinds of error that can occur.
  • a false positive is when there is no bug, but the results of the diagnosis come back as positive.
  • a false negative is when there is actually a bug, but the results of diagnosis come back as negative. If a static analysis is unsound, the number of false negatives and sometimes even the number of false positives can be increased.
  • PSE static analysis tool
  • Unsound static analysis techniques have been used on a number of bug patterns in programs for detecting such patterns. Unsound static analysis techniques have also been employed for finding a class of error-handling mistakes that arise from an improper release of resources.
  • Program slicing is another technique that is useful for detecting bugs and defects.
  • a program slice is a set of all program statements that affect the value of a variable. In dynamic slicing only those statements that affect a particular test case are considered. Slicing focuses on finding statements that affect a particular value of a variable.
  • the present invention is directed to address the question of how unsound is the data flow information generated by an unsound static analysis, and is it possible to distinguish between what is true from what is false using an unsound analysis.
  • a system and method for analyzing a program includes determining possible bug paths in a program based on statistical analysis of test cases. A static analysis is then performed only on the possible bug paths. The bugs are then located in the program.
  • Another method for analyzing a program includes determining a degree of unsoundness that can be tolerated for data flow information in a program and performing a static analysis on less than all possible paths based upon the degree of unsoundness.
  • the data flow information is computed only on those paths that trigger a possible bug or defect, based on statistics, to find the bugs and defects in the program.
  • the degree of unsoundness may be checked by measuring a distance between reference data and data of the program being considered.
  • the distance may include a hamming distance.
  • the step of performing a static analysis on less than all possible paths may include performing a meet over possible bug paths (mobp) analysis.
  • the step of performing a meet over possible bug paths (mobp) analysis may include determining possible bug paths based on statistics of type and location of bugs in test case programs.
  • the test case programs may include unit tests and/or regression tests.
  • the method may further comprise determining fault locations in the program using a fault localization algorithm.
  • a system for determining faults in a program includes a determination module which identifies possible bug paths in a program based on statistical analysis of test cases.
  • a static analysis module performs a static analysis only on the possible bug paths identified by the determination module, and a fault localization module locates the bugs in the program.
  • FIG. 1 depicts programming code for an illustrative program for demonstrating aspects of the present invention
  • FIGS. 2A-2D depict points-to graphs using different techniques for the example program of FIG. 1 ;
  • FIG. 3 is a diagram showing a spectrum for unsoundness and conservativeness
  • FIG. 4 depicts the programming code of FIG. 1 having paths comment out to provide for an unsound analysis in accordance with an illustrative embodiment of the present invention
  • FIG. 5 is a block/flow diagram showing a system/method for analyzing a program using an unsound static analysis in accordance with one embodiment of the present invention.
  • FIG. 6 is a block diagram showing a system for analyzing a program using an unsound static analysis in accordance with another embodiment of the present invention.
  • Embodiments of the present invention determine soundness and conservativeness of programs and access their impact on static program analysis.
  • failed test cases are employed to determine possible bug paths within a program. These bug paths are then employed for computing data flow information for the program.
  • the systems and methods disclosed herein may be employed to more efficiently determine bugs and defects in software programs.
  • Embodiments of the present invention can take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment including both hardware and software elements.
  • the present invention is implemented in software, which includes but is not limited to firmware, resident software, microcode, etc.
  • the present invention can take the form of a computer program product accessible from a computer-usable or computer-readable medium providing program code for use by or in connection with a computer or any instruction execution system.
  • the program can also be generated automatically from other programs.
  • One approach may also be applied to find bugs in the computer program that generated the program.
  • a computer-usable or computer readable medium can be any apparatus that may include, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device.
  • the medium can be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system (or apparatus or device) or a propagation medium.
  • Examples of a computer-readable medium include a semiconductor or solid state memory, magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a rigid magnetic disk and an optical disk.
  • Current examples of optical disks include compact disk-read only memory (CD-ROM), compact disk-read/write (CD-R/W) and DVD.
  • a data processing system suitable for storing and/or executing program code may include at least one processor coupled directly or indirectly to memory elements through a system bus.
  • the memory elements can include local memory employed during actual execution of the program code, bulk storage, and cache memories which provide temporary storage of at least some program code to reduce the number of times code is retrieved from bulk storage during execution.
  • I/O devices including but not limited to keyboards, displays, pointing devices, etc. may be coupled to the system either directly or through intervening I/O controllers.
  • Network adapters may also be coupled to the system to enable the data processing system to become coupled to other data processing systems or remote printers or storage devices through intervening private or public networks.
  • Modems, cable modem and Ethernet cards are just a few of the currently available types of network adapters.
  • FIG. 1 an illustrative “C” program is shown to demonstrate and compare pointer analysis techniques.
  • the program may be in C++ or any other kind of language, including e.g., Java, Fortran, etc.
  • Pointer analysis of the program code of FIG. 1 will be employed as an example to discuss unsoundness of data flow information.
  • FIGS. 2A and 2B points-to graphs obtained by the Steensgard algorithm (see e.g., Bjarne Steensgaard. Points-to analysis in almost linear time. in The 23rd Symposium on Principles of Programming Languages, pages 32-41, 1996) and by Anderson's algorithm (see e.g., L. O. Andersen. Program analysis and specialization for the C programming language. Technical report, PhD thesis, DIKU, University of Copenhagen, May 1994), respectively, are presented for the code shown in FIG. 1 .
  • FIG. 2C illustrates the points-to graph at statement 2 (“// 2 ” in FIG. 1 ), obtained using a flow sensitive analysis. Notice that the graph is more precise than the Anderson algorithm.
  • the points-to graph of FIG. 2C is an accurate model of the run-time behavior of the piece of code in FIG. 1 , assuming all paths are feasible.
  • FIG. 2D The points-to graph of FIG. 2D is not correct (that is, it is unsound) because of the missing points-to edge q ⁇ y.
  • the relation ⁇ indicates a sound, but “less accurate” or “conservative” partial order relation.
  • less accurate or conservative points-to information includes “extra” or “redundant” points-to relations.
  • Path sensitive data flow analysis for instance, attempts to obtain accurate ssa solutions by attempting to analyze all paths, and in the presence of loops there can be infinite number of such paths. Even for programs without loops the number of paths can be exponential, and hence such path sensitive static analyses are prohibitively expensive.
  • One can also reduce the “gap” between moap and actual using tricks like elimination of infeasible paths, and thereby compute only a meet over all feasible paths solution.
  • unsound data flow information Unlike conservative data flow information, which includes “extra” or “unnecessary” information, such as extra points-to relations, in unsound data flow information there is “missing” data flow information, such as missing points-to relations. This can happen in several ways in an unsound analysis. For example, if a static analysis uses fixed-point iteration, with initial optimistic assumption, then an early termination of the iteration can give rise to an unsound result.
  • processing may prematurely terminate all the points-to nodes that p points to, when updating the points-to edges for q.
  • unsound(k) denote unsound data flow information, where k is a parameter that denotes the “distance” of unsound information from the actual.
  • ⁇ u denote “unsound partial order”. Then, the following relation is presented: actual ⁇ u unsound( k ) ⁇ u unsound( l )
  • hamming distance may be employed to define the degree of unsoundness and conservativeness.
  • Bit strings may be employed to encode data flow information. For instance, a bit may be associated for each pair of variables (x, y) at a particular point p in a program. If x points to y, the bit is set to 1; otherwise, the bit is set to 0.
  • D 2 is unsound when compared to D 1
  • UDFHD unsound data flow hamming distance
  • FIG. 3 in general it is impossible to statically compute “actual”, or for that matter moap for most non-trivial data flow problems.
  • a spectrum of conservativeness and unsoundness is illustratively shown.
  • a reason for having unsoundness is that not all paths have been examined. Unsoundness may be examined with respect to a specific application, e.g., that of finding bugs and defects.
  • Sound static analysis all paths can be analyzed. Static analysis algorithms are sound with respect to moap. Also, the data flow information is merged at control flow join points.
  • the data flow information can be computed only on those paths that trigger the bug. This will reduce the number of false positives. Notice that the resulting data flow information will be unsound with respect to moap and even “actual”.
  • FIG. 3 illustrates the relationship between different kinds of sound and unsound data flow information.
  • the unsound static analysis (usa) usa ⁇ uc mobp may include “extra” or “unnecessary” data flow information compared to mobp.
  • a similar unsound static data flow analysis algorithm can be constructed that computes the corresponding usa′ such that the amount of unsoundness in usa′ is extremely small.
  • usa′ is almost the same ssa′, except a few missing points-to edges.
  • Possible bug paths are preferably determined using test cases. Both unit tests and regression tests provide hints for identifying possible bug paths.
  • the test cases that fail for a program for computing the possible bug paths can be used.
  • T be the set of test cases that fail for a program P.
  • Pt be the projection (that is, coverage) of the P with respect to T.
  • Pt can be used as the bug paths and standard (sound) data flow analysis algorithms can be applied to compute data flow information and use the result to detect possible bugs.
  • the test case will fail because the variable x is uninitialized and *q is aliased with x.
  • the coverage of this test case is given below.
  • the pieces of code that will not be exercised by the test case were commented out as shown in FIG. 4 (and indicated by /* . . . */ characters).
  • Unsound static analysis tools may be developed, e.g., based on BEAM (see, e.g., Daniel Brand in “A software falsifier”, in 11th International Symposium on Software Reliability Engineering, 2000) within the context of testing environment and service center (aka Bugzilla) environment.
  • the tool whenever a test case fails or when a bug report is registered, the tool creates the bug's path and then applies the BEAM analysis to automatically generate a possible diagnosis for the defects and register the diagnosis as part of defect.
  • a user can use the BEAM diagnosis to localize the fault or could tailor BEAM further to help isolate the fault.
  • a framework may be built that integrates testing and static analysis to find bugs in programs in accordance with the present invention.
  • a block/flow diagram showing a system/method for debugging programs is illustratively shown.
  • a degree of unsoundness and conservativeness for data flow information that can be tolerated for a given program is determined. For example, is the program demands a highly accurate result or is considered extremely important, the unsoundness that could be tolerated may be very low.
  • the unsoundness may be based on user-selected criteria or a user selected degree of unsoundness for the program. Alternately, the degree of unsoundness may be determined by objective criteria.
  • soundness (or unsoundness) may measured by measuring a distance, e.g., a hamming distance, between reference data (ideal data) and actual data received from an unsound instance or program being considered.
  • bit strings may be employed to encode data flow information. For instance, a bit may be associated for each pair of variables (x, y) at a particular point p in a program. If x points to y, the bit is set to 1; otherwise, the bit is set to 0.
  • a meet over possible bug paths (mobp) analysis is performed.
  • a reason for having unsoundness is that not all paths have been examined. Unsoundness may be examined with respect to a specific application, e.g., that of finding bugs and defects.
  • a consequence of analyzing all paths and the subsequent merging of information is increased conservativeness of the data flow information. From the perspective of bug detection, the more conservative the data flow information is, the higher the number of false positives. Bugs do not usually occur on all paths, but occur only on certain paths (bugs that occur on all paths are easy to find and fix, so such bugs are of lesser concern).
  • the data flow information is computed only on those paths that possibly trigger a bug. This will reduce the number of false positives.
  • Meet over possible bug paths can be defined similarly to moap, except that the data flow information is computed only on possible bug paths.
  • Bug paths may be determined by testing the program and using statistical analysis to determine the most likely bug paths.
  • test cases are preferably determined using test cases. Both unit tests and regression tests provide hints for identifying possible bug paths.
  • the test cases that fail for a program for computing the possible bug paths can be used.
  • T be the set of test cases that fail for a program P.
  • Pt be the projection (that is, coverage) of the P with respect to T.
  • Pt can be used as the bug paths and standard (sound) data flow analysis algorithms can be applied to compute data flow information and use the result to detect possible bugs.
  • data flow is computed over the identified possible bug/defect paths. Whenever a test case fails or when a bug report is registered, the bug's path is created and then an analysis is applied to automatically generate a possible diagnosis for the defects and register the diagnosis as part of the defect.
  • a user may employ a fault localization algorithm or tool to determine a type and location of a fault or bug. In one example, a BEAM diagnosis is employed to localize the fault or to help isolate the fault.
  • bug are fixed or otherwise addressed.
  • System 200 may include any computer system or network, be included in a program storage device, etc.
  • System 200 may include the appropriate interfaces to permit user interactivity with the system, or system 200 may include a stand alone tool that functions independently from user interaction.
  • a program 202 may be input to system 200 for a static analysis in accordance with the present invention.
  • System 200 may include a compiler or other processing equipment that is capable of analyzing programs.
  • a determination module 204 identifies possible bug paths in a program based on statistical analysis of test cases 206 (test case models/statistics). Statistics on which portions of programs or which types of code typically generate faults may be employed. In one embodiment, a previous version of the same program may be used or the same version of the program may be used. Test cases may include e.g., unit tests and/or regression tests.
  • a static analysis module 208 performs a static analysis only on the possible bug paths identified by the determination module 204 . This may include a meet over possible bug paths analysis. In one embodiment, a degree of unsoundness is determined to dictate how the unsound static analysis (usa) is performed.
  • a fault localization module 210 locates the bugs in the program.
  • the fault localization module 210 may perform a BEAM analysis, for example.
  • the bugs or defects may then be corrected by a user or by the system or by another program or system.
  • Fault localization module 210 may provide diagnostics 212 for fixing or classifying bugs or defects in the program.

Abstract

A system and method for analyzing a program includes determining possible bug paths in a program based on statistical analysis of test cases. A static analysis is then performed only on the possible bug paths. The bugs are then located in the program.

Description

    BACKGROUND
  • 1. Technical Field
  • The present invention relates to evaluation of program, and more particularly to systems and methods which determine program soundness.
  • 2. Description of the Related Art
  • The soundness of analyses and algorithms has been a cornerstone in programming languages. A static analysis is said to be sound when the data flow information that it produces is guaranteed to be true on all program execution. Foundational theories like Meet-Over-All-Paths (MOAP) and Abstract Interpretation are the basis for sound static analysis.
  • Unfortunately, scalability becomes an issue when implementing precise and sound static analysis. Soundness of static analysis is extremely important for many applications, including code generation and code transformation. On the other hand, there are applications of static analysis where soundness is not very critical, such as for tracking bugs and defects. One can potentially construct a very simple and fast unsound static analysis to compute data flow information. Unfortunately, unsound static analysis can produce misleading data flow information, and in the context of bug finding tools, can potentially generate many false negatives and false positives.
  • Traditional static analysis based on foundational theories like the Meet-Over-All-Paths (MOAP), Maximal Fixed Point (MFP), and Abstract Interpretation may guarantee soundness of the static analysis. A static analysis is said to be sound when the data flow information that it produces is guaranteed to be true on all program execution. Soundness of static analysis is extremely important and critical for many applications of static analysis, such as code generation and optimization. There are applications of static analysis for which one can sacrifice soundness. For example, one can do away with soundness for finding bugs and defects.
  • A negative consequence of loosing soundness in such applications is increased reporting of false negatives. In software diagnosis, as in medical diagnosis, there are two kinds of error that can occur. A false positive is when there is no bug, but the results of the diagnosis come back as positive. A false negative is when there is actually a bug, but the results of diagnosis come back as negative. If a static analysis is unsound, the number of false negatives and sometimes even the number of false positives can be increased.
  • One major stumbling block in (sound) static analysis is the tradeoff between scalability and precision of the analysis. Typically, a scalable analysis is often less precise. Precision of the analysis has direct impact on the number of false positives. Precise static analysis often reduces the number of false positives.
  • Doing away with the soundness property of static analysis has been proposed to achieve scalability. In one such method, random interpretation is used for solving certain data flow problems and the resulting solution is not necessarily sound with respect deterministic MOAP. Another technique was presented in the context of model checking in SLAM for localizing faults in error traces by exploiting existence of correct traces. Delta debugging uses a correct program and a series of changes to the program to isolate the fault that caused the error.
  • A static analysis tool called PSE was employed to diagnose software failures. Given minimal information about a particular program failure, PSE automatically reconstructed a set of failing execution traces. PSE requires the specification of the failure in the form of type state information. An unsound pointer analysis was proposed which assumed that pointers passed into a procedure, in parameters, in global variables, and locations reachable from variables are all distinct.
  • Unsound static analysis techniques have been used on a number of bug patterns in programs for detecting such patterns. Unsound static analysis techniques have also been employed for finding a class of error-handling mistakes that arise from an improper release of resources.
  • Program slicing is another technique that is useful for detecting bugs and defects. A program slice is a set of all program statements that affect the value of a variable. In dynamic slicing only those statements that affect a particular test case are considered. Slicing focuses on finding statements that affect a particular value of a variable.
  • SUMMARY
  • The present invention is directed to address the question of how unsound is the data flow information generated by an unsound static analysis, and is it possible to distinguish between what is true from what is false using an unsound analysis.
  • A system and method for analyzing a program includes determining possible bug paths in a program based on statistical analysis of test cases. A static analysis is then performed only on the possible bug paths. The bugs are then located in the program.
  • Another method for analyzing a program includes determining a degree of unsoundness that can be tolerated for data flow information in a program and performing a static analysis on less than all possible paths based upon the degree of unsoundness. The data flow information is computed only on those paths that trigger a possible bug or defect, based on statistics, to find the bugs and defects in the program.
  • In alternate embodiments, the degree of unsoundness may be checked by measuring a distance between reference data and data of the program being considered. The distance may include a hamming distance. The step of performing a static analysis on less than all possible paths may include performing a meet over possible bug paths (mobp) analysis. The step of performing a meet over possible bug paths (mobp) analysis may include determining possible bug paths based on statistics of type and location of bugs in test case programs. The test case programs may include unit tests and/or regression tests. The method may further comprise determining fault locations in the program using a fault localization algorithm.
  • A system for determining faults in a program, includes a determination module which identifies possible bug paths in a program based on statistical analysis of test cases. A static analysis module performs a static analysis only on the possible bug paths identified by the determination module, and a fault localization module locates the bugs in the program.
  • These and other objects, features and advantages will become apparent from the following detailed description of illustrative embodiments thereof, which is to be read in connection with the accompanying drawings.
  • BRIEF DESCRIPTION OF DRAWINGS
  • The disclosure will provide details in the following description of preferred embodiments with reference to the following figures wherein:
  • FIG. 1 depicts programming code for an illustrative program for demonstrating aspects of the present invention;
  • FIGS. 2A-2D depict points-to graphs using different techniques for the example program of FIG. 1;
  • FIG. 3 is a diagram showing a spectrum for unsoundness and conservativeness;
  • FIG. 4 depicts the programming code of FIG. 1 having paths comment out to provide for an unsound analysis in accordance with an illustrative embodiment of the present invention;
  • FIG. 5 is a block/flow diagram showing a system/method for analyzing a program using an unsound static analysis in accordance with one embodiment of the present invention; and
  • FIG. 6 is a block diagram showing a system for analyzing a program using an unsound static analysis in accordance with another embodiment of the present invention.
  • DETAILED DESCRIPTION OF PREFFERED EMBODIMENTS
  • Embodiments of the present invention determine soundness and conservativeness of programs and access their impact on static program analysis. In a particularly useful embodiment, failed test cases are employed to determine possible bug paths within a program. These bug paths are then employed for computing data flow information for the program. The systems and methods disclosed herein may be employed to more efficiently determine bugs and defects in software programs.
  • Embodiments of the present invention can take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment including both hardware and software elements. In a preferred embodiment, the present invention is implemented in software, which includes but is not limited to firmware, resident software, microcode, etc.
  • Furthermore, the present invention can take the form of a computer program product accessible from a computer-usable or computer-readable medium providing program code for use by or in connection with a computer or any instruction execution system. The program can also be generated automatically from other programs. One approach may also be applied to find bugs in the computer program that generated the program. For the purposes of this description, a computer-usable or computer readable medium can be any apparatus that may include, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device. The medium can be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system (or apparatus or device) or a propagation medium. Examples of a computer-readable medium include a semiconductor or solid state memory, magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a rigid magnetic disk and an optical disk. Current examples of optical disks include compact disk-read only memory (CD-ROM), compact disk-read/write (CD-R/W) and DVD.
  • A data processing system suitable for storing and/or executing program code may include at least one processor coupled directly or indirectly to memory elements through a system bus. The memory elements can include local memory employed during actual execution of the program code, bulk storage, and cache memories which provide temporary storage of at least some program code to reduce the number of times code is retrieved from bulk storage during execution. Input/output or I/O devices (including but not limited to keyboards, displays, pointing devices, etc.) may be coupled to the system either directly or through intervening I/O controllers.
  • Network adapters may also be coupled to the system to enable the data processing system to become coupled to other data processing systems or remote printers or storage devices through intervening private or public networks. Modems, cable modem and Ethernet cards are just a few of the currently available types of network adapters.
  • Referring now to the drawings in which like numerals represent the same or similar elements and initially to FIG. 1, an illustrative “C” program is shown to demonstrate and compare pointer analysis techniques. The program may be in C++ or any other kind of language, including e.g., Java, Fortran, etc. Pointer analysis of the program code of FIG. 1 will be employed as an example to discuss unsoundness of data flow information.
  • Referring to FIGS. 2A and 2B, points-to graphs obtained by the Steensgard algorithm (see e.g., Bjarne Steensgaard. Points-to analysis in almost linear time. in The 23rd Symposium on Principles of Programming Languages, pages 32-41, 1996) and by Anderson's algorithm (see e.g., L. O. Andersen. Program analysis and specialization for the C programming language. Technical report, PhD thesis, DIKU, University of Copenhagen, May 1994), respectively, are presented for the code shown in FIG. 1.
  • Both algorithms are flow insensitive, sound and conservative. Steensgard's algorithm has (almost) linear time complexity whereas Anderson's algorithm has cubic time complexity. Notice that Anderson's algorithm gives a more precise answer than Steensgard's algorithm. Using flow sensitive analysis one can compute a more precise points-to graph than Anderson's algorithm. FIG. 2C illustrates the points-to graph at statement 2 (“//2” in FIG. 1), obtained using a flow sensitive analysis. Notice that the graph is more precise than the Anderson algorithm. The points-to graph of FIG. 2C is an accurate model of the run-time behavior of the piece of code in FIG. 1, assuming all paths are feasible. The points-to graph of FIGS. 2A and 2B are conservative because of extra points-to edges, such as q→z. An unsound pointer analysis algorithm, for example, can produce a points-to graph as shown in FIG. 2D. The points-to graph of FIG. 2D is not correct (that is, it is unsound) because of the missing points-to edge q→y.
  • Conservativeness Versus Unsoundness
  • Meet over all paths (MOAP) may be the best or the most precise summary of data flow information that can be computed using static analysis. Let “actual” be the actual or the ideal data flow information at a program point, let “moap” be the meet over all path solution, and let “ssa” be the sound static analysis solution. Then, the following relation holds:
    ssa≦s moap≦sactual
  • The relation ≦ indicates a sound, but “less accurate” or “conservative” partial order relation. In the context of pointer analysis, less accurate or conservative points-to information includes “extra” or “redundant” points-to relations. There have been many attempts to reduce the “gap” between ssa and moap. Path sensitive data flow analysis, for instance, attempts to obtain accurate ssa solutions by attempting to analyze all paths, and in the presence of loops there can be infinite number of such paths. Even for programs without loops the number of paths can be exponential, and hence such path sensitive static analyses are prohibitively expensive. One can also reduce the “gap” between moap and actual using tricks like elimination of infeasible paths, and thereby compute only a meet over all feasible paths solution.
  • Turning to the unsound solutions end of the spectrum. Unlike conservative data flow information, which includes “extra” or “unnecessary” information, such as extra points-to relations, in unsound data flow information there is “missing” data flow information, such as missing points-to relations. This can happen in several ways in an unsound analysis. For example, if a static analysis uses fixed-point iteration, with initial optimistic assumption, then an early termination of the iteration can give rise to an unsound result.
  • consider the Anderson's algorithm for computing a flow insensitive points-to graph for the piece of code in FIG. 1. When processing the statement q=p, processing may prematurely terminate all the points-to nodes that p points to, when updating the points-to edges for q.
  • Let unsound(k) denote unsound data flow information, where k is a parameter that denotes the “distance” of unsound information from the actual. Let ≦u denote “unsound partial order”. Then, the following relation is presented:
    actual≦uunsound(k)≦uunsound(l)
  • where, k≦dl, where ≦d is a “distance relation”.
  • The relation ≦u means that there is some missing data flow information in unsound(k) when compared to actual. In other words, actual is “less unsound” than unsound(k). In the case of pointer analysis, it can be intuitively stated that unsound(k) has k missing points-to information when compared to actual. Consider the points-to graph shown in FIG. 2D. This graph is unsound(2), since two of the actual points-to edge, p→y and q→y, are missing from the graph.
  • In one embodiment, hamming distance may be employed to define the degree of unsoundness and conservativeness. Bit strings may be employed to encode data flow information. For instance, a bit may be associated for each pair of variables (x, y) at a particular point p in a program. If x points to y, the bit is set to 1; otherwise, the bit is set to 0. Given two data flow information, D1 and D2, encoded using bit strings, the data flow hamming distance (DFHD) can be defined for D1 and D2 as the number of places where the bits differ. For example, let D=011001 and let D=111010, then DFHD between D1 and D2 is 3.
  • Unfortunately, the DFHD does not distinguish between unsoundness and conservativeness. In pointer analysis, conservativeness adds “extra” spurious points-to relations, whereas unsoundness “eliminates” useful points-to relations.
  • Consider once again the above bit string example D1=011001, and consider only those bit positions [ ] whose value is 0, that is D1[0],D1[3], and D1[4]. The corresponding positions in D2 include D2[0]=1, D2[3]=0, and D2[4]=1. At bit positions 0 and 4, D2 is more conservative that D1, since corresponding to these two bit positions D2 includes a points-to relation when compared to D1. The conservative data flow hamming distance (CDFHD) of D2 from D1 is 2. Now, consider in D1 those bit positions whose value is 1, that is, D1[1], D1[2], and D1[5]. The corresponding positions in D2 include D2[1]=1, D2[2]=1, and D[5]=0. At the bit position 5, D2 is unsound when compared to D1, and unsound data flow hamming distance (UDFHD) of D2 from D1 is 1. Keep in mind that unsoundness and conservativeness are relative terms and are complements of each other. If D2 has an UDFHD of 1 from D1, then D1 has a CDFHD of 1 from D2. Observe also that DFHD=CDFHD+UDFHD.
  • Meet Over Possible Bug Paths
  • Referring to FIG. 3, in general it is impossible to statically compute “actual”, or for that matter moap for most non-trivial data flow problems. In FIG. 3, a spectrum of conservativeness and unsoundness is illustratively shown. A reason for having unsoundness is that not all paths have been examined. Unsoundness may be examined with respect to a specific application, e.g., that of finding bugs and defects. Using sound static analysis, all paths can be analyzed. Static analysis algorithms are sound with respect to moap. Also, the data flow information is merged at control flow join points.
  • A consequence of analyzing all paths and the subsequent merging of information is increased conservativeness of the data flow information. From the perspective of bug detection, the more conservative the data flow information is, the higher the number of false positives. Bugs do not usually occur on all paths, but occur only on certain paths (bugs that occur on all paths are easy to find and fix, so such bugs are of lesser concern).
  • Advantageously, the data flow information can be computed only on those paths that trigger the bug. This will reduce the number of false positives. Notice that the resulting data flow information will be unsound with respect to moap and even “actual”.
  • Meet over possible bug paths (mobp) can be defined similarly to moap, except that the data flow information is computed only on possible bug paths. Therefore, one could say that mobp≦uc unsound(k), where the subscript uc stands for unsound and conservative.
  • FIG. 3 illustrates the relationship between different kinds of sound and unsound data flow information. The unsound static analysis (usa) usa≦uc mobp, may include “extra” or “unnecessary” data flow information compared to mobp. Given a sound static data flow analysis algorithm that computes some data flow information ssa′, a similar unsound static data flow analysis algorithm can be constructed that computes the corresponding usa′ such that the amount of unsoundness in usa′ is extremely small. In other words, in the context of pointer analysis, usa′ is almost the same ssa′, except a few missing points-to edges.
  • Notice that usa′ is unsound with respect to ssa′. Such unsound algorithms can be determined using a probabilistic approach for certain classes of data flow problems.
  • Possible bug paths are preferably determined using test cases. Both unit tests and regression tests provide hints for identifying possible bug paths. The test cases that fail for a program for computing the possible bug paths can be used. Let T be the set of test cases that fail for a program P. Let Pt be the projection (that is, coverage) of the P with respect to T. Pt can be used as the bug paths and standard (sound) data flow analysis algorithms can be applied to compute data flow information and use the result to detect possible bugs.
  • Considering the example program shown in FIG. 1 and the following unit test case:
    int main( ) {
    Foo(0) ;
    }
  • The test case will fail because the variable x is uninitialized and *q is aliased with x. The coverage of this test case is given below. The pieces of code that will not be exercised by the test case were commented out as shown in FIG. 4 (and indicated by /* . . . */ characters). Now, if a flow sensitive data flow analysis is applied to the program in FIG. 4, we obtain the points-to graph illustrated in FIG. 2D at statement 2. Note that the points-to is sound with respect to the projected code shown in FIG. 4, even though the points-to graph is unsound with respect to the original code shown in FIG. 1. One can use the resulting data flow analysis for fault localization.
  • Unsound static analysis tools may be developed, e.g., based on BEAM (see, e.g., Daniel Brand in “A software falsifier”, in 11th International Symposium on Software Reliability Engineering, 2000) within the context of testing environment and service center (aka Bugzilla) environment.
  • In accordance with one embodiment, whenever a test case fails or when a bug report is registered, the tool creates the bug's path and then applies the BEAM analysis to automatically generate a possible diagnosis for the defects and register the diagnosis as part of defect. Ultimately, a user can use the BEAM diagnosis to localize the fault or could tailor BEAM further to help isolate the fault.
  • Unsoundness and conservativeness impact on the application of static analysis, such as bug detection. Meet over possible bug paths can be used with failed test cases to identify possible bug paths and use only these paths for computing data flow information. A framework may be built that integrates testing and static analysis to find bugs in programs in accordance with the present invention.
  • Referring to FIG. 5, a block/flow diagram showing a system/method for debugging programs is illustratively shown. In block 110, a degree of unsoundness and conservativeness for data flow information that can be tolerated for a given program is determined. For example, is the program demands a highly accurate result or is considered extremely important, the unsoundness that could be tolerated may be very low. The unsoundness may be based on user-selected criteria or a user selected degree of unsoundness for the program. Alternately, the degree of unsoundness may be determined by objective criteria. In one embodiment, soundness (or unsoundness) may measured by measuring a distance, e.g., a hamming distance, between reference data (ideal data) and actual data received from an unsound instance or program being considered.
  • In one example, bit strings may be employed to encode data flow information. For instance, a bit may be associated for each pair of variables (x, y) at a particular point p in a program. If x points to y, the bit is set to 1; otherwise, the bit is set to 0. Given two data flow information sets, D1 and D2, encoded using bit strings, the data flow hamming distance (DFHD) can be defined for D1 and D2 as the number of places where the bits differ. For example, let D1=011001 and let D2=111010, then DFHD between D1 and D2 is 3.
  • In block 112, a meet over possible bug paths (mobp) analysis is performed. A reason for having unsoundness is that not all paths have been examined. Unsoundness may be examined with respect to a specific application, e.g., that of finding bugs and defects. A consequence of analyzing all paths and the subsequent merging of information is increased conservativeness of the data flow information. From the perspective of bug detection, the more conservative the data flow information is, the higher the number of false positives. Bugs do not usually occur on all paths, but occur only on certain paths (bugs that occur on all paths are easy to find and fix, so such bugs are of lesser concern).
  • In block 114, the data flow information is computed only on those paths that possibly trigger a bug. This will reduce the number of false positives. Meet over possible bug paths (mobp) can be defined similarly to moap, except that the data flow information is computed only on possible bug paths. Bug paths may be determined by testing the program and using statistical analysis to determine the most likely bug paths.
  • In block 114, using the unsound static analysis (usa) approach (e.g., not all paths are computed) compute some data flow information using a probabilistic approach for certain classes of data flow problems. In block 116, possible bug paths are preferably determined using test cases. Both unit tests and regression tests provide hints for identifying possible bug paths. The test cases that fail for a program for computing the possible bug paths can be used. Let T be the set of test cases that fail for a program P. Let Pt be the projection (that is, coverage) of the P with respect to T. Pt can be used as the bug paths and standard (sound) data flow analysis algorithms can be applied to compute data flow information and use the result to detect possible bugs. One can use the resulting data flow analysis for fault localization.
  • In block 118, data flow is computed over the identified possible bug/defect paths. Whenever a test case fails or when a bug report is registered, the bug's path is created and then an analysis is applied to automatically generate a possible diagnosis for the defects and register the diagnosis as part of the defect. In block, 120, a user may employ a fault localization algorithm or tool to determine a type and location of a fault or bug. In one example, a BEAM diagnosis is employed to localize the fault or to help isolate the fault. In block 122, bug are fixed or otherwise addressed.
  • Referring to FIG. 6, a system 200 for determining faults in a program is illustratively shown. System 200 may include any computer system or network, be included in a program storage device, etc. System 200 may include the appropriate interfaces to permit user interactivity with the system, or system 200 may include a stand alone tool that functions independently from user interaction.
  • A program 202 may be input to system 200 for a static analysis in accordance with the present invention. System 200 may include a compiler or other processing equipment that is capable of analyzing programs.
  • A determination module 204 identifies possible bug paths in a program based on statistical analysis of test cases 206 (test case models/statistics). Statistics on which portions of programs or which types of code typically generate faults may be employed. In one embodiment, a previous version of the same program may be used or the same version of the program may be used. Test cases may include e.g., unit tests and/or regression tests.
  • A static analysis module 208 performs a static analysis only on the possible bug paths identified by the determination module 204. This may include a meet over possible bug paths analysis. In one embodiment, a degree of unsoundness is determined to dictate how the unsound static analysis (usa) is performed.
  • Once analyzed a fault localization module 210 locates the bugs in the program. The fault localization module 210 may perform a BEAM analysis, for example. The bugs or defects may then be corrected by a user or by the system or by another program or system. Fault localization module 210 may provide diagnostics 212 for fixing or classifying bugs or defects in the program.
  • Having described preferred embodiments of a system and method for static analysis using fault paths (which are intended to be illustrative and not limiting), it is noted that modifications and variations can be made by persons skilled in the art in light of the above teachings. It is therefore to be understood that changes may be made in the particular embodiments disclosed which are within the scope and spirit of the invention as outlined by the appended claims. Having thus described aspects of the invention, with the details and particularity required by the patent laws, what is claimed and desired protected by Letters Patent is set forth in the appended claims.

Claims (26)

1. A method for analyzing a program, comprising the steps of:
determining possible bug paths in a program based on statistical analysis of test cases;
performing a static analysis only on the possible bug paths; and
locating the bugs in the program.
2. The method as recited in claim 1, wherein the step of determining includes performing a meet over possible bug paths (mobp) analysis which includes determining possible bug paths based on statistics of type and location of bugs in test cases.
3. The method as recited in claim 2, wherein the test case programs include unit tests and/or regression tests.
4. The method as recited in claim 1, further comprising determining fault locations in the program using a fault localization algorithm.
5. A computer program product comprising a computer useable medium including a computer readable program for analyzing a software program, wherein the computer readable program when executed on a computer causes the computer to perform the steps of:
determining possible bug paths in a program based on statistical analysis of test cases;
performing a static analysis only on the possible bug paths; and
locating the bugs in the program.
6. The computer program product as recited in claim 5, wherein the step of determining includes performing a meet over possible bug paths (mobp) analysis which includes determining possible bug paths based on statistics of type and location of bugs in test cases.
7. The computer program product as recited in claim 5, wherein the test case programs include unit tests and/or regression tests.
8. The computer program product as recited in claim 5, further comprising determining fault locations in the program using a fault localization algorithm.
9. A method for analyzing a program, comprising the steps of:
determining a degree of unsoundness that can be tolerated for data flow information in a program;
performing a static analysis on less than all possible paths based upon the degree of unsoundness;
computing the data flow information only on those paths that trigger a possible bug or defect, based on statistics, to find the bugs and defects in the program.
10. The method as recited in claim 9, wherein the degree of unsoundness is checked by measuring a distance between reference data and data of the program being considered.
11. The method as recited in claim 9, wherein the distance includes a hamming distance.
12. The method as recited in claim 9, wherein the step of performing a static analysis on less than all possible paths includes performing a meet over possible bug paths (mobp) analysis.
13. The method as recited in claim 12, wherein the step of performing a meet over possible bug paths (mobp) analysis includes determining possible bug paths based on statistics of type and location of bugs in test case programs.
14. The method as recited in claim 13, wherein the test case programs includes unit tests and/or regression tests.
15. The method as recited in claim 9, further comprising determining fault locations in the program using a fault localization algorithm.
16. A computer program product comprising a computer useable medium including a computer readable program for analyzing a software program, wherein the computer readable program when executed on a computer causes the computer to perform the steps of:
determining a degree of unsoundness for data flow information in a software program;
performing a static analysis on less than all possible paths based upon the degree of unsoundness;
computing the data flow information only on those paths that trigger a bug or defect to find the bugs in defects in the software program.
17. The computer program product as recited in claim 16, wherein the degree of soundness is checked by measuring a distance between reference data and data of the software program being considered.
18. The computer program product as recited in claim 16, wherein the distance includes a hamming distance.
19. The computer program product as recited in claim 16, wherein the step of performing a static analysis on less than all possible paths includes performing a meet over possible bug paths (mobp) analysis.
20. The computer program product as recited in claim 19, wherein the step of performing a meet over possible bug paths (mobp) analysis includes determining possible bug paths based on statistics of type and location of bugs in test case programs.
21. The computer program product as recited in claim 20, wherein the test case programs includes unit tests and/or regression tests.
22. The computer program product as recited in claim 16, further comprising determining fault locations in the software program using a fault localization algorithm.
23. A system for determining faults in a program, comprising:
a determination module which identifies possible bug paths in a program based on statistical analysis of test cases;
a static analysis module which performs a static analysis only on the possible bug paths identified by the determination module; and
a fault localization module which locates the bugs in the program.
24. The system as recited in claim 23, wherein the determination module includes a meet over possible bug paths (mobp) analysis program which determines possible bug paths based on statistics of type and location of bugs in failed test cases.
25. The system as recited in claim 23, wherein the test case programs include unit tests and/or regression tests.
26. The system as recited in claim 23, wherein the fault localization module performs a BEAM analysis.
US11/183,157 2005-07-15 2005-07-15 System and method for static analysis using fault paths Abandoned US20070016894A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US11/183,157 US20070016894A1 (en) 2005-07-15 2005-07-15 System and method for static analysis using fault paths
US12/132,018 US8813033B2 (en) 2005-07-15 2008-06-03 System and method for static analysis using fault paths

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/183,157 US20070016894A1 (en) 2005-07-15 2005-07-15 System and method for static analysis using fault paths

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US12/132,018 Continuation US8813033B2 (en) 2005-07-15 2008-06-03 System and method for static analysis using fault paths

Publications (1)

Publication Number Publication Date
US20070016894A1 true US20070016894A1 (en) 2007-01-18

Family

ID=37663031

Family Applications (2)

Application Number Title Priority Date Filing Date
US11/183,157 Abandoned US20070016894A1 (en) 2005-07-15 2005-07-15 System and method for static analysis using fault paths
US12/132,018 Active 2029-02-19 US8813033B2 (en) 2005-07-15 2008-06-03 System and method for static analysis using fault paths

Family Applications After (1)

Application Number Title Priority Date Filing Date
US12/132,018 Active 2029-02-19 US8813033B2 (en) 2005-07-15 2008-06-03 System and method for static analysis using fault paths

Country Status (1)

Country Link
US (2) US20070016894A1 (en)

Cited By (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070220346A1 (en) * 2006-02-17 2007-09-20 Dams Dennis R Method and apparatus for evaluating paths in a state machine
US20080034353A1 (en) * 2006-06-27 2008-02-07 Microsoft Corporation Counterexample driven refinement for abstract interpretation
US20080184196A1 (en) * 2007-01-30 2008-07-31 Kabushiki Kaisha Toshiba Program developing apparatus, program developing method and computer readable medium
US20080201760A1 (en) * 2007-02-21 2008-08-21 International Business Machines Corporation System and method for the automatic evaluation of existing security policies and automatic creation of new security policies
US20080201693A1 (en) * 2007-02-21 2008-08-21 International Business Machines Corporation System and method for the automatic identification of subject-executed code and subject-granted access rights
US20090249298A1 (en) * 2008-03-31 2009-10-01 Blount Lawrence C Evaluation of Software based on Change History
US20090249307A1 (en) * 2008-03-26 2009-10-01 Kabushiki Kaisha Toshiba Program analysis apparatus, program analysis method, and program storage medium
US20100005454A1 (en) * 2008-07-07 2010-01-07 Nec Laboratories America, Inc. Program verification through symbolic enumeration of control path programs
US20100333201A1 (en) * 2009-06-30 2010-12-30 International Business Machines Corporation System, method, and program for determining validity of string
US20110030061A1 (en) * 2009-07-14 2011-02-03 International Business Machines Corporation Detecting and localizing security vulnerabilities in client-server application
US20110078660A1 (en) * 2009-09-29 2011-03-31 International Business Machines Corporation Metamodeling Contextual Navigation of Computer Software Applications
US20110087892A1 (en) * 2009-10-13 2011-04-14 International Business Machines Corporation Eliminating False Reports of Security Vulnerabilities when Testing Computer Software
US20110131656A1 (en) * 2009-11-30 2011-06-02 International Business Machines Corporation Identifying security vulnerability in computer software
US20120054552A1 (en) * 2010-09-01 2012-03-01 International Business Machines Corporation Fault localization using directed test generation
US20120054553A1 (en) * 2010-09-01 2012-03-01 International Business Machines Corporation Fault localization using condition modeling and return value modeling
US8166464B2 (en) 2008-06-27 2012-04-24 Microsoft Corporation Analysis and detection of soft hang responsiveness program errors
US20120167060A1 (en) * 2010-12-27 2012-06-28 Avaya Inc. System and Method for Software Immunization Based on Static and Dynamic Analysis
US20130086686A1 (en) * 2011-09-29 2013-04-04 International Business Machines Corporation Automated Detection of Flaws and Incompatibility Problems in Information Flow Downgraders
US20130111449A1 (en) * 2011-10-26 2013-05-02 International Business Machines Corporation Static analysis with input reduction
US20130159975A1 (en) * 2011-12-19 2013-06-20 International Business Machines Corporation Detecting a broken point in a web application automatic test case
US8528095B2 (en) 2010-06-28 2013-09-03 International Business Machines Corporation Injection context based static analysis of computer software applications
US8584099B1 (en) * 2007-06-29 2013-11-12 Carnegie Mellon University Apparatuses and methods for producing runtime architectures of computer program modules
US20140013307A1 (en) * 2010-11-21 2014-01-09 Verifyter Ab Method and apparatus for automatic diagnosis of software failures
US8667584B2 (en) 2010-12-15 2014-03-04 International Business Machines Corporation Formal analysis of the quality and conformance of information flow downgraders
US8732676B1 (en) * 2007-08-29 2014-05-20 Parasoft Corporation System and method for generating unit test based on recorded execution paths
US8750461B2 (en) 2012-09-28 2014-06-10 International Business Machines Corporation Elimination of typing noise from conference calls
US20140244645A1 (en) * 2013-02-28 2014-08-28 Tata Consultancy Services Limited System and method to provide grouping of warnings generated during static analysis
US20140289712A1 (en) * 2013-03-20 2014-09-25 Nec Laboratories America, Inc. Effective Lifetime Dependency Analysis and Typestate Analysis
US8850589B2 (en) 2012-09-25 2014-09-30 International Business Machines Corporation Training classifiers for program analysis
US9612937B2 (en) 2012-09-05 2017-04-04 Microsoft Technology Licensing, Llc Determining relevant events in source code analysis
CN106815135A (en) * 2015-11-30 2017-06-09 阿里巴巴集团控股有限公司 leak detection method and device
CN107491388A (en) * 2017-07-28 2017-12-19 深圳市元征科技股份有限公司 Bug method and device in a kind of positioning program code
US10509693B2 (en) 2015-03-04 2019-12-17 Verifyter Ab Method for identifying a cause for a failure of a test
US10678673B2 (en) * 2017-07-12 2020-06-09 Fujitsu Limited Software program fault localization
CN111930630A (en) * 2020-08-17 2020-11-13 电信科学技术第十研究所有限公司 Big data test case generation method and device based on data flow
CN113535523A (en) * 2021-07-30 2021-10-22 北京中科天齐信息技术有限公司 Target program defect report screening method and device

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8527965B2 (en) * 2008-04-14 2013-09-03 Oracle America, Inc. Layered static program analysis framework for software testing
US8806450B1 (en) * 2008-06-26 2014-08-12 Juniper Networks, Inc. Static analysis in selective software regression testing
US8443342B2 (en) * 2010-06-01 2013-05-14 Microsoft Corporation Static analysis using interactive and integration tools
US8572434B2 (en) 2010-09-29 2013-10-29 Sepaton, Inc. System health monitor
US8386850B2 (en) * 2010-09-29 2013-02-26 Sepaton, Inc. System health monitor
US8490057B2 (en) 2010-09-30 2013-07-16 International Business Machines Corporation Confidence-based static analysis
US8671397B2 (en) 2011-09-27 2014-03-11 International Business Machines Corporation Selective data flow analysis of bounded regions of computer software applications
US20130179863A1 (en) * 2012-01-11 2013-07-11 Microsoft Corporation Bug variant detection using program analysis and pattern identification
US8745599B2 (en) * 2012-01-19 2014-06-03 National Tsing Hua University Probabilistic pointer analysis method using SSA form
US9021592B2 (en) 2012-07-12 2015-04-28 International Business Machines Corporation Source code analysis of inter-related code bases
US9262282B2 (en) * 2012-09-04 2016-02-16 Opshub, Inc. System and method for synchornisation of data and recovery of failures during synchronization between two systems
US8943600B2 (en) 2012-10-26 2015-01-27 International Business Machines Corporation Weighted security analysis
US20140373157A1 (en) 2013-06-14 2014-12-18 International Business Machines Corporation After-the-Fact Configuration of Static Analysis Tools Able to Reduce User Burden
US9389984B2 (en) 2013-09-10 2016-07-12 International Business Machines Corporation Directing verification towards bug-prone portions
IN2013MU03461A (en) * 2013-10-31 2015-07-17 Tata Consultancy Services Ltd
US9454659B1 (en) 2014-08-15 2016-09-27 Securisea, Inc. Software vulnerabilities detection system and methods
US10599852B2 (en) 2014-08-15 2020-03-24 Securisea, Inc. High performance software vulnerabilities detection system and methods
US9824214B2 (en) 2014-08-15 2017-11-21 Securisea, Inc. High performance software vulnerabilities detection system and methods
US10007594B2 (en) 2015-07-21 2018-06-26 International Business Machines Corporation Proactive cognitive analysis for inferring test case dependencies
US10210077B2 (en) * 2016-05-18 2019-02-19 International Business Machines Corporation Using multiple sequence alignment to identify security vulnerability code paths
US11789724B2 (en) * 2016-08-23 2023-10-17 International Business Machines Corporation Machine learning to facilitate incremental static program analysis
CN106776295B (en) * 2016-11-30 2020-09-22 北京广利核系统工程有限公司 Software FMEA analysis method based on Altarica formal language
US11263116B2 (en) 2019-01-24 2022-03-01 International Business Machines Corporation Champion test case generation
US11422924B2 (en) 2019-06-13 2022-08-23 International Business Machines Corporation Customizable test set selection using code flow trees
US11232020B2 (en) * 2019-06-13 2022-01-25 International Business Machines Corporation Fault detection using breakpoint value-based fingerprints of failing regression test cases
US11301357B1 (en) * 2019-09-26 2022-04-12 Amazon Technologies, Inc. Method to check application programming interface correctness in software

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030121027A1 (en) * 2000-06-23 2003-06-26 Hines Kenneth J. Behavioral abstractions for debugging coordination-centric software designs
US7055065B2 (en) * 2001-09-05 2006-05-30 International Business Machines Corporation Method, system, and computer program product for automated test generation for non-deterministic software using state transition rules
US7089542B2 (en) * 2002-12-13 2006-08-08 International Business Machines Corporation Method and apparatus for finding errors in software programs using satisfiability of constraints
US7316005B2 (en) * 2004-01-26 2008-01-01 Microsoft Corporation Data race detection using sequential program analysis
US7503037B2 (en) * 2004-04-02 2009-03-10 Bea Systems, Inc. System and method for identifying bugs in software source code, using information from code coverage tools and source control tools to determine bugs introduced within a time or edit interval
US7376941B2 (en) * 2004-04-16 2008-05-20 Agility Design Solutions Inc. Inferring function calls in an ambiguous language computer program
US7539977B1 (en) * 2005-01-21 2009-05-26 Xilinx, Inc. Automatic bug isolation in computer programming languages
US7661097B2 (en) * 2005-04-05 2010-02-09 Cisco Technology, Inc. Method and system for analyzing source code
US7493602B2 (en) * 2005-05-02 2009-02-17 International Business Machines Corporation Methods and arrangements for unified program analysis
US8683441B2 (en) * 2006-01-11 2014-03-25 International Business Machines Corporation Software equivalence checking
US20070250820A1 (en) * 2006-04-20 2007-10-25 Microsoft Corporation Instruction level execution analysis for debugging software
US8713513B2 (en) * 2006-12-13 2014-04-29 Infosys Limited Evaluating programmer efficiency in maintaining software systems

Cited By (62)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070220346A1 (en) * 2006-02-17 2007-09-20 Dams Dennis R Method and apparatus for evaluating paths in a state machine
US7536602B2 (en) * 2006-02-17 2009-05-19 Alcatel-Lucent Usa Inc. Method and apparatus for evaluating paths in a state machine
US7509534B2 (en) * 2006-06-27 2009-03-24 Microsoft Corporation Counterexample driven refinement for abstract interpretation
US20080034353A1 (en) * 2006-06-27 2008-02-07 Microsoft Corporation Counterexample driven refinement for abstract interpretation
US8117590B2 (en) * 2007-01-30 2012-02-14 Kabushiki Kaisha Toshiba Program developing apparatus, program developing method and computer readable medium
US20080184196A1 (en) * 2007-01-30 2008-07-31 Kabushiki Kaisha Toshiba Program developing apparatus, program developing method and computer readable medium
US20080201760A1 (en) * 2007-02-21 2008-08-21 International Business Machines Corporation System and method for the automatic evaluation of existing security policies and automatic creation of new security policies
US8332939B2 (en) 2007-02-21 2012-12-11 International Business Machines Corporation System and method for the automatic identification of subject-executed code and subject-granted access rights
US8230477B2 (en) * 2007-02-21 2012-07-24 International Business Machines Corporation System and method for the automatic evaluation of existing security policies and automatic creation of new security policies
US20080201693A1 (en) * 2007-02-21 2008-08-21 International Business Machines Corporation System and method for the automatic identification of subject-executed code and subject-granted access rights
US8584099B1 (en) * 2007-06-29 2013-11-12 Carnegie Mellon University Apparatuses and methods for producing runtime architectures of computer program modules
US8732676B1 (en) * 2007-08-29 2014-05-20 Parasoft Corporation System and method for generating unit test based on recorded execution paths
US20090249307A1 (en) * 2008-03-26 2009-10-01 Kabushiki Kaisha Toshiba Program analysis apparatus, program analysis method, and program storage medium
US8448141B2 (en) * 2008-03-31 2013-05-21 International Business Machines Corporation Evaluation of software based on change history
US20090249298A1 (en) * 2008-03-31 2009-10-01 Blount Lawrence C Evaluation of Software based on Change History
US8166464B2 (en) 2008-06-27 2012-04-24 Microsoft Corporation Analysis and detection of soft hang responsiveness program errors
US8402440B2 (en) * 2008-07-07 2013-03-19 Nec Laboratories America, Inc. Program verification through symbolic enumeration of control path programs
US20100005454A1 (en) * 2008-07-07 2010-01-07 Nec Laboratories America, Inc. Program verification through symbolic enumeration of control path programs
US8365280B2 (en) 2009-06-30 2013-01-29 International Business Machines Corporation System, method, and program for determining validity of string
US20100333201A1 (en) * 2009-06-30 2010-12-30 International Business Machines Corporation System, method, and program for determining validity of string
US20110030061A1 (en) * 2009-07-14 2011-02-03 International Business Machines Corporation Detecting and localizing security vulnerabilities in client-server application
US8516449B2 (en) * 2009-07-14 2013-08-20 International Business Machines Corporation Detecting and localizing security vulnerabilities in client-server application
US8843896B2 (en) * 2009-09-29 2014-09-23 International Business Machines Corporation Metamodeling contextual navigation of computer software applications
US20110078660A1 (en) * 2009-09-29 2011-03-31 International Business Machines Corporation Metamodeling Contextual Navigation of Computer Software Applications
US8826232B2 (en) * 2009-09-29 2014-09-02 International Business Machines Corporation Metamodeling contextual navigation of computer software applications
US20130191813A1 (en) * 2009-09-29 2013-07-25 International Business Machines Corporation Metamodeling Contextual Navigation of Computer Software Applications
US20110087892A1 (en) * 2009-10-13 2011-04-14 International Business Machines Corporation Eliminating False Reports of Security Vulnerabilities when Testing Computer Software
US8584246B2 (en) 2009-10-13 2013-11-12 International Business Machines Corporation Eliminating false reports of security vulnerabilities when testing computer software
US8468605B2 (en) 2009-11-30 2013-06-18 International Business Machines Corporation Identifying security vulnerability in computer software
US20110131656A1 (en) * 2009-11-30 2011-06-02 International Business Machines Corporation Identifying security vulnerability in computer software
US8528095B2 (en) 2010-06-28 2013-09-03 International Business Machines Corporation Injection context based static analysis of computer software applications
US9043761B2 (en) * 2010-09-01 2015-05-26 International Business Machines Corporation Fault localization using condition modeling and return value modeling
US8387018B2 (en) * 2010-09-01 2013-02-26 International Business Machines Corporation Fault localization using directed test generation
US20120054553A1 (en) * 2010-09-01 2012-03-01 International Business Machines Corporation Fault localization using condition modeling and return value modeling
US20120054552A1 (en) * 2010-09-01 2012-03-01 International Business Machines Corporation Fault localization using directed test generation
US9032371B2 (en) * 2010-11-21 2015-05-12 Verifyter Ab Method and apparatus for automatic diagnosis of software failures
US20140013307A1 (en) * 2010-11-21 2014-01-09 Verifyter Ab Method and apparatus for automatic diagnosis of software failures
US8667584B2 (en) 2010-12-15 2014-03-04 International Business Machines Corporation Formal analysis of the quality and conformance of information flow downgraders
US8701186B2 (en) 2010-12-15 2014-04-15 International Business Machines Corporation Formal analysis of the quality and conformance of information flow downgraders
US8621441B2 (en) * 2010-12-27 2013-12-31 Avaya Inc. System and method for software immunization based on static and dynamic analysis
US20120167060A1 (en) * 2010-12-27 2012-06-28 Avaya Inc. System and Method for Software Immunization Based on Static and Dynamic Analysis
US8881300B2 (en) 2011-09-29 2014-11-04 International Business Machines Corporation Automated detection of flaws and incompatibility problems in information flow downgraders
US20130086686A1 (en) * 2011-09-29 2013-04-04 International Business Machines Corporation Automated Detection of Flaws and Incompatibility Problems in Information Flow Downgraders
US8769696B2 (en) * 2011-09-29 2014-07-01 International Business Machines Corporation Automated detection of flaws and incompatibility problems in information flow downgraders
US10157049B2 (en) * 2011-10-26 2018-12-18 International Business Machines Corporation Static analysis with input reduction
US20130111449A1 (en) * 2011-10-26 2013-05-02 International Business Machines Corporation Static analysis with input reduction
US9152731B2 (en) * 2011-12-19 2015-10-06 International Business Machines Corporation Detecting a broken point in a web application automatic test case
US20130159975A1 (en) * 2011-12-19 2013-06-20 International Business Machines Corporation Detecting a broken point in a web application automatic test case
US9612937B2 (en) 2012-09-05 2017-04-04 Microsoft Technology Licensing, Llc Determining relevant events in source code analysis
US8918886B2 (en) 2012-09-25 2014-12-23 International Business Machines Corporation Training classifiers for program analysis
US8850589B2 (en) 2012-09-25 2014-09-30 International Business Machines Corporation Training classifiers for program analysis
US8767922B2 (en) 2012-09-28 2014-07-01 International Business Machines Corporation Elimination of typing noise from conference calls
US8750461B2 (en) 2012-09-28 2014-06-10 International Business Machines Corporation Elimination of typing noise from conference calls
US20140244645A1 (en) * 2013-02-28 2014-08-28 Tata Consultancy Services Limited System and method to provide grouping of warnings generated during static analysis
US9384017B2 (en) * 2013-02-28 2016-07-05 Tata Consultancy Services Limited System and method to provide grouping of warnings generated during static analysis
US20140289712A1 (en) * 2013-03-20 2014-09-25 Nec Laboratories America, Inc. Effective Lifetime Dependency Analysis and Typestate Analysis
US10509693B2 (en) 2015-03-04 2019-12-17 Verifyter Ab Method for identifying a cause for a failure of a test
CN106815135A (en) * 2015-11-30 2017-06-09 阿里巴巴集团控股有限公司 leak detection method and device
US10678673B2 (en) * 2017-07-12 2020-06-09 Fujitsu Limited Software program fault localization
CN107491388A (en) * 2017-07-28 2017-12-19 深圳市元征科技股份有限公司 Bug method and device in a kind of positioning program code
CN111930630A (en) * 2020-08-17 2020-11-13 电信科学技术第十研究所有限公司 Big data test case generation method and device based on data flow
CN113535523A (en) * 2021-07-30 2021-10-22 北京中科天齐信息技术有限公司 Target program defect report screening method and device

Also Published As

Publication number Publication date
US8813033B2 (en) 2014-08-19
US20080276228A1 (en) 2008-11-06

Similar Documents

Publication Publication Date Title
US8813033B2 (en) System and method for static analysis using fault paths
Cotroneo et al. How do bugs surface? A comprehensive study on the characteristics of software bugs manifestation
US8645761B2 (en) Precise fault localization
US7882495B2 (en) Bounded program failure analysis and correction
Abreu et al. Simultaneous debugging of software faults
US20070006170A1 (en) Execution failure investigation using static analysis
Xie et al. Checking inside the black box: Regression testing by comparing value spectra
Perez et al. A dynamic code coverage approach to maximize fault localization efficiency
Schroeder et al. Generating expected results for automated black-box testing
Strandberg et al. Intermittently failing tests in the embedded systems domain
CN111581036B (en) Internet of things fault detection method, detection system and storage medium
Feyzi et al. A program slicing-based method for effective detection of coincidentally correct test cases
Nayrolles et al. A bug reproduction approach based on directed model checking and crash traces
Panichella et al. Test smells 20 years later: detectability, validity, and reliability
Jin et al. Concolic metamorphic debugging
US20210286711A1 (en) System testing infrastructure for analyzing and preventing soft failure in active environment
Jiang et al. Fuzzing error handling code in device drivers based on software fault injection
Perez et al. A survey on fault localization techniques
US11593256B2 (en) System testing infrastructure for detecting soft failure in active environment
Peralta Probabilistic error detection and diagnosis in large-scale distributed applications
Gaber Abd El-Wahab et al. Graph Mining for Software Fault Localization: An Edge Ranking based Approach
Gerrard et al. Comprehensive failure characterization
Tiwari et al. Spectrum-based fault localization in regression testing
Tu et al. A search based context-Aware approach for understanding and localizing the fault via weighted call graph
Micskei et al. Robustness testing techniques for high availability middleware solutions

Legal Events

Date Code Title Description
AS Assignment

Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, NEW Y

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:SREEDHAR, VUGRANAM CHAKRAVARTHY;REEL/FRAME:016612/0144

Effective date: 20050707

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION