Selective loading of code elements for code analysis

US9710355B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-9710355-B2
Application numberUS-68715410-A
CountryUS
Kind codeB2
Filing dateJan 14, 2010
Priority dateJan 14, 2010
Publication dateJul 18, 2017
Grant dateJul 18, 2017

How to read this patent

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

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

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

  4. Key dates

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

  5. First independent claim

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

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

Systems and methods are described herein for selectively loading code elements included in a plurality of software entities comprising a target software entity and one or more reference software entities to facilitate analysis of the target software entity by a code analysis tool, such as a static code analysis tool. In one embodiment, all of the code elements in the target software entity are loaded while only those code elements included in the reference software entities that are determined to be most important from a dependency standpoint are loaded. The loaded code elements may be used to obtain suitable definitions of the code elements included in the target software entity for the purpose of code analysis.

First claim

Opening claim text (preview).

What is claimed is: 1. A computer-implemented method for loading into a system memory code elements included in a plurality of software entities stored on one or more non-volatile storage devices, the plurality of software entities comprising a target software entity and one or more reference software entities, a portion of the code elements being loaded into the system memory for analysis of the target software entity by a code analysis tool, the method comprising: assigning, automatically, a first subset of the code elements to a first group based on a dependency analysis, the first subset of the code elements including each code element of the target software entity and each code element of the one or more reference software entities that have at most a first number of dependency links from the target software entity as indicated by the dependency analysis; assigning, automatically, a second subset of the code elements to a second group, the second subset including each code element of the one or more reference software entities that have a second number of dependency links, that is one more than the first number of dependency links, from the target software entity as indicated in the dependency analysis, the first subset being mutually exclusive of the second subset; loading, automatically, only the code elements assigned to the first group into the system memory for analysis of the target software entity by the code analysis tool, loading a code element comprising accessing the software entity in which the code element is included; creating a named placeholder, for each code element in the second subset of code elements, in place of each code element in the second subset of code elements; and performing the analysis of the target software entity on the loaded code elements of the first subset of code elements and the named placeholder for each code element in the second subset of code elements, and without using the second subset of code elements. 2. The method of claim 1 , wherein the code elements comprise one or more of a type, method, property, field, event and attribute. 3. The method of claim 1 , wherein the first group comprises a first ring and a second ring, and the first number of dependency links is 1, and wherein assigning the first subset of the code elements to the first group comprises: assigning to the first ring all of the code elements included in the target software entity; and assigning to the second ring any code element included in the one or more reference software entities upon which a code element included in the target software entity directly depends. 4. The method of claim 3 , wherein assigning to the second ring any code element included in the one or more reference software entities upon which a code element included in the target software entity directly depends comprises: reading metadata of the target software entity to identify code elements included in the one or more reference software entities upon which a code element included in the target software entity directly depends. 5. The method of claim 3 , wherein the second group comprises a third ring, and the second number of dependency links is 2, wherein assigning the second subset of the code elements to the second group comprises assigning to the third ring any code element included in the one or more reference software entities that have not been assigned to the second ring and upon which a code element assigned to the second ring directly depends, and wherein the method further comprises creating the named placeholder for each code element that is assigned to the third ring. 6. The method of claim 5 , wherein assigning to the third ring any code element included in the one or more reference software entities upon which a code element assigned to the second ring directly depends comprises: reading metadata of the one or more reference software entities to identify code elements included in the one or more reference software entities upon which a code element assigned to the second ring directly depends. 7. The method of claim 5 , further comprising: not loading any code elements in the plurality of code elements that have not been assigned to the first group and the second group; and not creating a named placeholder for any code elements in the plurality of code elements that have not been assigned to the first group and the second group. 8. A system comprising: a processing unit; a system memory; and at least one non-volatile storage device that stores software modules to be executed by the processing unit, the software modules including a code analysis tool that comprises a code element loader that loads into the system memory a portion of code elements included in a plurality of software entities stored in the at least one non-volatile storage device and comprising a target software entity and one or more reference software entities and a static code analyzer that performs a code analysis on the target software entity based on the loaded code elements; the code element loader being configured to: automatically assign a first subset of the code elements to a first group based on a dependency analysis, the first subset of the code elements including each code element of the target software entity and each code element of the one or more reference software entities that have at most a first number of dependency links from the target software entity as indicated by the dependency analysis; automatically assign a second subset of the code elements to a second group, the second subset including each code element of the one or more reference software entities that have a second number of dependency links, that is one more than the first number of dependency links, from the target software entity as indicated in the dependency analysis, the first subset being mutually exclusive of the second subset; automatically load into the system memory only the code elements assigned to the first group, and load a code element by accessing the software entity in which the code element is included; and create a named placeholder, for each code element in the second subset of code elements, in place of each code element in the second subset of code elements; and the static code analyzer being configured to perform the code analysis of the target software entity on the loaded code elements of the first subset of code elements and the named placeholder for each code element in the second subset of code elements, and without using the second subset of code elements. 9. The system of claim 8 , wherein the code elements comprise one or more of a type, method, property, field, event and attribute. 10. The system of claim 8 , wherein the first group comprises a first ring and a second ring, and the first number of dependency links is 1, and wherein the code element loader is configured to assign to the first ring all of the code elements included in the target software entity and to assign to the second ring any code element included in the one or more reference software entities upon which a code element included in the target software entity directly depends. 11. The system of claim 10 , wherein the code element loader is configured to read metadata of the target software entity to identify code elements included in the one or more reference software entities upon which a code element included in the target software entity directly depends. 12. The system of claim 10 , wherein the second group comprises a third ring, and the second number of dependency links is 2, and wherein the code element loader is configured to assign to the third ring any code element included in the one or more

Assignees

Inventors

Classifications

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

  • Prevention of errors by analysis, debugging or testing of software · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

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

What does patent US9710355B2 cover?
Systems and methods are described herein for selectively loading code elements included in a plurality of software entities comprising a target software entity and one or more reference software entities to facilitate analysis of the target software entity by a code analysis tool, such as a static code analysis tool. In one embodiment, all of the code elements in the target software entity are …
Who is the assignee on this patent?
Bartolomeo David, King Todd L, Microsoft Technology Licensing Llc
What technology area does this patent fall under?
Primary CPC classification G06F11/3604. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Jul 18 2017 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 8 related publications on this page (citations in our corpus or others sharing the same primary CPC).