CN106933572B - Measurement model based on LLVM intermediate representation program slice - Google Patents

Measurement model based on LLVM intermediate representation program slice Download PDF

Info

Publication number
CN106933572B
CN106933572B CN201710089449.3A CN201710089449A CN106933572B CN 106933572 B CN106933572 B CN 106933572B CN 201710089449 A CN201710089449 A CN 201710089449A CN 106933572 B CN106933572 B CN 106933572B
Authority
CN
China
Prior art keywords
program
measurement
llvm
slice
ovs
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.)
Active
Application number
CN201710089449.3A
Other languages
Chinese (zh)
Other versions
CN106933572A (en
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.)
Nanjing University of Posts and Telecommunications
Original Assignee
Nanjing 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 Nanjing University of Posts and Telecommunications filed Critical Nanjing University of Posts and Telecommunications
Priority to CN201710089449.3A priority Critical patent/CN106933572B/en
Publication of CN106933572A publication Critical patent/CN106933572A/en
Application granted granted Critical
Publication of CN106933572B publication Critical patent/CN106933572B/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/35Creation or generation of source code model driven
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code

Abstract

The invention discloses a measurement model based on LLVM intermediate representation program slice, which comprises the following steps: converting the source program into a corresponding LLVM IR language through an LLVM command line; constructing a program system dependency graph, and slicing program LLVM IR statements; obtaining the module size of each module in the program, the number of output variables, the maximum slice set size and the minimum slice set size in the slice sets of all the output variables of each measurement module and the common slice set of all the variables according to the program slicing result and the LLVM IR statement obtained by converting the source program; substituting the value obtained in the previous step into a measurement function to finish LLVM IR measurement of the function, and then calculating Halstead measurement of a program; removing the measurement values with the same function from all measurement results of the program, constructing a Complexity measurement function Complexity, calculating the Complexity of each module of the program and sequencing according to the size of the Complexity, wherein software development or test can reasonably distribute development resources according to the Complexity of each module and carry out error detection. The invention effectively improves the universality and the measurement precision of program slicing.

Description

Measurement model based on LLVM intermediate representation program slice
Technical Field
The invention relates to a method for correlating program slices and software measurement, provides a method for constructing a measurement model based on LLVM intermediate representation program slices, and belongs to the technical field of computer programs.
Background
With the rapid development of the computer industry, a large number of software products are applied to social life. While the number and scale of software systems continues to grow, the problems that arise in software development, testing, and the cost of software maintenance also continue to increase. Many conventional software analysis methods have been unable to meet the requirements of existing software analysis, and new techniques and methods need to be found to help solve the problem. Thus, program analysis becomes a very important component in the software field.
Since the program slicing was proposed in the doctor's paper by m.weiser in 1979, the theory and application development of program slicing have been greatly developed, so that the program slicing plays a very important role in software testing, maintenance, program understanding, optimization and the like. Program slicing is a technique for analyzing and understanding a program by slicing each point of interest in a source program. In short, the program slicing technique is to simplify the program to facilitate the research of the program.
Software metrics are important indicators for ensuring software quality. After measurement indexes such as Halstead, Maccabe, cyclic Complexity, Design Complexity and the like are continuously applied to software analysis. Program slice-based metrics are also applied to software modularization analysis. The slicing-based measurement is to slice the output variable in the module by using a program slicing technology and process the slicing result, so as to obtain a series of quantitative indexes through calculation, and to quantify the strength of functional dependence of elements in the module through indexes, so as to analyze the developed program. The slice-based measurement method plays a great role in measuring the progress of software re-engineering or predicting new software bugs which may occur through the analysis of software error modules.
Although program slice-based metrics have been used in program analysis, since the basic unit of program slice analysis is a statement, the construction of the system dependency graph is also based on the program line number, and the resulting slice set of slice results is a statement line number set. The object of the slice is generally a program written in a specific language such as C, C + +, Python, etc., and the generality is not strong.
LLVM IR (Low Level Virtual Machine Intermediate Representation) is a format between c language and assembly language, has readability of a high-Level language, can reflect the operation and transmission conditions of data of a computer bottom layer more comprehensively, and is refined and efficient. Any one programming language can be converted to LLVMIR, which can also be converted to any one programming language. The basic units of the system dependency graph constructed by LLVM IR and the result set of program slicing are all instructions, which can increase the generality of program slicing and the precision of program analysis.
The invention uses LLVM IR to slice the program, and measures and calculates the slicing result and the instruction set, thereby greatly improving the universality of the program slicing and the measurement precision.
Disclosure of Invention
The invention aims to overcome the defects of the prior art and provides a method for constructing a measurement model based on LLVM intermediate representation program slices, which can effectively improve the universality and measurement precision of the program slices.
In order to solve the problems of the prior art, the invention adopts the following technical scheme.
The invention discloses a construction method of a measurement model based on LLVM intermediate representation program slices, which is characterized by comprising the following steps:
step (1) converting a source program into a corresponding LLVM IR language through a command line of the LLVM;
constructing a system dependency graph by using LLVM IR to obtain a corresponding program slice;
and (3) obtaining the information of the instruction and the instruction set, the program operator and the operand corresponding to the output variable of the source program, namely: obtaining the module size of each module in the program and the number of output variables according to the program slicing result and LLVM IR statements obtained by converting the source program, and obtaining the maximum slice set size and the minimum slice set size in all slice sets of output variables of each measurement module and a common slice set of all variables;
and (4) calculating various measurement values of the function module according to the slicing result of the LLVM IR and various measurement formulas, namely: bringing the value obtained in the step (3) into a measurement function to complete LLVM IR measurement of the function, and then calculating Halstead measurement of a program;
and (5) calculating and evaluating according to the measurement values, namely: removing the measurement values with the same function from all measurement results of the program, and then sequencing the rest measurement values according to the influence conditions on the reliability and the stability of the program to obtain the module check sequence before the program is wrongly issued or the program is wrongly issued.
The specific process of the step (1) is as follows:
step 1.1) get binary bc file using command clean-emit-llvm-c hello.c-o hello.bc:
step 1.2) using a command llvm-dis hello.bc to obtain a corresponding readable hello.ll file, and opening the file through a text editor.
The specific process of the step (2) is as follows:
step 2.1) constructing a control flow graph CFG of the program;
step 2.2) adding corresponding entry nodes, format-in nodes, format-out nodes, and actual-in nodes corresponding to the format-in nodes and actual-out nodes corresponding to the format-out nodes in each process;
step 2.3) adding a control dependent edge;
step 2.4) adding a data dependent edge;
step 2.5) obtaining the dependence of the actual-out point on the actual-in point in the program calling process according to the corresponding relation between the formal-in/-out and the actual-in/-out nodes, and adding a summary edge;
and 2.6) based on the slicing criterion, performing backward traversal on the system dependency graph by using a two-stage graph reachability algorithm of the HRB.
The specific process of the step (3) is as follows:
step 3.1) finding a return value RV of each subprogram in the source program, outputting an output variable PV in a statement, a changed global variable GV in the program, and putting a function application parameter RFV into an output variable set OVS, wherein the function application parameter RFV is used as an output variable;
step 3.2) finding an instruction slice set corresponding to each subprogram OVS from the slice set;
step 3.3) calculating the # OVS, # Mod, { modi }, maxMod, minMod and comMod of the subprogram through the instruction set of the OVS;
the number # OVS refers to the number of OVS, the number # Mod refers to the number of instructions of the subprogram, { modi } refers to the number of instructions of each element in the OVS, maxMod refers to the number of instructions of the largest instruction slice set among the elements in the OVS in each module, minMod refers to the number of instructions of the smallest instruction slice set among the elements in the OVS in each module, and comMod refers to the number of identical instructions in the slice sets corresponding to all the elements in the OVS;
step 3.4) obtaining the unique operand quantity η of the program according to the LLVM IR program corresponding to the program1number of unique operators η2All operands N present in the program1And programAll operators N present in2
The specific process of the step (4) is as follows:
step 4.1) obtaining Total IRs of the program according to the basic attribute and the slice basic value of the function;
step 4.2) according to
Figure GDA0002264330220000031
Obtaining the maximum coverage condition of the OVS of the program;
step 4.3) according to
Figure GDA0002264330220000032
Obtaining the minimum coverage condition of the OVS of the program;
step 4.4) according to
Figure GDA0002264330220000033
Obtaining the tightness condition of the OVS of the program;
step 4.5) according to
Figure GDA0002264330220000034
Obtaining the overlapping condition of OVS of the program;
step 4.6) according to
Figure GDA0002264330220000035
Obtaining the OVS coverage condition of the program;
step 4.7) obtaining the coupling condition CouplingIR (f, g) among all the subprograms in the program, wherein f and g are different subprograms in the program;
step 4.8) according to N ═ N1+N2N × log (η), yielding program length N in Halstead, and program capacity V;
and 4.9) obtaining the cyclic compatibility as e-n +2p according to the dependency graph of the program, wherein the e, n and p are the number of edges, the number of nodes and the number of connected components in the control flow graph respectively.
The specific process of the step (5) is as follows:
step 5.1) carrying out principal component analysis on the multiple measurement indexes, and removing the measurement indexes having the same influence on the program according to a principal component analysis method;
step 5.2) the measurement indexes obtained after the processing of the step 5.1) are sorted according to the respective contribution values of the measurement indexes;
step 5.3) construction of a complexity metric function according to step 5.2)
Figure GDA0002264330220000036
α + β + χ is 1, and the weighting factors α, β and χ have values of α being 0.5, β being 0.4 and χ being 0.1, respectively;
step 5.4) according to the analysis of each measurement index to the program, according to different conditions of the influence of each measurement index, obtaining a sequence of each subprogram in the aspect of complexity; the complexity function takes into account various aspects including: stability, portability, and error-prone conditions; compared with the prior art, the invention has the following advantages and beneficial effects:
(1) the invention uses LLVM IR as the basic unit of program slice, not a specific programming language, and takes out the slice result corresponding to the line number, and uses the program slice result and LLVM converted from the source program to perform measurement calculation, which improves the universality of program slice and the accuracy of software measurement based on program slice.
(2) The analysis granularity of the program in the metric model provided by the invention is finer, and the statement level is changed into the LLVM IR instruction level, so that the obtained metric result is more accurate.
(3) The invention combines the cohesion, the coupling degree and Halstead based on the slice measurement for use, and provides the Complexity measurement Complexity based on the slice measurement, which can help developers to reasonably distribute development resources.
Drawings
FIG. 1 is a flow chart of a construction method of an embodiment of the invention.
Detailed Description
The present invention will be described in further detail with reference to the accompanying drawings.
FIG. 1 is a flow chart of a method for constructing a metrology model based on LLVM intermediate representation program slicing according to an embodiment of the present invention. As shown in fig. 1, the method of this embodiment includes the steps of:
step (1) converting a source program into a corresponding LLVM IR language through a command line of the LLVM;
constructing a system dependency graph by using LLVM IR to obtain a corresponding program slice;
and (3) obtaining the information of the instruction and the instruction set, the program operator and the operand corresponding to the output variable of the source program, namely: obtaining the module size of each module in the program and the number of output variables according to the program slicing result and LLVM IR statements obtained by converting the source program, and obtaining the maximum slice set size and the minimum slice set size in all slice sets of output variables of each measurement module and a common slice set of all variables;
and (4) calculating various measurement values of the function module according to the slicing result of the LLVM IR and various measurement formulas, namely: bringing the value obtained in the step (3) into a measurement function to complete LLVM IR measurement of the function, and then calculating Halstead measurement and circle complexity measurement of a program;
and (5) calculating and evaluating according to the measurement values, namely: removing the measurement values with the same function from all measurement results of the program, and then sequencing the rest measurement values according to the influence conditions on the reliability and the stability of the program to obtain the module check sequence before the program is wrongly issued or the program is wrongly issued.
The specific process of the step (1) is as follows:
step 1.1) get binary bc file using command clean-emit-llvm-c hello.c-o hello.bc:
step 1.2) using a command llvm-dis hello.bc to obtain a corresponding readable hello.ll file, and opening the file through a text editor.
The specific process of the step (2) is as follows:
step 2.1) constructing a control flow graph CFG of the program;
step 2.2) adding corresponding entry nodes, format-in nodes, format-out nodes, and actual-in nodes corresponding to the format-in nodes and actual-out nodes corresponding to the format-out nodes in each process;
step 2.3) adding a control dependent edge;
step 2.4) adding a data dependent edge;
step 2.5) obtaining the dependence of the actual-out point on the actual-in point in the program calling process according to the corresponding relation between the formal-in/-out and the actual-in/-out nodes, and adding a summary edge;
and 2.6) based on the slicing criterion, performing backward traversal on the system dependency graph by using a two-stage graph reachability algorithm of the HRB.
The specific process of the step (3) is as follows:
step 3.1) finding a return value RV of each subprogram in the source program, outputting an output variable PV in a statement, a changed global variable GV in the program, and putting a function application parameter RFV into an output variable set OVS, wherein the function application parameter RFV is used as an output variable;
step 3.2) finding an instruction slice set corresponding to each subprogram OVS from the slice set;
step 3.3) calculating the # OVS, # Mod, { modi }, maxMod, minMod and comMod of the subprogram through the instruction set of the OVS;
the number # OVS refers to the number of OVS, the number # Mod refers to the number of instructions of the subprogram, { modi } refers to the number of instructions of each element in the OVS, maxMod refers to the number of instructions of the largest instruction slice set among the elements in the OVS in each module, minMod refers to the number of instructions of the smallest instruction slice set among the elements in the OVS in each module, and comMod refers to the number of identical instructions in the slice sets corresponding to all the elements in the OVS;
step 3.4) obtaining the unique operand quantity η of the program according to the LLVM IR program corresponding to the program1number of unique operators η2All operands N present in the program1And all operators N present in the program2
The specific process of the step (4) is as follows:
step 4.1) obtaining Total IRs of the program according to the basic attribute and the slice basic value of the function;
step 4.2) according to
Figure GDA0002264330220000051
Obtaining the maximum coverage condition of the OVS of the program;
step 4.3) according to
Figure GDA0002264330220000052
Obtaining the minimum coverage condition of the OVS of the program;
step 4.4) according to
Figure GDA0002264330220000053
Obtaining the tightness condition of the OVS of the program;
step 4.5) according to
Figure GDA0002264330220000054
Obtaining the overlapping condition of OVS of the program;
step 4.6) according to
Figure GDA0002264330220000055
Obtaining the OVS coverage condition of the program;
step 4.7) obtaining the coupling condition CouplingIR (f, g) among all the subprograms in the program, wherein f and g are different subprograms in the program;
step 4.8) according to N ═ N1+N2N × log (η), yielding program length N in Halstead, and program capacity V;
and 4.9) obtaining the cyclic compatibility as e-n +2p according to the dependency graph of the program, wherein the e, n and p are the number of edges, the number of nodes and the number of connected components in the control flow graph respectively.
The specific process of the step (5) is as follows:
step 5.1) carrying out principal component analysis on the multiple measurement indexes, and removing the measurement indexes having the same influence on the program according to a principal component analysis method;
step 5.2) the measurement indexes obtained after the processing of the step 5.1) are sorted according to the respective contribution values of the measurement indexes;
step 5.3) construction of a complexity metric function according to step 5.2)
Figure GDA0002264330220000061
α + β + χ is 1, and the weighting factors α, β and χ have values of α being 0.5, β being 0.4 and χ being 0.1, respectively;
step 5.4) according to the analysis of each measurement index to the program, according to different conditions of the influence of each measurement index, obtaining a sequence of each subprogram in the aspect of complexity; the complexity function takes into account various aspects including: stability, portability, and error-prone conditions;
and 5.5) if the software or the program has problems, checking and modifying according to the sequence in which the software is easy to make mistakes.
In summary, the present invention provides a metric model based on LLVM intermediate representation program slices. Firstly, converting a source program into a corresponding LLVM IR language through a command line of an LLVM; and constructing a program system dependency graph, and slicing LLVMIR statements of the program. And then obtaining the module size of each module in the program, the number of variables, the maximum size of the slice set and the minimum size of the slice set in the slice sets of all the variables, and a common slice set of all the variables according to the program slicing result and the LLVM IR statement obtained by converting the source program. The slice base values from the above steps are then substituted into the LLVM IR metric function and the commonly used Halstead, cyclic Complexity, etc. metric functions involving re-use in LLVM IR and Halstead and circle Complexity metrics for the inter-function cohesion and coupling related metric functions proposed and improved by m.weiser and Longworth et al. Finally, removing the measurement values with the same function from all measurement results of the program, and then sequencing the rest measurement values according to the influence conditions on the reliability and the stability of the program to obtain the module check sequence before the program is wrongly issued or the program is wrongly issued.

Claims (6)

1. A method for constructing a metric model based on LLVM intermediate representation program slices is characterized by comprising the following steps:
step (1) converting a source program into a corresponding LLVM IR language through a command line of the LLVM;
constructing a system dependency graph by using LLVM IR to obtain a corresponding program slice;
and (3) obtaining the information of the instruction and the instruction set, the program operator and the operand corresponding to the output variable of the source program, namely: obtaining the module size of each module in the program and the number of output variables according to the program slicing result and LLVM IR statements obtained by converting the source program, and obtaining the maximum slice set size and the minimum slice set size in all slice sets of output variables of each measurement module and a common slice set of all variables;
and (4) calculating various measurement values of the function module according to the slicing result of the LLVM IR and various measurement formulas, namely: bringing the value obtained in the step (3) into a measurement function to complete LLVM IR measurement of the function, and then calculating Halstead measurement of a program;
and (5) calculating and evaluating according to the measurement values, namely: all measurement results of the program are firstly removed from the measurement values with the same action, then the rest measurement values are sequenced according to the influence conditions on the reliability and the stability of the program, and the development resources can be reasonably arranged according to module sequencing to check the modules in the software testing stage.
2. The method for constructing a metric model based on LLVM intermediate representation program slice as claimed in claim 1, wherein the specific process of step (1) is:
step 1.1) get binary bc file using command clean-emit-llvm-c hello.c-o hello.bc:
step 1.2) using a command llvm-dis hello.bc to obtain a corresponding readable hello.ll file, and opening the file through a text editor.
3. The method for constructing a metric model based on LLVM intermediate representation program slice as claimed in claim 1, wherein the specific process of step (2) is:
step 2.1) constructing a control flow graph CFG of the program;
step 2.2) adding corresponding entry nodes, format-in nodes, format-out nodes, and actual-in nodes corresponding to the format-in nodes and actual-out nodes corresponding to the format-out nodes in each process;
step 2.3) adding a control dependent edge;
step 2.4) adding a data dependent edge;
step 2.5) obtaining the dependence of the actual-out point on the actual-in point in the program calling process according to the corresponding relation between the formal-in/-out and the actual-in/-out nodes, and adding a summary edge;
and 2.6) based on the slicing criterion, performing backward traversal on the system dependency graph by using a two-stage graph reachability algorithm of the HRB.
4. The method for constructing a metric model based on LLVM intermediate representation program slice as claimed in claim 1, wherein the specific process of step (3) is:
step 3.1) finding a return value RV of each subprogram in the source program, outputting an output variable PV in a statement, a changed global variable GV in the program, and putting a function application parameter RFV into an output variable set OVS, wherein the function application parameter RFV is used as an output variable;
step 3.2) finding an instruction slice set corresponding to each subprogram OVS from the slice set;
step 3.3) calculating the # OVS, # Mod, { modi }, maxMod, minMod and comMod of the subprogram through the instruction set of the OVS;
the number # OVS refers to the number of OVS, the number # Mod refers to the number of instructions of the subprogram, { modi } refers to the number of instructions of each element in the OVS, maxMod refers to the number of instructions of the largest instruction slice set among the elements in the OVS in each module, minMod refers to the number of instructions of the smallest instruction slice set among the elements in the OVS in each module, and comMod refers to the number of identical instructions in the slice sets corresponding to all the elements in the OVS;
step 3.4) obtaining the unique operand quantity η of the program according to the LLVM IR program corresponding to the program1number of unique operators η2All operands N present in the program1And all operators N present in the program2
5. The method for constructing a metric model based on LLVM intermediate representation program slice as claimed in claim 1, wherein the specific process of step (4) is:
step 4.1) obtaining Total IRs of the program according to the basic attribute and the slice basic value of the function;
step 4.2) according to
Figure FDA0002264330210000021
Obtaining the maximum coverage condition of the OVS of the program;
step 4.3) according to
Figure FDA0002264330210000022
Obtaining the minimum coverage condition of the OVS of the program;
step 4.4) according to
Figure FDA0002264330210000023
Obtaining the tightness condition of the OVS of the program;
step 4.5) according to
Figure FDA0002264330210000024
Obtaining the overlapping condition of OVS of the program;
step 4.6) according to
Figure FDA0002264330210000025
Obtaining the OVS coverage condition of the program;
step 4.7) obtaining the coupling condition CouplingIR (f, g) among all the subprograms in the program, wherein f and g are different subprograms in the program;
step 4.8) according to N ═ N1+N2N × log (η), yielding program length N in Halstead, and program capacity V;
and 4.9) obtaining the cyclic compatibility as e-n +2p according to the dependency graph of the program, wherein the e, n and p are the number of edges, the number of nodes and the number of connected components in the control flow graph respectively.
6. The method for constructing a metric model based on LLVM intermediate representation program slice as claimed in claim 1, wherein the specific process of step (5) is:
step 5.1) carrying out principal component analysis on the multiple measurement indexes, and removing the measurement indexes having the same influence on the program according to a principal component analysis method;
step 5.2) the measurement indexes obtained after the processing of the step 5.1) are sorted according to the respective contribution values of the measurement indexes;
step 5.3) construction of a complexity metric function according to step 5.2)
Figure FDA0002264330210000026
the weighting factors alpha, β and chi respectively take the values of alpha, β and chi as 0.5, β as 0.4 and chi as 0.1;
step 5.4) according to the analysis of each measurement index to the program, according to different conditions of the influence of each measurement index, obtaining a sequence of each subprogram in the aspect of complexity; the complexity function takes into account various aspects including: stability, portability, and error-prone conditions;
and 5.5) if the software or the program has problems, checking and modifying according to the sequence in which the software is easy to make mistakes.
CN201710089449.3A 2017-02-20 2017-02-20 Measurement model based on LLVM intermediate representation program slice Active CN106933572B (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710089449.3A CN106933572B (en) 2017-02-20 2017-02-20 Measurement model based on LLVM intermediate representation program slice

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710089449.3A CN106933572B (en) 2017-02-20 2017-02-20 Measurement model based on LLVM intermediate representation program slice

Publications (2)

Publication Number Publication Date
CN106933572A CN106933572A (en) 2017-07-07
CN106933572B true CN106933572B (en) 2020-05-19

Family

ID=59423381

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710089449.3A Active CN106933572B (en) 2017-02-20 2017-02-20 Measurement model based on LLVM intermediate representation program slice

Country Status (1)

Country Link
CN (1) CN106933572B (en)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107621957B (en) * 2017-10-17 2020-10-27 中汇信息技术(上海)有限公司 Component measurement method, server and computer readable storage medium
CN107943516B (en) * 2017-12-06 2020-11-13 南京邮电大学 Clone code detection method based on LLVM
CN111290777B (en) * 2020-01-23 2021-09-17 复旦大学 Code change sequence method oriented to software code unit and code measurement
CN114996149A (en) * 2022-06-16 2022-09-02 南京邮电大学 Code defect prediction method based on program slice measurement

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103970845B (en) * 2014-04-28 2017-03-22 南京邮电大学 Webpage filtering method based on program slicing technology
CN104572476B (en) * 2015-01-30 2017-06-30 南京邮电大学 A kind of infeasible paths detection method based on program slice
CN104850411B (en) * 2015-06-10 2018-06-22 清华大学 Storage system benchmark evaluation program generation method and device
CN105700893A (en) * 2016-02-23 2016-06-22 南京邮电大学 LLVM IR program slicing method based on improved system dependence graph
CN105787369B (en) * 2016-02-29 2018-08-17 南京邮电大学 Android software safety analytical method based on slice measurement

Also Published As

Publication number Publication date
CN106933572A (en) 2017-07-07

Similar Documents

Publication Publication Date Title
AlOmar et al. On the impact of refactoring on the relationship between quality attributes and design metrics
CN106933572B (en) Measurement model based on LLVM intermediate representation program slice
US10025696B2 (en) System and method for equivalence class analysis-based automated requirements-based test case generation
CN103092761B (en) Method and device of recognizing and checking modifying code blocks based on difference information file
US9354867B2 (en) System and method for identifying, analyzing and integrating risks associated with source code
CN103235759A (en) Method and device for generating test cases
CN101739339A (en) Program dynamic dependency relation-based software fault positioning method
CN107678971B (en) Code taste driven code defect prediction method based on clone and coupling detection
CN110515826A (en) A kind of software defect positioning method based on number frequency spectrum and neural network algorithm
CN104239219A (en) Software defect positioning technology on-line evaluating and experimenting platform and method based on coverage
CN104572474A (en) Dynamic slicing based lightweight error locating implementation method
CN110795073A (en) Computer software development method
US10324829B2 (en) Application testing
AlOmar et al. Do design metrics capture developers perception of quality? an empirical study on self-affirmed refactoring activities
CN116954624B (en) Compiling method based on software development kit, software development system and server
Mauša et al. Software defect prediction with bug-code analyzer-a data collection tool demo
CN109508204B (en) Front-end code quality detection method and device
CN106201888A (en) Intelligent video overlap-add procedure device automatic test approach and device
CN115905031A (en) Test case recommendation method based on accurate quality assurance system
Zoubi et al. Study the impact of improving source code on software metrics
CN113641573A (en) Revision log-based automatic testing method and system for program analysis software
CN112329124A (en) CAE model error checking method and device, computer equipment and storage medium
CN111078193A (en) Software development method and system for data analysis system
Wojszczyk The model and function of quality assessment of implementation of design patterns
CN112527682B (en) Model development method for fusing product functionality and user coordination

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant