CN102495800A - Iterative refinement method for abstractly valuing variables in Do statement - Google Patents

Iterative refinement method for abstractly valuing variables in Do statement Download PDF

Info

Publication number
CN102495800A
CN102495800A CN2011104001739A CN201110400173A CN102495800A CN 102495800 A CN102495800 A CN 102495800A CN 2011104001739 A CN2011104001739 A CN 2011104001739A CN 201110400173 A CN201110400173 A CN 201110400173A CN 102495800 A CN102495800 A CN 102495800A
Authority
CN
China
Prior art keywords
interval
thisdomain
iteration
data stream
lastdomain
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.)
Pending
Application number
CN2011104001739A
Other languages
Chinese (zh)
Inventor
金大海
宫云战
赵云山
肖庆
王思岚
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.)
Beijing University of Posts and Telecommunications
Original Assignee
Beijing University of Posts and Telecommunications
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 Beijing University of Posts and Telecommunications filed Critical Beijing University of Posts and Telecommunications
Priority to CN2011104001739A priority Critical patent/CN102495800A/en
Publication of CN102495800A publication Critical patent/CN102495800A/en
Pending legal-status Critical Current

Links

Images

Abstract

The invention provides an iterative refinement method for abstractly valuing variables in a Do statement. The method comprises the following steps of: carrying out data stream iteration according to a control flow graph (CFG) to obtain a Last Domain; carrying out the data stream iteration of a Do statement block according to a loop condition of a Loop Head to obtain a This Domain; and carrying out Widening operation on the Last Domain and the This Domain. By utilizing the technical scheme disclosed by the invention, the technical problems that the iterative calculation for abstractly valuing the variables in the Do statement is low in convergence rate or is not converged can be solved.

Description

The iteration refinement method of the abstract value of variable in the loop statement
Technical field
The present invention relates to the Program Static Analysis technology, relate in particular to a kind of when Program Static Analysis, the iteration refinement method of the abstract value of variable in the loop statement.
Background technology
Program test is in a controlled environment, to analyze or the process of executive routine, its basic goal be with the least possible time and manpower find and the correction program in potential various faults and defective, the quality of raising program.From whether moving tested program, can program testing method be divided into two big types: dynamic testing method and static test; So-called dynamic test is come the dynamic behaviour of check program and the correctness of operation result through working procedure exactly; The essential characteristic of said static test is an actual motion program to be tested not when program being analyzed, checking and test.
Dynamic test and static test respectively have its relative merits, and the advantage of dynamic test is: found bug misunderstanding shows very intuitively; Shortcoming is: different test cases finds that wrong ability difference is very big, and is therefore high to the designing requirement of test case, in addition, needs the actual motion tested program also program test to be proposed higher requirement.The static test advantage is: do not need design test case, do not need the actual motion tested program, realize automatic test easily; The shortcoming of static test is: the problem that test is found often can not directly be confirmed as program error, need confirm that also therefore, static test also is known as static analysis through manual analysis.
At present; Usually adopt data stream iterative analysis method that program is carried out static analysis; Said data stream iterative analysis is a kind of technology that is used for obtaining the relevant information how relevant data flow along program execution path; Specifically be meant to repeat one group of instruction or certain step, when this group instruction of each execution or these steps, all release its new a value from the initial value of variable.The basis of data stream iterative analysis is that (Control Flow Graph, CFG), said CFG is a kind of digraph of response procedures logic control flow process to the control flow graph, is to carry out the requisite basic data structure of data stream iterative analysis.
The CFG of a program can be expressed as N usually, E, and Entry, Exit, wherein,
The set of N representation node, said node comprises: order node, branch node and converge node, wherein, and the order perform statement in the corresponding program of order node, it is follow-up to have 1 forerunner and 1; Condition judgment statement in the corresponding program of branch node has two or more follow-uply, and the condition criterion statement in the if in the program, switch and the loop statement all belongs to this type of branch node; Converge the node that withdraws from of each branch statement in the corresponding program of node, have two or more forerunners, the node when for example the if statement block withdraws from is if_out, and it has converged from the statement in the true and false branch; Loop statement head node LoopHead has converged from the direct precursor node and has looped back the data stream in the mid-side node.
E represents the set of directed edge, the control flow relation in its reflection program between statement.
Entry represents Ingress node, and this Ingress node is fixing, the unique Ingress node of function, and it is follow-up to have 0 forerunner and 1.
Exit represents Egress node, and this Egress node is fixing, the unique node that withdraws from of function, and it is follow-up to have 1 forerunner and 0.
Therefore, saying of summary: said CFG has fixing, the unique Ingress node and the digraph of Egress node; For adapting to the program of multiple entry and/or outlet, can in CFG, add unified entrance and/or Egress node.
Program implementation can be understood from the angle of program state and state exchange, is about to program implementation and regards a series of conversions to program state as; Program state is made up of the value of all variablees in the program, comprises the correlation of each stack frame under the stack top of the stack time of running simultaneously.When analyzing the behavior of a program, the program point sequence (being Program path) of the various flow graphs through program that possibly take in the time of must the execution of consideration program; Go up from each program point then and extract the information that needs the possible program state, in order to solve the specific data stream problem analysis.
In the program process, program state is in essence by two factor decisions: the current location that current value of each variable in the program (the variable here is sensu lato variable, comprises the content of various global memories, stack internal memory and heap memory) and program are carried out.Based on the notion of program state, program implementation can be regarded as a series of transfer processes of program state.Article one, the execution of statement program from a state exchange to another state; The semanteme of statement can be regarded as the transfer function to program state; Its input state joins with this statement program spot correlation before, and the program spot correlation behind output state and this statement joins.
When analyzing the dynamic behaviour of a program statically, maybe be when needing the consideration program to carry out through the various paths of CFG, then according to the needs of the problem analysis information of extraction needs the possible program state from each program point.In general, a program has infinite mulitpath, and the length in path does not have the upper bound yet.Process analysis is gathered all program states that possibly occur on each program point as the most basic information source usually; But can't accurately calculate and represent the possible program state set on each program point in the reality; Different analytical technology is selected the abstract useless information of falling, and keeps Useful Information.
In addition, traffic flow information is represented in the interval with variable in analytic process, so after generating CFG, need generate block information based on this CFG, said block information is the result that interval arithmetic obtains.The interval of so-called variable just is meant the span of variable.The purpose of interval arithmetic is that the span of variable that occurs in the program and expression formula is followed the tracks of, for further process analysis provides accurate information support.Variable among the Java has different types, so also there is different types in the interval of variable.
During calculated in actual interval, the value information of variable may be upgraded by following statement: variable assignments statement, condition judgment statement, cycle criterion statement etc.For assignment statement, it is obvious to the influence of the span of variable.For example: i=i+3; Suppose the original span of i for [1,5], carried out then that the span of i is [4,8] behind this statement.
Condition judgment in the program also can the variation span.For example:
Figure BDA0000116297690000031
The original span of i is [1,5], in the true branch of if statement, gets really and limits owing to receiving i>=3 conditions so; Then the span of i is: [3,5] correspondingly receive i>=3 conditions and get false qualification on the if false ramification; Then the span of i is: [1,2].Control stream plays a part to transmit and converge for the interval of variable.
The process of at present, program being carried out static analysis generally includes following steps:
At first, the CFG of generator program.
Secondly, close in Entry initialization data adfluxion.So-called set of data flows is to carry out the abstract of semanteme to program is actual, dynamic value information when it has comprised the operation of function shape ginseng, local variable and global variable.
At last; Be the basis with this initial set of data flows; Data-flow analysis framework according to classics carries out the data stream iteration successively along control stream, calculates the data stream In set and the data stream Out set of each node among the CFG respectively, and is stable up to the data flow state of each node; Just obtained each control and flowed the abstract value information that node (being every program statement) is located correlated variables, promptly the data-flow equations of whole function is separated.
When the abstract value of data stream iterative analysis method variable in carrying out loop statement is calculated,, cause iterations unknown, especially run into special cyclic (for example while (1) or for (i=0 because there is variable in the loop statement in the program; I<100000000; I++) in the time of similarly circulation), possibly cause the data stream iteration convergence slow, not even convergence, the data-flow equations that can't obtain whole function is separated, and final influence is carried out static analysis to program.
Summary of the invention
In view of this, fundamental purpose of the present invention is to provide the iteration refinement method of the abstract value of variable in a kind of loop statement, can solve in the loop statement slowly or not convergent problem of the abstract value iterative computation of variable speed of convergence.
For achieving the above object, technical scheme of the present invention is achieved in that
The invention discloses the iteration refinement method of the abstract value of variable in a kind of loop statement, said method comprises:
CFG carries out the data stream iteration according to the control flow graph, obtains the interval LastDomain of last iteration;
Carry out the data stream iteration of loop statement piece according to the cycling condition of hydraulic circulating head node LoopHead, obtain ThisDomain between this iterative region;
LastDomain and ThisDomain are widened the Widening operation.
Preferable, saidly carry out the data stream iteration according to CFG, obtain the interval LastDomain of last iteration and be:
Carry out the data stream iteration according to CFG; Obtain the interval of forerunner PostHeadNode of interval and circulation back edge character of direct precursor PreHeadNode of the loop statement of LoopHead, union is got in the interval of the interval of said PreHeadNode and PostHeadNode obtain the interval LastDomain of last iteration.
Preferable, said cycling condition according to LoopHead carries out the data stream iteration of loop statement piece, obtains that ThisDomain does between this iterative region,
Carry out the data stream iteration of loop statement piece according to the cycling condition of LoopHead; Generate the interval of new PostHeadNode; Union is got with new PostHeadNode interval in the interval of the PreHeadNode that last iteration is obtained, obtains ThisDomain between this iterative region.
Preferable, said LastDomain and ThisDomain to be carried out after the Widening operation, this method also comprises:
Judgement when interval after LastDomain compares Widening changes, with the interval behind the Widening as new LastDomain;
Repetition is carried out the data stream iteration of loop statement piece according to the cycling condition of LoopHead, obtains ThisDomain between this iterative region, the step that LastDomain and ThisDomain are carried out the Widening operation.
Preferable, said LastDomain and ThisDomain to be carried out after the Widening operation, this method also comprises:
Judgement does not change with interval after LastDomain compares Widening, and InterDomain between iterative region in the middle of the interval behind the Widening is designated as is as the input that narrows the Narrowing operation;
Carry out the data stream iteration of loop statement piece by cycling condition, obtain ThisDomain between this iterative region;
Whether judgement is compared ThisDomain and is changed with InterDomain, if change, InterDomain and ThisDomain are carried out the Narrowing operation; If do not change, the data stream iteration stops.
Preferable, saidly carry out the data stream iteration of loop statement piece by cycling condition, obtain that ThisDomain is between this iterative region:
Carry out the data stream iteration of loop statement piece by cycling condition, obtain the interval of PreHeadNode and the interval of PostHeadNode, union is got in the interval of the interval of said PreHeadNode and PostHeadNode obtain ThisDomain between this iterative region.
Preferable, said with after InterDomain and the ThisDomain execution Narrowing operation, this method also comprises:
Interval behind the Narrowing is designated as new InterDomain;
Repeat to be undertaken by cycling condition the data stream iteration of loop statement piece, obtain ThisDomain between this iterative region, the step whether ThisDomain changes is compared in judgement with InterDomain.
By on can know; The iteration refinement method of the abstract value of variable in the loop statement of the present invention; The Widening operator of widening in the abstract interpretation theory is applied to the data stream alternative manner; Make loop statement data stream iteration to restrain fast, improve the efficient that the data-flow equations obtain whole function is separated; The Narrowing operator that narrows in the abstract interpretation theory is applied to the data stream alternative manner, the data-flow equations that obtains is separated more near exact solution, help the circulating inner range of variables inspection and the interval arithmetic of circulation back variable.
Description of drawings
Fig. 1 is the schematic flow sheet of iteration refinement method first embodiment of the abstract value of variable in the loop statement of the present invention;
Fig. 2 is the CFG of example procedure segment;
Fig. 3 is the schematic flow sheet of iteration refinement method second embodiment of the abstract value of variable in the loop statement of the present invention;
Fig. 4 is the result of flow synoptic diagram of loop iteration refinement of the present invention.
Embodiment
First embodiment of the iteration refinement method of the abstract value of variable in the loop statement disclosed by the invention, as shown in Figure 1, said method comprises:
Step 101, carry out the data stream iteration, obtain the interval LastDomain of last iteration according to CFG;
Concrete; Carry out the data stream iteration according to CFG; Obtain the interval of forerunner PostHeadNode of interval and circulation back edge character of direct precursor PreHeadNode of the loop statement of LoopHead, union is got in the interval of the interval of said PreHeadNode and PostHeadNode obtain the interval LastDomain of last iteration.
Step 102, carry out the data stream iteration of loop statement piece, obtain ThisDomain between this iterative region according to the cycling condition of hydraulic circulating head node LoopHead;
Concrete; Carry out the data stream iteration of loop statement piece according to the cycling condition of LoopHead; Generate the interval of new PostHeadNode, union is got with new PostHeadNode interval in the interval of the PreHeadNode that last iteration is obtained, obtains ThisDomain between this iterative region.
Step 103, LastDomain and ThisDomain are widened the Widening operation.
By on can know, adopt technique scheme that loop statement data stream iteration is restrained fast, improve the efficient that the data-flow equations that obtains whole function is separated.
Optional; Said LastDomain and ThisDomain are widened after the Widening operation; Also comprise: judge with interval after LastDomain compares Widening whether change, if change, with the interval behind the Widening as new LastDomain; The operation of repeating step 102 and step 103; Up to stopping with interval after LastDomain the compares Widening data stream iteration that do not change, this moment each control stream node related traffic flow information be the result of loop iteration refinement, finish this flow process.
Optional, said LastDomain and ThisDomain are widened after the Widening operation, also comprise:
Judgement does not change with interval after LastDomain compares Widening, and InterDomain between iterative region in the middle of the interval behind the Widening is designated as is as the input that narrows the Narrowing operation;
Carry out the data stream iteration of loop statement piece by cycling condition, obtain ThisDomain between this iterative region; Concrete; Carry out the data stream iteration of loop statement piece by cycling condition; Obtain the interval of PreHeadNode and the interval of PostHeadNode, union is got in the interval of the interval of said PreHeadNode and PostHeadNode obtain ThisDomain between this iterative region.
Whether judgement is compared ThisDomain and is changed with InterDomain, if change, InterDomain and ThisDomain are carried out the Narrowing operation; If do not change, the data stream iteration stops, this moment each control stream node related traffic flow information be the result of loop iteration refinement, finish this flow process.
Optional, said with after InterDomain and the ThisDomain execution Narrowing operation, also comprise:
Interval behind the Narrowing is designated as new InterDomain;
Repeat to be undertaken the data stream iteration of loop statement piece, obtain that ThisDomain compares the step whether ThisDomain changes with judgement between this iterative region with InterDomain by cycling condition.
By on can know, adopt technique scheme that the data-flow equations that obtains is separated more near exact solution, help the circulating inner range of variables inspection and the interval arithmetic of circulation back variable.
Be example to apply the present invention to a program segment below, the present invention is carried out detailed introduction.
Said program segment is following:
Figure BDA0000116297690000081
Wherein, the direct precursor PreHeadNode of the code behavior loop statement at L1 place, the code behavior hydraulic circulating head node LoopHead at L2 place, the code behavior of L5 place loops back the forerunner PostHeadNode of limit character.
The CFG of said program segment is as shown in Figure 2.Func_Head among the Func_Head_fun_0 among Fig. 2 is the Entry of function, and fun is a function name, and 0 is node ID; Similar, the Func_Out among the Func_Out_fun_6 is the Exit of function, 6 is node ID.
Order is analyzed by it in every limit of CFG all has corresponding numbers, like 0 on the arrow line among Fig. 1,1,3 and 4.Aid the border areas if divide, then according to its true and false condition difference called after T or F sequence number, like the T_2 on the arrow line among Fig. 1, F_5.
Semantic feature according to every program statement; For other nodes outside outlet, the Ingress node have all generated different prefix titles; For example declarative statement is that decl_stmt, while hydraulic circulating head node are while_head, and common statement is stmt, and all node back all have node ID.
Fig. 3 is for the schematic flow sheet of iteration refinement method second embodiment of the abstract value of variable in the loop statement of the present invention, and is as shown in the figure, said method comprising the steps of:
Step 301, carry out the data stream iteration according to CFG; Obtain interval and the interval of PostHeadNode of the PreHeadNode of LoopHead, union is got in the interval of the interval of said PreHeadNode and PostHeadNode obtain the interval LastDomain of last iteration.
Concrete, from the Entry of function, promptly the Func_Head node among Fig. 1 begins to carry out the data stream iteration, is empty between original area, LoopHead is carried out data stream converge In, and behind the arrival L1, the interval becomes { i: [1,1] j: [1,1] }.Because the L5 place did not carry out iteration as yet, this moment, the data steam interval of LoopHead node was { i: [1,1] j: [1,1] }.The LoopHead node is preserved two class intervals all the time; One type is the basis of current iteration, and another kind of is the interval of upgrading after the iteration, and the former is LastDomain; The latter is ThisDomain; Whether change through contrast iteration former and later two intervals, widen or narrow operation, and judge whether iteration should stop.
Step 302, the data stream iteration of loop statement piece of carrying out according to the cycling condition of LoopHead; Generate the interval of new PostHeadNode; Union is got with new PostHeadNode interval in the interval of the PreHeadNode that last iteration is obtained, obtains ThisDomain between this iterative region.
Concrete, between the original area with LoopHead { i: [1,1] j: [1,1] }, be split as true and false branch according to cycling condition (i<100): really branch into { i: [1,1] j: [1,1] }, false ramification is an empty interval.
Interval { i: [1,1] j: [1, the 1] } merging that obtains interval { i: [2,2] j: [2,2] } and L1 place after the true process L3 of branch, the L4 iteration obtains { i: [1,2] j: [1,2] }, as ThisDomain between this iterative region.
Step 303, LastDomain and ThisDomain are widened the Widening operation.
Concrete, LastDomain and ThisDomain are carried out carrying out the Widening operation through widening operator .Said widening operator is:
[ a 1 , b 1 ] ▿ [ a 2 , b 2 ] = [ L 1 , L 2 ]
If(a2<a1)then?L1=-∞;else?L1=a1;
If(b2>b1)then?L2=+∞;else?L2=b1;
For example:
Figure BDA0000116297690000093
[ 1,10 ] ▿ [ 1,11 ] = [ 1 , + ∞ ]
[ 1 , + ∞ ] ▿ [ 0,12 ] = [ - ∞ , + ∞ ]
Therefore, LastDomain={i: [1,1] j: [1,1] }, ThisDomain={i: [1,2] j: [1,2] } and, the interval after the two is widened is { i: [1, ∞] j: [1, ∞] }.
Whether step 304, judgement and the interval after LastDomain compares Widening change has taken place; If do not change, represent that then the data stream iteration is stable, gets into step 305 with the interval after LastDomain compares Widening; If compare with LastDomain, the interval behind the Widening changes, and carry out step 309.
Clearly, variation has taken place between the back zone widening operation in this example, therefore carries out the computing of step 309; After LastDomain being updated to { i: [1, ∞] j: [1, ∞] }, get into step 302 iteration once more: according to cycling condition while (i<100); Data stream is { i: [1,99] j: [1, ∞] } in the true branch; Through being updated to { i: [2,100] j: [2, ∞] } after L3, the L4 statement iteration; This iteration result and L1 place are obtained new ThisDomain={i: [1,100] j: [1, ∞] the interval merging }; With LastDomain={i: [1, ∞] j: [1, ∞] } widen operation with it after, obtain new interval and still be { i: [1, ∞] j: [1, ∞] }, the expression iteration is stable, gets into step 305.
Step 305, the interval behind the Widening is designated as in the middle of InterDomain between iterative region, as the input that narrows the Narrowing operation.
Particularly, InterDomain={i: [1, ∞] j: [1, ∞] }.
Step 306, the data stream iteration of loop statement piece of being undertaken by cycling condition; Obtain the interval of PreHeadNode and the interval of PostHeadNode, union is got in the interval of the interval of said PreHeadNode and PostHeadNode obtain ThisDomain between this iterative region.
Particularly, ThisDomain={i: [1,100] j: [1, ∞] }.
Step 307, judgement are compared ThisDomain whether change have been taken place with InterDomain; Do not change if compare ThisDomain with InterDomain, represent that then the data stream iteration is stable, gets into step 310; Change if compare ThisDomain, get into step 308 with InterDomain.
Significantly, narrow between the operation back zone variation has taken place, therefore get into step 308.
Step 308 is carried out the Narrowing operation with InterDomain and ThisDomain, and the interval behind the Narrowing is designated as new InterDomain, gets into step 306.
Concrete, InterDomain and ThisDomain are carried out the Narrowing operation through narrowing operator Δ, said narrowing operator Δ is:
[a1,b1]Δ[a2,b2]=[L1,L2]
If(a1=-∞)then?L1=a2;else?L1=MIN(a1,a2);
If(b1=+∞)then?L2=b2;else?L2=MAX(b1,b2);
For example: [∞ ,+∞] Δ [∞, 101]=[∞, 101]
[-∞,101]Δ[0,100]=[0,101]
[0,100]Δ[0,99]=[0,100]
Concrete, the interval { i: [1,100] j: [1, ∞] } after the Narrowing as new InterDomain, is got into step 306; Be split as true and false branch according to cycling condition (i<100): in the true branch, { i: [1,99] j: [1, ∞] } is through obtaining interval { i: [2,100] j: [2, ∞] } after L3, the L4 iteration; The interval merging obtain ThisDomain={i: [1,100] j: [1, ∞] with the L1 place }, InterDomain and ThisDomain are carried out still being { i: [1,100] j: [1, ∞] } between the narrowing back zone that the expression iteration is stable.
Step 309 as new LastDomain, gets into step 302 with the interval behind the Widening.
Step 310, data stream iteration stop, this moment each control stream node related traffic flow information be the result of loop iteration refinement, finish this flow process.
Exit is that the i during data-flow equations that the Func_Out node obtains is separated is 100, and is in full accord with the exact solution of loop iteration; The interval of j is [1, ∞], separates to some extent with respect to conservative data-flow equations to enlarge.
The real program that so-called exact solution refers to is carried out semantic, and through the procedures of observation segment, the value that withdraws from node i in circulation is 100, and is in full accord with analysis result; And the exact value of j also is 100, but because execution is widened and narrowed computing, has caused loss of significance, and the interval [1, ∞] that therefore finally obtains j is a conservative solution, and promptly it has been magnified to true Program Semantic.
Following table one and table two have provided whole analytical procedure, in order to simplify, only record have been carried out in the interval of variable i in the table, and L3, interval, L4 statement place are for getting the result of the true branch condition computing in L2 place:
(table)
Figure BDA0000116297690000121
(table two)
Figure BDA0000116297690000122
Result such as Fig. 4 of the loop iteration refinement that obtains based on above operation are said; Among Fig. 4; The May/Must of hydraulic circulating head node set is the cycling condition in the true and false branch, the variable in other nodes is all related symbol, and this symbol is used for the variable relevant information of calculating process between the reserved area; The 3rd row information is the interval iteration result of each variable.
Cycling condition is positioned at hydraulic circulating head node place, is i<100 in this example.In order to improve the precision of interval analysis, and introduced the symbolic operation system, the back delegation of nodename has promptly represented variable and character expression thereof among the figure; For example; The symbol of i is i_4041 among the while_head_2, and after i++ computing in the loop body, its character expression is updated to 1+i_4041.
Compare with existing simple iterative processing mode, more accurate through separating of technical scheme processing of the present invention back loop iteration.For example; The said procedure segment is carried out the iteration refinement is example, and existing simple iterative processing mode is only according to while (i<100), and the interval of withdrawing from back i that obtains circulating is [100; ∞]; Be [100,100] and use the interval of withdrawing from node i of circulating after technical scheme of the present invention is handled, this routine analysis result is on all four with true Program Semantic.
By on can know that the iteration refinement method of the abstract value of variable not only makes loop statement data stream iteration to restrain fast in the loop statement that the present invention proposes, improve the efficient that the data-flow equations that obtains whole function is separated; And the data-flow equations that obtains is separated more near exact solution, help the circulating inner range of variables inspection and the interval arithmetic of circulation back variable.
The above is merely preferred embodiment of the present invention, is not to be used to limit protection scope of the present invention.

Claims (7)

1. the iteration refinement method of the abstract value of variable in the loop statement is characterized in that said method comprises:
CFG carries out the data stream iteration according to the control flow graph, obtains the interval LastDomain of last iteration;
Carry out the data stream iteration of loop statement piece according to the cycling condition of hydraulic circulating head node LoopHead, obtain ThisDomain between this iterative region;
LastDomain and ThisDomain are widened the Widening operation.
2. method according to claim 1 is characterized in that, saidly carries out the data stream iteration according to CFG, obtains the interval LastDomain of last iteration to be:
Carry out the data stream iteration according to CFG; Obtain the interval of forerunner PostHeadNode of interval and circulation back edge character of direct precursor PreHeadNode of the loop statement of LoopHead, union is got in the interval of the interval of said PreHeadNode and PostHeadNode obtain the interval LastDomain of last iteration.
3. method according to claim 2 is characterized in that, said cycling condition according to LoopHead carries out the data stream iteration of loop statement piece, obtains that ThisDomain does between this iterative region,
Carry out the data stream iteration of loop statement piece according to the cycling condition of LoopHead; Generate the interval of new PostHeadNode; Union is got with new PostHeadNode interval in the interval of the PreHeadNode that last iteration is obtained, obtains ThisDomain between this iterative region.
4. method according to claim 1 is characterized in that, said LastDomain and ThisDomain is carried out after the Widening operation, and this method also comprises:
Judgement when interval after LastDomain compares Widening changes, with the interval behind the Widening as new LastDomain;
Repetition is carried out the data stream iteration of loop statement piece according to the cycling condition of LoopHead, obtains ThisDomain between this iterative region, the step that LastDomain and ThisDomain are carried out the Widening operation.
5. method according to claim 1 is characterized in that, said LastDomain and ThisDomain is carried out after the Widening operation, and this method also comprises:
Judgement does not change with interval after LastDomain compares Widening, and InterDomain between iterative region in the middle of the interval behind the Widening is designated as is as the input that narrows the Narrowing operation;
Carry out the data stream iteration of loop statement piece by cycling condition, obtain ThisDomain between this iterative region;
Whether judgement is compared ThisDomain and is changed with InterDomain, if change, InterDomain and ThisDomain are carried out the Narrowing operation; If do not change, the data stream iteration stops.
6. method according to claim 5 is characterized in that, saidly carries out the data stream iteration of loop statement piece by cycling condition, obtains that ThisDomain is between this iterative region:
Carry out the data stream iteration of loop statement piece by cycling condition, obtain the interval of PreHeadNode and the interval of PostHeadNode, union is got in the interval of the interval of said PreHeadNode and PostHeadNode obtain ThisDomain between this iterative region.
7. method according to claim 5 is characterized in that, said with after InterDomain and the ThisDomain execution Narrowing operation, this method also comprises:
Interval behind the Narrowing is designated as new InterDomain;
Repeat to be undertaken by cycling condition the data stream iteration of loop statement piece, obtain ThisDomain between this iterative region, the step whether ThisDomain changes is compared in judgement with InterDomain.
CN2011104001739A 2011-12-05 2011-12-05 Iterative refinement method for abstractly valuing variables in Do statement Pending CN102495800A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2011104001739A CN102495800A (en) 2011-12-05 2011-12-05 Iterative refinement method for abstractly valuing variables in Do statement

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2011104001739A CN102495800A (en) 2011-12-05 2011-12-05 Iterative refinement method for abstractly valuing variables in Do statement

Publications (1)

Publication Number Publication Date
CN102495800A true CN102495800A (en) 2012-06-13

Family

ID=46187625

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2011104001739A Pending CN102495800A (en) 2011-12-05 2011-12-05 Iterative refinement method for abstractly valuing variables in Do statement

Country Status (1)

Country Link
CN (1) CN102495800A (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103838571B (en) * 2013-12-03 2017-04-19 华为技术有限公司 Information processing method and device
CN103294597B (en) * 2013-05-24 2017-05-10 浪潮电子信息产业股份有限公司 Cloud storage node performance standard data generation method
CN106681786A (en) * 2017-01-05 2017-05-17 南京大学 Method for automatically synthesizing commonly-used cyclic abstracts and generating program specifications

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030041315A1 (en) * 2001-08-21 2003-02-27 International Business Machines Corporation Debugger with automatic detection of control points influencing program behavior
CN102073587A (en) * 2010-12-27 2011-05-25 北京邮电大学 Static detection method for inaccessible route in program

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030041315A1 (en) * 2001-08-21 2003-02-27 International Business Machines Corporation Debugger with automatic detection of control points influencing program behavior
CN102073587A (en) * 2010-12-27 2011-05-25 北京邮电大学 Static detection method for inaccessible route in program

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
刘莉 等: "提高区间运算的循环处理精度", 《清华大学学报(自然科学版)》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103294597B (en) * 2013-05-24 2017-05-10 浪潮电子信息产业股份有限公司 Cloud storage node performance standard data generation method
CN103838571B (en) * 2013-12-03 2017-04-19 华为技术有限公司 Information processing method and device
CN106681786A (en) * 2017-01-05 2017-05-17 南京大学 Method for automatically synthesizing commonly-used cyclic abstracts and generating program specifications

Similar Documents

Publication Publication Date Title
Fan et al. DryVR: Data-driven verification and compositional reasoning for automotive systems
CN101436128B (en) Software test case automatic generating method and system
Kwon et al. Mantis: Automatic performance prediction for smartphone applications
CN105893256A (en) Software failure positioning method based on machine learning algorithm
CN102662644A (en) Method for generating test case by using flow chart
CN102110051A (en) Static defect detection method of application program slicing technology
CN102073588A (en) Code static analysis based multithread deadlock detection method and system
Mossige et al. Testing robot controllers using constraint programming and continuous integration
CN104536883A (en) Static defect detecting method and system thereof
CN103714000A (en) Sensitive area-oriented embedded software test case generating method
CN103246770A (en) Activity graph model based system behavior simulation method
CN108763064A (en) A kind of code tester generation method and device based on black box function and machine learning
Laurent Using formal methods and testability concepts in the avionics systems validation and verification (v&v) process
CN102495800A (en) Iterative refinement method for abstractly valuing variables in Do statement
CN103778062A (en) Multi-interrupt routine data access conflict detection method based on abstract interpretation
CN106529304B (en) A kind of Android applies concurrent leakage location
CN101710303B (en) Memory leakage detecting method based on flow sensitivity and context sensitivity directing picture
Tao et al. An approach to regression test selection based on hierarchical slicing technique
CN104750608A (en) Automatic error locating method based on dynamic symbol operation in procedure
CN102495796A (en) Software vulnerability test method based on unit testing
CN102508766A (en) Static analysis method of errors during operation of aerospace embedded C language software
Djanatliev et al. Veritas-a versatile modeling environment for test-driven agile simulation
CN104615535B (en) Method and device for generating test case based on extended data flow model
CN107391124B (en) Conditional slicing method based on golden section search and software execution track
CN109002723A (en) A kind of segmented symbolic excution methodology

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20120613