Software program repair

US10152406B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-10152406-B2
Application numberUS-201514835561-A
CountryUS
Kind codeB2
Filing dateAug 25, 2015
Priority dateAug 25, 2015
Publication dateDec 11, 2018
Grant dateDec 11, 2018

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

According to an aspect of an embodiment, one or more systems or methods may be configured to locate a fault in a software program using a test suite. The systems or methods may be further configured to modify, using a repair template, the software program in response to locating the fault. In addition, the systems or methods may be configured to determine whether the modification satisfies an anti-pattern condition. The anti-pattern condition may indicate whether the modification is improper. The systems or methods may also be configured to disallow the modification in response to the modification satisfying the anti-pattern condition or perform further testing on the software program, as modified, in response to the modification not satisfying the anti-pattern condition.

First claim

Opening claim text (preview).

What is claimed is: 1. A method comprising: generating a first program representation with respect to a software program, the first program representation including one or more of the following: a first control-flow graph and a first data-flow graph; locating a fault in the software program using a test suite; modifying, using a repair template, the software program in response to locating the fault; generating a second program representation with respect to the software program after modifying the software program, the second program representation including one or more of the following: a second control-flow graph and a second data-flow graph; detecting a difference in the second program representation with respect to the first program representation based on a comparison between the first program representation and the second program representation; comparing the difference in the second program representation with respect to the first program representation against one or more of a plurality of anti-pattern conditions to determine whether the difference satisfies at least one of the plurality of anti-pattern conditions, the plurality of anti-pattern conditions indicating types of modifications that are improper and being based on one or more of the following software program modifications: deletion of a “return” statement; deletion of an “exit” statement; deletion of a statement that includes a method call with a name that matches a regular expression; deletion of an “assert” statement; deletion of all statements related to a control-flow graph node; addition of a negation of a predicate of a path condition; addition of a “true” predicate that disables a check of a condition; addition of a “false” predicate that disables a condition; insertion of a return statement in a control-flow block that is not a last statement in the control-flow block; deletion of a variable definition such that a corresponding variable is undefined at its first use; and deletion of an assignment statement of a loop variable inside of a loop when a loop condition of the loop is based on the loop variable; and disallowing the modification of the software program in response to the comparison of the difference against one or more of the plurality of anti-pattern conditions indicating that the difference satisfies at least one of the plurality of anti-pattern conditions. 2. The method of claim 1 , wherein the plurality of anti-pattern conditions include a deletion of a control-flow graph exit path. 3. The method of claim 1 , wherein the plurality of anti-pattern conditions include a deletion of a control-flow graph node. 4. The method of claim 1 , wherein the plurality of anti-pattern conditions include an insertion of a control-flow graph return path prior to a return node of a previous control-flow graph. 5. The method of claim 1 , wherein the plurality of anti-pattern conditions include a deletion of an incoming edge of a data-flow node. 6. The method of claim 1 , wherein the plurality of anti-pattern conditions include breaking of a data-flow loop that includes a first data-flow node and a second data-flow node in which the first data-flow node corresponds to a loop condition statement of a loop of the software program and the second data-flow node corresponds to an assignment statement that is within the loop of the software program and that is related to a variable of the loop condition statement. 7. Non-transitory computer-readable storage media including computer-executable instructions configured to, in response to execution by one or more processors, cause a system to perform operations, the operations comprising: generating a first flow graph with respect to a software program, the first flow graph including one or more of the following: a first control-flow graph and a first data-flow graph; locating a fault in the software program using a test suite; modifying, using a repair template after generating the first flow graph, the software program in response to locating the fault; generating a second flow graph with respect to the software program after modifying the software program, the second flow graph including one or more of the following: a second control-flow graph and a second data-flow graph; detecting a difference in the second flow graph with respect to the first flow graph based on a comparison between the first flow graph and the second flow graph; and comparing the difference in the second flow graph with respect to the first flow graph against one or more of a plurality of anti-pattern conditions to determine whether the difference satisfies at least one of the plurality of anti-pattern conditions, the plurality of anti-pattern conditions indicating types of modifications that are improper and being based on one or more of the following software program modifications: deletion of a “return” statement; deletion of an “exit” statement; deletion of a statement that includes a method call with a name that matches a regular expression; deletion of an “assert” statement; deletion of all statements related to a control-flow graph node; addition of a negation of a predicate of a path condition; addition of a “true” predicate that disables a check of a condition; addition of a “false” predicate that disables a condition; insertion of a return statement in a control-flow block that is not a last statement in the control-flow block; deletion of a variable definition such that a corresponding variable is undefined at its first use; and deletion of an assignment statement of a loop variable inside of a loop when a loop condition of the loop is based on the loop variable; determining that the modification is improper based on the comparison of the difference against one or more of the plurality of anti-pattern conditions indicating that the difference satisfies at least one of the plurality of anti-pattern conditions; and disallowing the modification in response to determining that the modification is improper. 8. The non-transitory computer-readable storage media of claim 7 , wherein the plurality of anti-pattern conditions include one or more of the following: a deletion of a control-flow graph exit path; a deletion of a control-flow graph node; and an insertion of a control-flow graph return path prior to a return node of a previous control-flow graph. 9. The non-transitory computer-readable storage media of claim 7 , wherein the plurality of anti-pattern conditions include one or more of the following: a deletion of an incoming edge of a data-flow node; and breaking of a data-flow loop that includes a first data-flow node and a second data-flow node in which the first data-flow node corresponds to a loop condition statement of a loop of the software program and the second data-flow node corresponds to an assignment statement that is within the loop of the software program and that is related to a variable of the loop condition statement. 10. A system comprising: one or more processors; and one or more computer-readable storage media communicatively coupled to the one or more processors and including computer-executable instructions configured to, in response to execution by the one or more processors, cause the system to perform operations, the operations comprising: generating a first program representation with respect to a software program, the first program representation including one or more of the following: a first control-flow graph and a first data-flow graph; locating a fault in the software program using a test suite; modifying, using a repair template, the software program in response to locating the fault; generating a second program representation with respect to the software program after modifying the

Assignees

Inventors

Classifications

  • for test execution, e.g. scheduling of test suites · CPC title

  • G06F8/71Primary

    Version control (security arrangements therefor G06F21/57); Configuration management · CPC title

  • Analysis of software for verifying properties of programs (testing of software G06F11/3668) · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US10152406B2 cover?
According to an aspect of an embodiment, one or more systems or methods may be configured to locate a fault in a software program using a test suite. The systems or methods may be further configured to modify, using a repair template, the software program in response to locating the fault. In addition, the systems or methods may be configured to determine whether the modification satisfies an a…
Who is the assignee on this patent?
Fujitsu Ltd, Fujistu Ltd
What technology area does this patent fall under?
Primary CPC classification G06F11/3688. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Dec 11 2018 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 3 related publications on this page (citations in our corpus or others sharing the same primary CPC).