CN102129404B - The selectivity loading method of code element and system for code analysis - Google Patents

The selectivity loading method of code element and system for code analysis Download PDF

Info

Publication number
CN102129404B
CN102129404B CN201110026284.8A CN201110026284A CN102129404B CN 102129404 B CN102129404 B CN 102129404B CN 201110026284 A CN201110026284 A CN 201110026284A CN 102129404 B CN102129404 B CN 102129404B
Authority
CN
China
Prior art keywords
code element
code
software entity
ring
group
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
CN201110026284.8A
Other languages
Chinese (zh)
Other versions
CN102129404A (en
Inventor
D·巴尔托洛梅奥
T·L·金
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
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
Priority claimed from US12/687,154 external-priority patent/US9710355B2/en
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN102129404A publication Critical patent/CN102129404A/en
Application granted granted Critical
Publication of CN102129404B publication Critical patent/CN102129404B/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

There has been described and include the system and method for the code element comprised in multiple software entitys of target software entity and one or more reference software entity for optionally loading, target software entity is analyzed by the code analysis tool to help such as static code analysis tool etc.In one embodiment, all code elements in target software entity are loaded, and in reference software entity, only those are confirmed as from the point of view of dependence being that most important code element is loaded.The code element loaded can be used for obtaining the suitably definition of the code element being included in target software entity for code analysis.

Description

The selectivity loading method of code element and system for code analysis
Background technology
Once, software application is executable code and the data of monoblock, although the application data of some such as variable settings etc can be stored in single file.On the contrary, the software application in the present age and other executable code (such as operating system assembly) are tied to and utilize self-contained software entity, and each self-contained software entity provides the one group of function that can be used by one or more application programs or other executable code.The use of this self-contained software entity makes it possible to the software entity identical by different Application sharing, the executable file allowing application program becomes less, make big exploration project can be divided into less project, and allow to update software entity and use their application program without renewal.
Assembly (assembly) is exactly such self-contained software entity.Specifically, assembly is that one exists.NET in framework for disposing, version formulates and the code library of safety.The compiler being properly configured by use is (such as,.NET compiler) compiling source code (such as, C#, C++ or Visual Basic source code) generate assembly.Assembly includes metadata and intermediate language instructions.The code element that metadata description defines with source code, such as type, member (such as, method, field, characteristic, event) and attribute.Intermediate language instructions is when assembly is performed the operation code being carried out operating.The instant compiler that assembly is translated into the special executable code of machine contributes to operation code and the cooperation upon execution of part metadata.
Exist and the software entity of such as assembly etc is analyzed and is not necessarily to perform software entity or employs the static code analysis tool of application program of software entity.Static code analysis tool the person of being developed can be used the defect with inspection software entity and/or guaranteed software entity procedure to follow specification or development guides.According to embodiment, static code analysis is according to may be implemented as stand-alone utility or can comprising a part of IDE (IDE).
Static code analysis tool can be called to analyze the assembly of the part being assembly set for realizing application program or other executable code.Assembly to be analyzed can be described as target assembly.In order to analyze the code element in target assembly, static code analysis tool may need to obtain the suitable definition of this code element from target assembly metadata.But, the code element being included in target assembly likely can not be defined in the case of the second code element comprised without reference to another assembly in assembly set suitably.Such as, a kind of certain types of method being included in target assembly likely can not be defined in the case of the definition of the type comprised without reference to another assembly in assembly set suitably.In this case, it may be said that first code element depends on second code element.Same, second code element may also rely on another code element in another assembly in set, and the rest may be inferred.Therefore, in order to obtain the suitable values of first code element, static code analysis tool can be required other assembly reading target assembly and comprising the code element that first code element relies on directly or indirectly.These other assemblies are referred to alternatively as with reference to assembly.
A kind of for guaranteeing that each assembly in assembly set was loaded in system storage before analyzing target assembly by the traditional method requirement that any this dependence can be solved by static code analysis tool.This fully closed bag being referred to alternatively as loading assembly.Generally, this method causes loading the information much larger than being actually needed, and can cause performance issue in limited time when system storage has.This method also can cause integrity problem, because it requires all of computer access that can be performed static code analysis tool with reference to assembly, but the most such.
Another kind of traditional method relates to on-demand reading assembly to resolve dependence.According to this method, when the first code element during static code analysis tool reads the first assembly and when determining that first code element with reference to the second code element comprised in another assembly, at this moment static code analysis tool will be attempted reading this second code element to resolve this dependence from this another assembly.If second code element further relies on third generation data code, then static code analysis tool also will read third generation code element at that time and usually resolve dependence.This process will continue, until all directly or indirectly dependences of first code element are the most resolved.For example, it is assumed that method A call method B, method B call method C, and method C call method D.In the embodiment using on-demand loading method, for the suitable values of preparation method A, static code analysis tool will load all of four methods and the type of those methods requirement.Although this method typically reduces the quantity of information read from each assembly compared with the method for the fully closed bag loading assembly, but this method will still result in loading ratio and is actually needed more information.Such as, with continued reference to foregoing relate to the example of method A, B, C, D, for the suitable definition of preparation method A, static code analysis tool may only need the signature of loading method A and method main body and the only signature of method B.Method C and D may be completely without being loaded.Additionally, the type involved by method B may only need be named as placeholder and therefore need not be loaded from actual assembly.
Therefore, needing the system and method for a kind of improvement including the code element comprised in multiple software entitys of target software entity and one or more reference software entity for loading, target software entity is analyzed by the code analysis tool to help such as static code analysis tool etc.The system and method for this improvement should be able to overcome the one or more shortcomings relevant to the traditional method of loading code element as above.
Summary of the invention
There has been described the system and method for optionally loading the code element comprised in multiple software entity, software entity includes target software entity and contributes to one or more reference software entities that target software entity is analyzed by the code analysis tool of such as static code analysis tool etc.The code element loaded can be used for obtaining the suitably definition of the code element being included in target software entity for code analysis.Software entity can include.NET assembly, certain present invention is not limited to this.
According to some embodiment described herein, the first subset allocation of code element is given first group and by the second subset allocation of code element to second group by system and method.Then, the code element only distributing to first group is loaded, and wherein loading code element includes accessing the software entity comprising this code element.In another embodiment, first group includes the first ring and the second ring, the all code elements that will be contained in target software entity distribute to the first ring to give first group to include the first subset allocation of code element, and will be contained in any code element that code element in one or more reference software entity, that be included in target software entity directly relied on and distribute to the second ring.In another embodiment, second group includes the 3rd ring, and distributes to the 3rd ring to second group of code element including that the code element that is any that be not allocated to the second ring and that distribute to the second ring that will be contained in one or more reference software entity directly relies on the second subset allocation of code element.Further according to this embodiment, system and method can be that each code element distributing to the 3rd ring additionally creates a placeholder named.In another embodiment, any be not allocated to first, second or the 3rd the code element of ring be not loaded or with represented by the placeholder of name.
According to other embodiment described herein, system and method loads all code elements being included in target software entity, and wherein loading code element includes reading the software entity comprising code element.Always according to these embodiments, the subset being only included in the code element in one or more reference software entity is selectively loaded, and the code element that wherein basis is included in target software entity depends on the degree of the code element being included in reference software entity and determines whether the code element comprised in reference software entity is loaded.This selectivity loads the minimum number that can include that the dependence such as determining between the code element being included in target software entity and the code element being included in one or more reference software entity links, and if the minimum number of dependence link subsequently is less than n, loads the code element being included in the one or more reference software entity, wherein n is greater than the integer of 1.Always according to this embodiment, if the minimum number of dependence link is equal to n, system and method can be that the code element being included in the one or more reference software entity creates named placeholder.
In accordance with the above, some embodiment the most only loads those and is included in reference software entity, from being most important code element for obtaining the suitably definition of the code element being included in target software entity from the point of view of dependency angle.Owing to above-mentioned system and method only loads the subset of the code element being included in multiple software entity, compared with using traditional method loading, less information is advantageously loaded into system storage by embodiment.This can bring the systematic function of improvement, especially has in limited time when system storage.Further, since only the subset of code element needs to be loaded, it is not that each reference software entity must can be performed the calculating system of software analysis tool and accessed.This can reduce integrity problem.
It addition, embodiment that the performance of code analysis tool can be made to obtain is more consistent and measurable.Such as, arbitrary multiple predefined or user-defined rules can be applied to target software entity (wherein in code analysis tool, each rule can include the most certain types of test, static code analysis tool is able to carry out this test to ensure compliance with some standard, specification or development guides, and the defect etc. in detection code) and each rule can ask in the embodiment of different data, whichever (which) rule is employed, and the degree that the dependence being associated with the code element referenced by each rule can be resolved will be identical.Therefore, the code element being loaded will not be activated according to which rule and change by this group.
There is provided this general introduction be in order to introduce in simplified form will be described in detail below in some concepts of further describing.Present invention is not intended as identifying key feature or the essential feature of theme required for protection, is intended to be used to limit the scope of theme required for protection.Moreover, it is noted that the present invention is not limited to the specific embodiment described in detailed description of the invention and other parts herein.These embodiments are described herein merely illustrative purpose.According to teaching herein, other embodiment will be apparent from for those skilled in the relevant art.
Accompanying drawing is sketched
The accompanying drawing being hereby incorporated by a description part together illustrates embodiments of the invention with description, plays the effect of the principle explaining the present invention equally, and makes those skilled in the relevant art be capable of and use the present invention.
Fig. 1 is the block diagram of the Example Operating Environment that can realize embodiment wherein.
Fig. 2 is the block diagram of assembly, and the most all of assembly element is combined into a single physical file.
Fig. 3 is the block diagram of assembly, during wherein assembly element is comprised in multiple physical file.
Fig. 4 shows that the code element being included in the multiple software entitys including target software entity and one or more reference software entity for loading is beneficial to the code analysis tool flow chart to the method for the analysis of target software entity.
Fig. 5 shows that the employing of the method for the flow chart of Fig. 4 is for selecting the flow chart of the specific embodiment of the ring model for the code element loaded.
Fig. 6 is the example of the distribution of the code element of each of the multiple rings according to embodiment.
Fig. 7 shows that the code element being included in the multiple software entitys including target software entity and one or more reference software entity for loading is beneficial to the code analysis tool flow chart to the alternative method of the analysis of target software entity.
Fig. 8 shows the flow chart of the ad hoc approach for the step performing the flow chart shown in Fig. 7.
Fig. 9 shows the exemplary computer system that can be used for realizing the various aspects of each embodiment.
Combining by detailed description below and with accompanying drawing, the features and advantages of the present invention will become apparent from, and in the description of all accompanying drawings, identical reference represents corresponding element.In the accompanying drawings, the element that identical reference generally represents identical, intimate and/or structure is similar.The accompanying drawing that in reference, this reference of leftmost Digital ID occurs first.
Detailed description of the invention
I. introduce
The accompanying drawing relating to the example embodiment exemplified with the present invention described in detail below.But, the scope of the present invention is not limited to these embodiments, and defined by the appended claims.Therefore, those exceed embodiment shown in the drawings, the revision of the embodiment of such as example, remain on and are covered by the invention.
The embodiment of this descriptions of expression like this such as " embodiments ", " a kind of embodiment ", " exemplary embodiment " mentioned in description potentially includes a specific features, structure or characteristic, but is not that each embodiment must comprise this specific features, structure or characteristic.Additionally, this kind of phrase is also not necessarily referring to same embodiment.In addition, although being not explicitly depicted or describing, but when a specific features, structure or characteristic combine description with an embodiment, it should be understood that this feature, structure or characteristic can be combined with other embodiments in the ken of those skilled in the relevant art.
II. the example system loaded for the selectivity of the code element of code analysis and method
Fig. 1 is the block diagram of the Example Operating Environment that can realize embodiment wherein.Specifically, Fig. 1 is the block diagram of system 100, and this system 100 is configured to carry out one or more software entitys the code analysis of such as static code analysis etc.As shown in fig. 1, system 100 includes calculating platform 102 based on processor and display device 104, one or more user input device 106 and hard disk drive 108, and each is all connected communicatedly with calculating platform 102.System 100 is intended to broadly represent any system based on processor, based on this system, can be that the interests of user perform software.Such as, but unrestricted, and system 100 can include desk side computer system, laptop computer or tablet PC.Additionally, system 100 can include video game system, personal digital assistant (PDA), smart phone or portable electronic device.The concrete example of the computer system based on processor that can be used for the system that realizes 100 will combine Fig. 9 later and describe.
The most as shown in fig. 1, calculate platform 102 and at least include processing unit 112, system storage 114, display device interfaces 116, one or more user input device interface 118 and hard disk drive interface 120.These assemblies are connected with each other by communication construction 122, and communication construction 122 can include the most one or more bus structures.
One or more processors of the data that processing unit 112 includes being configured to performing software module and access is stored in system storage 114 or processor core.It is stored in the software module in system storage 114 and at least includes static code analysis module 130.System storage 114 is intended to broadly represent any kind of memorizer, and this memorizer can be used for the data storing software module respectively and processed unit 112 being performed and accessed.In one embodiment, system storage 114 includes volatile memory, such as random access memory (RAM).
Display device interfaces 116 include presenting from processing unit 112 or system storage 114 receive for display video on display device 104 or the interface of image information.Display device interfaces 116 can include such as being configured to performing video or figure presents video or the graphics card of operation.Realization according to system 100, display device 104 can include being physically separated with calculating platform 102 but wiredly and/or wirelessly be connected and calculate, by suitable, display, projector or the other type of display device that platform 102 is connected, or it is integrated in the display device in the physical arrangement identical with calculating platform 102, the integrated display in such as laptop computer, tablet PC, PDA or portable electronic device.
User input device interface 118 includes for receiving the user's input information produced by user input device 106 and these input information passing to one or more interfaces that processing unit 112 is used for processing.Depending on realizing, user input device 106 can include mouse, keyboard, touch pads, trace ball, action bars, fixed point bar, touch screen (such as integrated with display device 104 touch screen), have cotton gloves, motion tracking sensor, game console or control pad or the video capturing device of such as photographing unit etc.But, these examples are not intended to restriction, and user input device 106 can include the other type of equipment in addition to enumerated above.Depend on realizing, each user input device 106 physically can be separated with calculating equipment but is connected with calculating platform 102 by suitable wiredly and/or wirelessly connection, or can be incorporated in integrated keypad, touch pads or the touch screen in the physical arrangement identical with calculating platform 102, in such as laptop computer, tablet PC, PDA or portable electronic device.
Hard disk drive interface 120 includes the suitable interface for hard disk drive 108 is written and read data, and hard disk drive 108 is the non-volatile memory device of known type, and it stores digital encoded data with magnetic surface on atwirl disc.Depend on realizing, hard disk drive interface 120 can include parallel advanced technology adnexa (P-ATA, also known as IDE or EIDE) interface, Serial Advanced Technology Attachment (SATA) interface, small computer system interface (SCSI), serial attached SCSI, fiber channel interface or USB (universal serial bus) (USB) interface, but these are only example.
Static code analysis module 130 is software module, and when processed unit 112 performs, it is analyzed self-contained software entity and performs software entity or any application program without reality or use their other executable code.Static code analysis module 130 can be performed detect the defect in these software entitys and/or guarantee that these software entitys are consistent with program specification or development guides by the user of such as software developer etc.Depending on realizing, static code analysis module 130 can be implemented as independent application program or include a part of IDE (IDE), such asVISUAL TEAM SYSTEM or similar.Additionally, static code analysis module 130 can be implemented as having the feature automatically performed when compiling self-contained software entity by compiler.
The feature of static code analysis tool 130 can be called by the operation of one or more user input devices 106 by user.The user's input information generated by this operation is passed to processing unit 112 by user input device interface 118.Static code analysis module 130 term of execution, the information that this module generates can be presented on display device 104 by display device interfaces 116 and watch for user.
As shown in fig. 1, static code analysis module 130 includes several assembly or submodule, including code element loader 132, static code analyzer 134 and Report Builder 136, is each configured to when processed unit 112 performs realize some function.Specifically, the code element will analyzed by static code analysis module 130 that code element loader 132 is configured to will be contained in software entity is loaded in system storage 114.Static code analyzer 134 is configured to analyze the other side (such as, such as code behavior) of the code element loaded by code element loader 132 and software entity to be analyzed.In one embodiment, static code analyzer 134 is configured to analyze code element and the other side of software entity to be analyzed of loading according to one or more predefined or user-defined rule.Each rule can include the test of the executable a certain type of such as static code analyzer 134, to guarantee to be consistent with some standard, specification or development guides, and the defect etc. in detection code.Report Builder 136 is configurable to generate the report of the result of the analysis carried out about static code analyzer 134.These reports can describe the defect or the aspect being considered not correspond of software entity such as detected in the software entity through analyzing with some program specification or development guides.These reports can be presented to display device 104 by display device interfaces 116 and be watched for user.Alternately or additionally, these reports can be stored in the one or more files being positioned on hard disk drive 108 or be printed by the printer (not shown in figure 1) being connected with calculating platform.
Static code analysis module 130 can be called to analyze the software entity of the part as the software entity set for realizing application program or other executable code.This software entity set is illustrated as the software entity 140 in system 100.Software entity to be analyzed is represented as target software entity 142.In order to make static code analysis module 130 can analyze the code element in target software entity 142, code element loader 132 is required to obtain the suitable definition of code element.This definition can be obtained by the information that reading is stored in target software entity 142.But, the code element being included in target software entity 142 likely can not be defined in the case of the second code element comprised without reference to another software entity in software entity set 140 suitably.Such as, the method for a certain type being included in target software entity 142 likely can not be defined in the case of the definition of the type comprised without reference to another software entity in software entity set 140 suitably.In this case, it may be said that first code element depends on second code element.Same, second code element may also rely on another code element in another software entity in set 140, and the rest may be inferred.Therefore, in order to obtain the suitable values of first code element, code element loader 132 can be required to read other software entity comprising, in target software entity 142 and set 140, the code element that first code element directly or indirectly relies on.These other software entitys are represented as the reference software entity 144 in system 100.
In one embodiment, each target software entity 142 and each reference software entity 144 include assembly.As those skilled in the relevant art are to understand, assembly is.NET in framework for disposing, version formulates and the code library of safety.The compiler being properly configured by use is (such as,.NET compiler) compiling source code (such as, C#, C++ or Visual Basic source code) generate assembly.
Assembly includes inventory, code element metadata and intermediate language instructions.Assembly inventory includes the release requirement of regulation assembly and the metadata of secure identity, enumerate the file constituting assembly, how the reference in code element and the source of assembly is mapped to by description comprises its statement and file of implementation, and enumerates other assembly that assembly relies on.Code element metadata describes the code element defined in source code, such as type, member (such as, method, field, characteristic, event) and attribute.Intermediate language instructions is when assembly is performed the operation code being carried out operating.The instant compiler that assembly is translated into the special executable code of machine contributes to operation code and the cooperation upon execution of part metadata.Assembly may also include the resource (such as, such as .bmp or .jpg file etc) that assembly upon execution is used.
The all elements of assembly can be combined into a single physical file.Fig. 2 is the block diagram of the exemplary assembly of the single physical file 200 including being labeled as " MyAssembly.dll ".File 200 includes inventory 202, code element metadata 204, intermediate language code 206 and resource 208.Alternatively, during the element of assembly can be contained in several physical file.These files can be the module of compiled code required by application program or other executable code, resource or other file.Multifile assembly can be used for the module that such as combination different language is write, or is used for coming in the module by the most original code element is put into download the most when needed the download of optimization application.The block diagram of the exemplary assembly that Fig. 3 is included in several physical file.Specifically, assembly 300 is included in three files: be labeled as the file 310 of " MyAssembly.dll ", is labeled as the file 320 of " Util.netmodule " and is labeled as the file 330 of " Graphic.bmp ".File 310 includes inventory 312, code element metadata 314 and intermediate language code 316.File 320 includes independent one group code element metadata 322 and intermediate language code 324.File 330 includes resource 332.By being stored in the metadata link in inventory 312 together on these three Documents Logical, byWhen explaining during the most managed operation so that during managed operation, these files are considered as a logical block.
Although there has been described the assembly of the example as software entity 140, it is to be appreciated that software entity 140 is not limited to assembly.On the contrary, software entity 140 can include any kind of self-contained software entity providing the one or more function that can be used by one or more application programs or other executable code.
As shown in fig. 1, the set 140 of software entity is stored on hard disk drive 108.Therefore, in order to read information from target software entity 142 and reference software entity 144, code element loader 132 must pass through hard disk drive interface 120 access hard disk driver 108.Although set 140 is shown as being stored in and calculating on the hard disk drive 108 that platform 102 is connected in FIG, but those skilled in the relevant art will readily appreciate that the set 140 of software entity is storable in be connected to calculate in any kind of non-volatile memory device or the system of platform 102 by suitable wired or wireless interface communication.Such as, set 140 is storable in being connected to calculate on remote storage system or the equipment of platform 102 by LAN or wide area network, but this is only an example.
The dependence being as noted previously, as between code element, code element loader 132 may be required the suitable definition accessing multiple software entity to obtain the code element being included in target software entity 142.As described in the background section, a kind of method guaranteeing to resolve any this dependence can include that configuration code element loader 132 is to be loaded into each software entity in set 140 in system storage 114 before analyzing target software entity 142.But, this method may cause loading the required information that is far longer than, and has adverse effect on the performance of system 100, especially in the case of system storage 114 is limited.When being stored on hard disk drive 108 if not all of reference software entity 144 or otherwise can not be accessed by calculating platform 102, this method also can cause integrity problem.
As background section also described in, another kind guarantees to resolve the method for any this dependence and can include configuring static code analysis module 130 to perform the on-demand reading of software entity to resolve dependence.According to this method, when the first code element during static code analysis module 130 analyzes the first software entity and when determining that first code element with reference to the second code element comprised in another software entity, at this moment static code analysis module 130 will attempt reading this second code element from this another software entity to resolve this dependence.If second code element further relies on third generation data code, then static code analysis module 130 will read third generation code element at that time and usually resolve dependence.This process will continue, until all directly or indirectly dependences of first code element are the most resolved.Although this method reduces the quantity of information read from each software entity compared with the method for all software entitys loaded in set 140, but this method may still result in loading ratio and be actually needed more information.
In order to overcome these shortcomings being associated with traditional method, according to an embodiment, code element loader 132 was configured to before target software entity 142 is analyzed by static code analyzer 134 only selectively load the subset of all code elements described by software entity in set 140.Then, during analyzing target software entity 142, static code analyzer 134 uses the code element loaded to resolve the dependence required for the suitable definition for obtaining the code element being included in target software entity 142.Those are determined most important for obtaining this suitable description or necessary code element to select the subset of code element loaded by code element loader 132 only to include.
By only loading the subset of the necessary code element of suitable definition for providing the code element being included in target software entity 142, code element loader 132 with use traditional method load compared be advantageously loaded with less information in system storage 114.This can bring the systematic function of improvement, especially has in limited time when system storage 114.Additionally, due to only the subset of code element needs to be loaded, it not that each reference software entity 144 must be stored on hard disk drive 108.This can reduce integrity problem.Such as, using traditional method, two different systems that can access different two groups assembly can produce Different Results when analyzing identical software entity or experience different performances.Approach described herein can help prevent these problems.
According to this method, the performance of static code analyzer 134 can show more consistent and measurable.Such as, arbitrary multiple predefined or user-defined rules can be applied to target software entity 142 and each rule can be asked in the embodiment of different data in static code analyzer, whichever (which) rule is employed, and the degree that the dependence being associated with the code element referenced by each rule can be resolved will be identical.Therefore, the code element being loaded will not be activated according to which rule and change by this group.Will be described with code element loader 132 below in conjunction with Fig. 4-8 and load the mode of the code element being included in software entity 140.
Fig. 4 show according to an embodiment for load be included in the multiple software entitys including target software entity and one or more reference software entity code element be beneficial to the code analysis tool flow chart 400 to the conventional method of the analysis of target software entity.In one embodiment, each software entity includes.NET assembly, this is only a nonrestrictive example certainly.In another embodiment, code analysis tool includes static code analysis tool.But, the method can convincingly be used for as other type of code analysis tool loading code element.As it was noted above, code element can include in type, method, characteristic, field and event one or more, these examples are not intended to restrictive certainly.
Although each yuan of the system 100 combined at this above in conjunction with Fig. 1 description is usually described by the method for flow chart 400, those skilled in the relevant art can easily understand that this method is not limited to this embodiment and usually can be realized by other system or unit.
The method of flow chart 400 can be wished that the instruction being analyzed the target software entity 142 in the set 140 of software entity performs by static code analysis module 130 in response to receiving user from user.
As shown in Figure 4, the method for flow chart 400 starts from step 402, and in this step, code element loader 132 will be contained in the first subset allocation of the code element in the set 140 of software entity to first group.Distribution code element is given first group and can be included such as the expression of a designator with the code element in system storage 114 or code element being associated, this designator indicates this code element to be assigned to first group, or distribution code element gives first group can include being included in by this code element in the list of the code element distributing to first group, form or other set.
In step 404, code element loader 132 will be contained in the second subset allocation of the code element in the set 140 of software entity to second group.Distribution code element is given second group and can be included such as the expression of a designator with the code element in system storage 114 or code element being associated, this designator indicates this code element to be assigned to second group, or distribution code element gives second group can include being included in by this code element in the list of the code element distributing to second group, form or other set.
In step 406, code element loader 132 only loads the code element distributing to first group.Loading code element can include the software entity comprising this code element in access hard disk driver 108 (or other non-volatile memory device or system) and a part for this code element or code element be read to system storage 114.Once loading, code element can be made for resolving dependence by static code analyzer 134 subsequently, and thus obtains the suitable definition of the code element being positioned in target software entity 142.
Fig. 5 shows that the method for flow chart 400 uses ring model for selecting the flow chart 500 of the particular implementation for the code element loaded.Specifically, in flow chart 500, performed the first subset allocation of code element to the step 402 of first group by step 502,504 and 506, performed the second subset allocation of code element to the step 404 of second group by step 508 and 510, and perform only to load the step 406 of the code element distributing to first group by step 512.Although each yuan of the system 100 combined at this above in conjunction with Fig. 1 description is also usually described by the method for flow chart 500, those skilled in the relevant art can easily understand that this method is not limited to this embodiment and usually can be realized by other system or unit.
As shown in Figure 5, the method for flow chart 500 starts from step 502, and in this step, all code elements that code element loader 132 will be contained in target software entity 142 distribute to the first ring.
In step 504, code element loader 132 reads the metadata of target software entity 142 and identifies and be included in in reference software entity 144, target software entity 142 code element that the code element comprised is directly relied on.In one embodiment, read metadata and include that reading is positioned at.NET the code element metadata of assembly, this is only an example certainly.
In step 506, any code element of mark in step 504 is distributed to the second ring by code element loader 132.
In step 508, code element loader 132 reads the metadata of the reference software entity with the code element distributing to the second ring, to identify the code element that in reference software entity, code element included, that distribute to the second ring is directly relied on.In one embodiment, read metadata and include that reading is positioned at.NET the code element metadata of assembly, this is only an example certainly.
In step 510, if the code element identified in step 308 is not yet assigned to the second ring, then code element is distributed to the 3rd ring by code element loader 132.
In step 512, code element loader 132 loads all code elements distributing to the first ring and the second ring.As it has been described above, loading code element can include the software entity comprising this code element in access hard disk driver 108 (or other non-volatile memory device or system) and a part for this code element or code element be read to system storage 114.Once loading, code element can be made for resolving dependence by static code analyzer 134 subsequently, and thus obtains the suitable definition of the code element being positioned in target software entity 142.
In step 514, code element loader 132 is that any code element distributing to the 3rd ring creates the placeholder of name in system storage 114 rather than the code element of the 3rd ring is distributed in loading.The placeholder of name is used as the simple expression of code element, and it is suitable for being processed by static code analyzer 134.
The method of above-mentioned flow chart 500 the most only loads those and is considered the necessary code element of suitably description for obtaining the code element in target software entity 142.According to the method, if the code element that code element is comprised in target software entity 142 or code element is comprised in reference software entity 144 and is positioned in target software entity 142 depends directly on it, then code element is considered obtaining this description is necessary.Below with reference to the object lesson taught in Fig. 6 to the method that flow chart 500 is explained further.
In figure 6, first, second, and third ring related in flow chart 500 is shown as the first ring 602 (being designated " ring 1 "), the second ring 604 (being designated " ring 2 ") and the 3rd ring 606 (being designated " ring 3 ").These rings represent the logic groups of each code element comprised in the software entity 140 that code element loader 132 tracks.Additionally, in figure 6, code element 1 is intended to mean that the code element being included in the target software entity being referred to as " software entity A ", code element 2 is intended to mean that the code element being included in the reference software entity being referred to as " software entity B ", code element 3 and 5 is intended to mean that the code element being included in the reference software entity being referred to as " software entity C ", and code element 4 and 6 is intended to mean that the code element being included in the reference software entity being referred to as " software entity D ".
As shown in Figure 6, according to the step 502 of flow chart 500, code element 1 has been distributed to the first ring 602 by code element loader 132, because code element 1 is comprised in software entity A, software entity A is target software entity.Step 504 term of execution, code element loader 132 reads the code element being included in one group of reference software entity that the metadata of software entity A directly relies on cognizance code element 1.As the step for result, code element loader 132 determines that code element 1 directly relies on the code element 2 being included in software entity B, and code element 1 also directly relies on the code element 3 being included in software entity C.These dependences represent with the arrow being respectively directed to code element 2 and code element 3 from code element 1 in figure 6.
According to the step 506 of flow chart 500, the code element 2 and the code element 3 that identify in step 504 are distributed to the second ring 604 by code element loader 132.
During the execution of step 508, code element loader 132 reads software entity B and the metadata of software entity C, because these software entitys are the reference software entities with the code element distributing to the second ring 604, and code element loader 132 identifies and is included in the code element in this group reference software entity, code element 2 and code element 3 directly rely on.As the step for result, code element loader 132 determines that code element 2 directly relies on the code element 3 being included in software entity C and the code element 4 being included in software entity D, and code element 3 directly relies on the code element 5 being included in software entity C.These dependences are with being respectively directed to code element 3 and the arrow of code element 4 from code element 2 and pointing to the arrow of code element 5 from code element 3 and represent in figure 6.
According to step 510, the code element 4 and 5 identified in step 508 is distributed to the 3rd ring 606 by code element loader 132, but the code element 3 identified in step 508 is not distributed to the 3rd ring 606, because code element 3 has been allocated to the second ring 604.
According to step 512, code element loader 132 loads and distributes to the first ring 602 and all code elements of the second ring 604, and this includes code element 1, code element 2 and code element 3.As shown in Figure 6, the step for of in order to perform, code element loader 132 must access software entity A, software entity B and software entity C.But, for software entity B and software entity C, code element loader 132 only need to load the code element being already allocated to the second ring 604 from these software entitys.
According to step 514, software element loader 132 is that the code element distributing to the 3rd ring 606 creates the placeholder named, and this includes code element 4 and code element 5.The placeholder of these names can create according to the information obtained in the metadata read in software entity B and software entity C in step 508.Therefore, step 514 need not load any extra code element.
According to the example shown in Fig. 6, only software entity A, software entity B and software entity C need to be accessed by code element loader 132.Software entity D is completely without accessed, because it does not comprise any code element being positioned in the first ring 602 and the second ring 604.
In the example of fig. 6, the code element 6 being included in software entity D is not a part for the dependence graph of code element 1.It is possible that related software entity can comprise into the uncorrelated code element being not present in dependence graph of such as code element 6 dry on hundred etc.According to an embodiment, it is not allocated to the code element that any code element of first ring the 602, second ring 604 or the 3rd ring 606 includes need not be loaded or not need to be created as the placeholder of name.It is thus possible, for instance the code element 6 of software entity D need not be loaded, it is not required that create the placeholder of name for this code element.
Contrary with above-mentioned ring model method, the traditional method that all code elements in each software entity in set 140 were loaded into before being analyzed target software entity 142 system storage 114 loads all code elements in software entity A, B, C, D by causing.This will imply that hundreds of extra unwanted code element will be loaded, and therefore brings adverse effect to static code analysis module 130 and calculating the performance of other potential software module of execution on platform 102.This method also requires that software entity D can be calculated platform 102 and access with from software entity A loading code element 1.Require that software entity D can be accessed by calculating platform 102 and will be brought unnecessary fault when software entity D can not so access.Therefore, ring model method discussed above is a progress for the strategy of all code elements in each software entity loaded in set 140, needs the quantity of the code element being loaded because which reducing and decreases the quantity allowing for being calculated the software entity that platform 102 accesses.
If using the method for traditional on-demand reading carrying out software entity to resolve dependence, code element 1 to 5 can be loaded.This is because on-demand loading method does not have one code element of degree according to dependence many this concepts necessary, therefore all code elements in the dependence graph of code element 1 will be fully loaded.This is strictly a progress for loading the traditional method of all code elements in software entity 140, because only that the code element in the dependence graph of code element 1 is loaded.Such as, using on-demand loading method, code element 6 will not be loaded.But, on-demand loading method remains that compared with ring model method described herein more code element is loaded and also requires that software entity D can be calculated platform 102 and access.Therefore, ring model method described herein is improved by not requiring the quantity that software entity D could be accessed and decrease the code element that needs are loaded for on-demand loading method.
It should be noted that ring model method described herein need not be defined as any specific amount of ring.In general, this concept relates to from the beginning of the one or more core code elements that must be loaded, then check that the dependence of this required group code element optionally determines the one group of extra code element that should be loaded, the ring that the determination wherein whether being loaded a certain extra code element is distributed to based on this extra code element, and the ring that wherein this extra code element is distributed to is the degree depending on this extra code element based on required code element.
One embodiment of this conventional method is illustrated in the flow chart 700 of Fig. 7.Specifically, flow chart 700 illustrate according to an embodiment for load be included in the multiple software entitys including target software entity and one or more reference software entity code element be beneficial to the code analysis tool method to the analysis of target software entity.In one embodiment, each software entity includes.NET assembly, this is only a nonrestrictive example certainly.In yet another embodiment, code analysis tool includes static code analysis tool.But, the method can convincingly be used for as other type of code analysis tool loading code element.As it was noted above, code element can include in type, method, characteristic, field and event one or more, these examples are not intended to restrictive certainly.
Although each yuan of the system 100 combined at this above in conjunction with Fig. 1 description is usually described by the method for flow chart 700, those skilled in the relevant art can easily understand that the present invention is not limited to this embodiment and usually can be realized by other system or unit.
The method of flow chart 700 can be wished that the instruction being analyzed the target software entity 142 in the set 140 of software entity performs by static code analysis module 130 in response to receiving user from user.
As shown in Figure 7, the method for flow chart 700 starts from step 702, and in this step, code element loader 132 loads all code elements being included in target software entity 142.These code elements are considered to be loaded the core code element being beneficial to obtain its suitable values.As it has been described above, loading code element can include the software entity comprising this code element in access hard disk driver 108 (or other non-volatile memory device or system) and a part for this code element or code element be read to system storage 114.As it has been described above, the step for can include that the code element that will be contained in target software entity distributes to a certain ring in multiple ring.
In step 704, code element loader 132 the most only loads a subset of the code element comprised in reference software entity 144, and the determination wherein whether being loaded the code element comprised in reference software entity relies on this degree being included in the code element in reference software entity based on the code element being included in target software entity 142.As discussed above, the code element being included in target software entity 142 relies on the degree of the code element being included in reference software entity can be reflected by a certain ring that the code element being included in reference software entity is assigned in multiple ring.
Fig. 8 shows the flow chart of the concrete grammar of the step 704 performed in flow chart 700.As shown in Figure 8, the method of flow chart 800 starts from step 802, in this step, the minimum number that the code element during code element loader 132 determines target software entity 142 and the dependence between a code element comprised in reference software entity 144 link.The step for may also include the minimum number a certain ring of distributing in multiple ring by a code element comprised in reference software entity 144 according to the dependence link being sized.
In step 804, if the minimum number that the code element in reference software entity 144 and the dependence between the code element in target software entity 142 link is less than n, then code element loader 132 loads the code element that this reference software entity is comprised, and wherein n is greater than the integer of 1.In one embodiment, the minimum number of dependence link determines code element and is allocated to which ring, and therefore, the step for include being allocated to which ring and loading code element according to code element.In above-mentioned exemplary embodiment described in conjunction with Figure 6, n is equal to 2.Therefore, code element 2 and 3 in second ring 604 is loaded, because the minimum number that the dependence between these code elements with code element 1 links is less than 2, and the code element 4 and 5 in the 3rd ring 606 is not loaded, because the minimum number that the dependence between these code elements with code element 1 links is equal to 2.But, those skilled in the relevant art will readily appreciate that n can be any integer value being more than 1, is accordingly dependent on desired embodiment, and the ring of the code element of any amount of dependence can be selectively loaded.
If the method for flow chart 800 may also include quantity that the dependence between the code element in reference software entity 144 and the code element in target software entity 142 links equal to n, the code element then comprised by this reference software entity creates the placeholder of name, and wherein n is as hereinbefore defined.Therefore, with continued reference to above in association with the exemplary embodiment equal to 2 of the n described by Fig. 6, it is code element 4 and 5 in the 3rd ring 606 placeholder that creates name, because the quantity that the dependence between these code elements with code element 1 link is equal to 2.But, as it has been described above, other the value of n various can be used as.
III. Computer System Implementation
Fig. 9 shows the illustrative computer 900 that can be used for realizing the system 100 above in conjunction with Fig. 1 description.Computer 900 can represent such as conventional personal computer, mobile computer or the universal computing device of workstation form, or computer 900 can be dedicated computing equipment.The description of computer 900 provided herein is for illustrative purposes, it is not intended to limit.Embodiment can also realize in the other type of computer system known to those skilled in the relevant art.
As shown in Figure 9, computer 900 includes processing unit 902, system storage 904 and the various system components including system storage 904 is coupled to the bus 906 of processing unit 902.Processing unit 902 can include one or more processor or process core.If it is one or more that bus 906 represents in the bus structures of any dry type, including memory bus or Memory Controller, peripheral bus, Accelerated Graphics Port and the processor of any one or the local bus using various bus architecture.System storage 904 includes read only memory (ROM) 908 and random access memory (RAM) 910.Basic input/output 912 (BIOS) is stored in ROM 908.
Computer 900 also has one or more following driver: for the hard disk drive 914 being written and read hard disk, for the disc driver 916 being written and read moveable magnetic disc 918 and for the CD drive 920 being written and read such as the removable CD 922 of CD ROM, DVD ROM or other light medium etc.Hard disk drive 914, disc driver 916 and CD drive 920 are connected to bus 906 by hard disk drive interface 924, disk drive interface 926 and CD-ROM drive interface 928 respectively.Driver and their computer-readable mediums of being associated are the nonvolatile storage that computer provides computer-readable instruction, data structure, program module, and other data.Although describing hard disk, moveable magnetic disc and removable CD, but the other kinds of computer-readable medium for storing data can be used, such as flash card, digital video disc, random access memory (RAM), read only memory (ROM) etc..
Multiple program module can be stored on hard disk, disk, CD, ROM or RAM.These programs include operating system 930, one or more application program 932, other program module 934 and routine data 936.Application program 932 or program module 934 can include the most any software module described herein, the software module that the most any combination Fig. 1 describes, and for performing the logic module of any step in various method step described herein, such as performing the logic module of any method step of flow chart 400,500,700 or 800.
User can be ordered and information to computer 900 input by such as keyboard 938 and location equipment 940 input equipment such as grade.Other input equipment (not shown) can include microphone, stick, game console, scanner etc..These and other input equipment is generally connected to processing unit 902 by the serial port interface 942 being coupled to bus 906, but also can be attached by other interface, such as parallel port, game port and USB (universal serial bus) (USB).
Monitor 944 or other kinds of display device are also connected to bus 906 via the interface of such as video adapter 946 etc.In addition to monitor 891, computer 900 can include other peripheral output devices (not shown), such as speaker or printer.
Computer 900 is connected to network 948 (such as, LAN or the wide area network of such as Internet etc) by network interface or adapter 950, modem 952 or other means being used for setting up the communication on network.Modem 952, can be built-in or external, be connected to bus 906 by serial port interface 942.
As used herein, term " computer program medium " and " computer-readable medium " are used for referring to medium, the hard disk that is such as associated with hard disk drive 914, moveable magnetic disc 918, removable CD 922, and other media, such as flash card, digital video disc, random access memory (RAM), read only memory (ROM) etc..
As it has been described above, computer program and module (including application program 932 and other program module 934) can be stored on hard disk, disk, CD, ROM or RAM.These computer programs receive also by network interface 950 or serial port interface 942.These computer programs make computer 900 be capable of features of embodiments discussed herein when being performed by application program or loading.Therefore, these computer programs represent the controller of computer 900.
Embodiment further relates to the computer program including being stored in the software on any computer usable medium.This software can make data handling equipment work as described above when performing in one or more data handling equipment.Embodiment can use the spendable or computer-readable medium of any computer that is any of or that know in the future.The example of computer-readable medium includes but not limited to storage device, such as RAM, hard disk, floppy disk, CD ROM, DVD ROM, Zip dish, tape, magnetic storage apparatus, light storage device, storage device based on MEMS, storage device based on nanotechnology, etc..
IV. conclusion
While various embodiments have been described above, it should be understood that they are intended only as example and unrestricted.But, those skilled in the relevant art obviously will appreciate that and it can be made various change without departing from the spirit and scope of the present invention.Therefore, the width of the invention disclosed herein and scope should not limited by above-mentioned disclosed exemplary embodiment, and only should be determined by subsequent claim and equivalent thereof.

Claims (12)

1. one kind is beneficial to code analysis tool to mesh for loading the code element being included in multiple software entity The method of the analysis of mark software entity, the plurality of software entity includes target software entity and one or more reference Software entity, described method includes:
First group is given by the first subset allocation of code element, including
The all code elements that will be contained in target software entity distribute to the first ring;And
Will be contained in code in one or more reference software entity, that be included in target software entity Any code element that element is directly relied on distributes to the second ring, and wherein said ring represents that described software is real The logic groups of the code element comprised in body;
Second group is given by the second subset allocation of code element;
Only load distribute to the code element of first group for by described code analysis tool to target software entity Carrying out unitary analysis, wherein loading code element includes accessing the software entity comprising this code element;And
Use code element the first subset do not use the second subset of code element through loading code element Perform the unitary analysis to target software entity.
2. the method for claim 1, it is characterised in that described code element include type, method, One or more in characteristic, field, event and attribute.
3. the method for claim 1, it is characterised in that will be contained in one or more reference software real Any code element that code element in body, that be included in target software entity is directly relied on distributes to second Ring includes:
Read target software entity metadata identify be included in one or more reference software entity, The code element that the code element comprised in target software entity is directly relied on.
4. the method for claim 1, it is characterised in that
Wherein said second group includes the 3rd ring,
Wherein give second group by the second subset allocation of code element to include will be contained in one or more reference software What the code element that is all that be not allocated to the second ring and that distribute to the second ring in entity directly relied on appoints What code element distributes to the 3rd ring, and
Wherein said method also includes that each code element for distributing to the 3rd ring creates the placeholder of name.
5. method as claimed in claim 4, it is characterised in that will be contained in one or more reference software real In body, distribute to any code element that the code element of the second ring directly relied on and distribute to the 3rd ring and include:
Read the metadata of one or more reference software entity to identify and be included in one or more reference software In entity, distribute to the code element that the code element of the second ring is directly relied on.
6. method as claimed in claim 4, it is characterised in that also include:
Any code unit being not allocated to first group and second group being not loaded with in the plurality of code element Element;And
Not for any code element being not allocated to first group and second group in the plurality of code element Create the placeholder of name.
7. the system (100) that the selectivity for the code element of code analysis loads, including:
Processing unit (112);And
Storing the memorizer (114) of the software module performed by processing unit, described software module includes code Analytical tool (114), described code analysis tool includes code element loader (132) and code profiler (134), Described code element loader (132) loads the code element included in multiple software entity (140), described Multiple software entitys (140) include target software entity (142) and one or more reference software entity (144), Described code profiler carries out overall code analysis based on the code element loaded to target software entity (142);
Described code element loader (132) is configured to the first subset allocation of code element to first group, Give second group by the second subset allocation of code element, and only load the code element distributing to first group, wherein Loading code element includes accessing the software entity comprising this code element, and described first group includes the first ring and second Ring, and all code elements that wherein code element loader is configured to will be contained in target software entity divide Dispensing the first ring, and will be contained in one or more reference software entity, be included in target software entity Any code element that code element is directly relied on distributes to the second ring, and wherein said ring represents described software entity In the logic groups of code element that comprises;And
Described code profiler is configured to not making through loading code element of the first subset of use code element The overall code analysis to target software entity is performed by the second subset of code element.
8. system as claimed in claim 7, it is characterised in that described code element include type, method, One or more in characteristic, field, event and attribute.
9. system as claimed in claim 7, it is characterised in that described code element loader is configured to read Take the metadata of target software entity identify be included in one or more reference software entity, target software real The code element that the code element comprised in body is directly relied on.
10. system as claimed in claim 7, it is characterised in that described second group includes the 3rd ring, and Wherein said code element loader be configured to will be contained in one or more reference software entity not by Any code element that code element that is that distribute to the second ring and that distribute to the second ring directly relies on distributes to Three rings, and be that each code element distributing to the 3rd ring creates the placeholder named.
11. systems as claimed in claim 10, it is characterised in that described code element loader is configured Identify with the metadata of the one or more reference software entities of reading and be included in one or more reference software entity In, code element that the code element of distributing to the second ring is directly relied on.
12. systems as claimed in claim 10, it is characterised in that described code element loader is configured With any code element being not allocated to first group and second group being not loaded with in the plurality of code element, and And do not create for any code element being not allocated to first group and second group in the plurality of code element The placeholder of name.
CN201110026284.8A 2010-01-14 2011-01-13 The selectivity loading method of code element and system for code analysis Active CN102129404B (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/687,154 2010-01-14
US12/687,154 US9710355B2 (en) 2010-01-14 2010-01-14 Selective loading of code elements for code analysis

Publications (2)

Publication Number Publication Date
CN102129404A CN102129404A (en) 2011-07-20
CN102129404B true CN102129404B (en) 2016-12-14

Family

ID=

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5909575A (en) * 1997-04-30 1999-06-01 Lucent Technologies Inc. Technique for efficiently maintaining system configuration
CN101162428A (en) * 2007-11-22 2008-04-16 上海交通大学 Method for acquiring and converting the state of component in the time of operation during software dynamic evolvement
CN101211262A (en) * 2007-12-25 2008-07-02 覃征 Software architecture description language quick construction and support method

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5909575A (en) * 1997-04-30 1999-06-01 Lucent Technologies Inc. Technique for efficiently maintaining system configuration
CN101162428A (en) * 2007-11-22 2008-04-16 上海交通大学 Method for acquiring and converting the state of component in the time of operation during software dynamic evolvement
CN101211262A (en) * 2007-12-25 2008-07-02 覃征 Software architecture description language quick construction and support method

Similar Documents

Publication Publication Date Title
AU2019262864B2 (en) Execution control with cross-level trace mapping
US10152309B2 (en) Cross-library framework architecture feature sets
US8627296B1 (en) Unified unit and integration test with automatic mock creation
US8666723B2 (en) System and methods for generating and managing a virtual device
Schoeberl et al. The embedded Java benchmark suite JemBench
Griebe et al. A model-based approach to test automation for context-aware mobile applications
US20100115496A1 (en) Filter generation for load testing managed environments
TWI468936B (en) A system and method for the generation of verification programs
US20170242664A1 (en) Method, apparatus, system, and non-transitory computer readable medium for extending at least one function of a package file
WO2014035463A1 (en) System and methods for generating and managing a virtual device
US20150378880A1 (en) Dynamically Configurable Test Doubles For Software Testing And Validation
US20140173564A1 (en) Test scope determination based on code change(s)
US10572247B2 (en) Prototype management system
Ki et al. Reptor: Enabling api virtualization on android for platform openness
JP6771413B2 (en) Software verification device and software verification program
CN105453033A (en) Program testing service
US10380313B1 (en) Implementation and evaluation of designs for heterogeneous computing platforms with hardware acceleration
US9141356B2 (en) Process for generating dynamic type
Salihu et al. Systematic exploration of android apps' events for automated testing
JP4870956B2 (en) Embedded program generation method, embedded program development system, and information table section
Watson Writing high-performance. NET code
CN102129404B (en) The selectivity loading method of code element and system for code analysis
US7533314B2 (en) Unit test extender
JP5545133B2 (en) Static analysis processing system, method, and program
JP5056493B2 (en) Virtual software generator

Legal Events

Date Code Title Description
PB01 Publication
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right

Effective date of registration: 20150730

Address after: Washington State

Applicant after: Micro soft technique license Co., Ltd

Address before: Washington State

Applicant before: Microsoft Corp.

GR01 Patent grant