# US 10,503,743 B2 · Integrating search with application analysis

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,503,743 B2
- Document ID: US10503743B2
- Status: Granted
- Kind: B2
- Application number: 14/943,312
- Filed: 2015-11-17
- Published: 2016-03-10
- Granted: 2019-12-10
- Earliest claimed: 2013-10-02
- Assignees: Microsoft Technology Liscensing, LLC
- Applicants: Microsoft Technology Licensing, LLC
- Inventors: Scott M. Louvau; Michael C. Fanning; Christopher M. Faucon
- Web page: https://patentgrep.com/patent/US10503743B2

## CPC

- G06F 16/248: Presentation of query results
- G06F 8/70: Software maintenance or management
- G06F 8/75: Structural analysis for program understanding
- G06F 16/2228: {Indexing structures}
- G06F 16/245: Query processing
- G06F 16/30: of unstructured textual data (document management systems G06F16/93)
- G06F 8/20: Software design
- G06F 8/36: Software reuse
- G06F 8/71: Version control (security arrangements therefor G06F21/57); Configuration management
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Aspects of the subject matter described herein relate to searching. In aspects, a software package may be received and transformed into searchable data. Static and dynamic analysis may be performed on code and data included in the software package. A data structure is created that may index the code, metadata, indexable resources, and analysis artifacts associated with the software package. The data structure may be used to satisfy queries and the transformed data and analysis artifacts may be made available for viewing.

## Claims

### Claim 1

A method implemented at least in part by a computer, the method comprising:
receiving a search query that includes a search term;
searching for the search term in an indexed data structure that includes searchable terms obtained from code of a software package and searchable terms obtained from analysis data that was generated by analyzing the code of the software package, the analysis data including at least one of static analysis data generated without execution of the code of the software package or dynamic analysis data generated by execution of the code of the software package, wherein the indexed data structure associates the searchable terms with locations of the searchable terms in the code of the software package and in the analysis data; and
providing a result set that includes an indication of where the search term is located in a code element of the software package and an indication of where the search term is located in a portion of the at least one of the static analysis data or the dynamic analysis data that was generated by analyzing the code element of the software package.

### Claim 2 (depends on 1)

The method of claim 1, wherein the indexed data structure includes searchable terms obtained from metadata and resources that were extracted from the software package.

### Claim 3 (depends on 2)

The method of claim 2, wherein the indexed data structure associates the searchable terms with locations of the searchable terms in the metadata and in the resources that were extracted from the software package.

### Claim 4 (depends on 1)

The method of claim 1, wherein the indexed data structure further associates the searchable terms and locations of the searchable terms in additional metadata that is not included in the software package.

### Claim 5 (depends on 1)

The method of claim 1, wherein the indexed data structure further associates the searchable terms and locations of the searchable terms in an annotation regarding the code element of the software package.

### Claim 6 (depends on 1)

The method of claim 1, wherein the indexed data structure further associates the searchable terms and locations of the searchable terms in multiple versions of the software packages.

### Claim 7 (depends on 1)

The method of claim 1, wherein the indexed data structure further associates the searchable terms and locations of the searchable terms in a different software package.

### Claim 8 (depends on 1)

The method of claim 1, wherein the analysis data comprises code coverage data and runtime tracing data.

### Claim 9 (depends on 1)

The method of claim 1, wherein the indexed data structure comprises an inverted word index.

### Claim 10 (depends on 1)

The method of claim 1, wherein:
the query includes a plurality of search terms, and
the result set is limited based on the plurality of search terms.

### Claim 11

A computer system comprising:
at least one processor structured to execute computer-executable instructions; and memory storing computer-executable instructions, that when executed by the at least one processor, cause the computer system to perform actions comprising:
generating analysis data by performing at least one of a static analysis task or a dynamic analysis task to analyze code of a software package;
receiving a search query that includes a search term;
searching for the search term in an indexed data structure that includes searchable terms obtained from the code of the software package and searchable terms obtained from analysis data that was generated by said performing at least one of the static analysis task or the dynamic analysis task to analyze the code of the software package, wherein the indexed data structure associates the searchable terms with locations of the searchable terms in the code of the software package and in the analysis data; and
providing a result set that includes an indication of where the search term is located in a code element of the software package and an indication of where the search term is located in a portion of the analysis data that was generated by said performing at least one of the static analysis task and the dynamic analysis task to analyze the code element of the software package.

### Claim 12 (depends on 11)

The computer system of claim 11, wherein the indexed data structure includes searchable terms obtained from metadata and resources that were extracted from the software package.

### Claim 13 (depends on 12)

The computer system of claim 12, wherein the indexed data structure associates the searchable terms with locations of the searchable terms in the metadata and in the resources that were extracted from the software package.

### Claim 14 (depends on 11)

The computer system of claim 11, wherein the indexed data structure further associates the searchable terms and locations of the searchable terms in additional metadata that is not included in the software package.

### Claim 15 (depends on 11)

The computer system of claim 11, wherein the indexed data structure further associates the searchable terms and locations of searchable terms in an annotation regarding the code element of the software package.

### Claim 16 (depends on 11)

The computer system of claim 11, wherein the indexed data structure further associates the searchable terms and locations of the searchable terms in multiple versions of the software packages.

### Claim 17 (depends on 11)

The computer system of claim 11, wherein the indexed data structure further associates the searchable terms and locations of the searchable terms in a different software package.

### Claim 18

A computer storage medium storing computer-executable instructions that, when executed, cause a computer system to perform actions comprising:
generating analysis data by performing at least one of a static analysis task or a dynamic analysis task to analyze code of a software package;
receiving a search query that includes a search term;
searching for the search term in an indexed data structure that includes searchable terms obtained from the code of the software package and searchable terms obtained from the analysis data that was generated by said performing at least one of the static analysis task or the dynamic analysis task to analyze the code of the software package, wherein the indexed data structure associates the searchable terms with locations of the searchable terms in the code of the software package and in the analysis data; and
providing a result set that includes an indication of where the search term is located in a code element of the software package and an indication of where the search term is located in a portion of the analysis data that was generated by said performing at least one of the static analysis task and the dynamic analysis task to analyze the code element of the software package.
