# US 10,481,879 B2 · Code development using continued machine learnings

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

- Number: US 10,481,879 B2
- Document ID: US10481879B2
- Status: Granted
- Kind: B2
- Application number: 15/942,279
- Filed: 2018-03-30
- Published: 2019-08-08
- Granted: 2019-11-19
- Earliest claimed: 2018-02-07
- Assignees: Microsoft Technology Licensing, LLC
- Applicants: Microsoft Technology Licensing, LLC
- Inventors: Joshua Bates Stevens; John S. Tilford; Guillermo Serrato Castilla; Srivatsn Narayanan; Simon Calvert; Mark Alistair Wilson-Thomas; Deborah Chen; Miltiadis Allamanis; Marc Manuel Johannes Brockschmidt; Kesavan Shanmugam
- Web page: https://patentgrep.com/patent/US10481879B2

## CPC

- G06F 8/35: model driven
- G06F 8/42: {Syntactic analysis}
- G06F 8/75: Structural analysis for program understanding
- G06F 11/3698: Environments for analysis, debugging or testing of software
- G06N 20/00: Machine learning
- G06F 8/33: Intelligent editors
- G06N 5/022: Knowledge engineering; Knowledge acquisition
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G06N: COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS

## Abstract

Improving how a codebase, which may include source code, related databases, test files, code history, and/or changes, is drafted, edited, debugged, or otherwise developed. Machine learning is performed on a model codebase to establish a machine learning model. When a change to a codebase occurs, the machine learning model may be applied to evaluate that change. A change context providing context for this change is accessed. An analyzer then analyzes the change using the machine learning model and at least a part of the change context to generate an analysis result. Some information about the result is rendered. After rendering that information, a determination regarding how a user responded to the information is performed, and a subsequent analysis is then modified based on the user's response.

## Claims

### Claim 1

A computer system comprising: one or more processors; and
one or more computer-readable hardware storage devices having stored thereon computer-executable instructions that, when executed by the one or more processors, cause the computer system to:
within an architecture that includes one or more analyzer components, receive a notification indicating that a codebase has undergone a change from a collaborative code review request service, the notification including a scope of the change;
access a change context that provides context for the change;
perform, by one of the one or more analyzer components, analysis of the change using at least a portion of the change context,
the one analyzer component selected based on the scope of the change;
detect receipt of a result of the analysis;
receive, by an orchestrator service, the result of the analysis from the one analyzer
component, the collaborative code review request service periodically polling the orchestrator service to inquire about the result of the analysis;
cause at least some information of the result to be rendered to a user;
determine how the user responded to the rendered information; and
automatically modify a subsequent analysis performed by at least the one analyzer component based on how the user responded to the rendered information.

### Claim 2 (depends on 1)

The computer system of claim 1, wherein the codebase's change occurs as a part of a collaborative code review request.

### Claim 3 (depends on 1)

The computer system of claim 1, wherein accessing the change context includes:
identifying a context of the codebase; and
based on a determined a scope of the change, extracting the change context from the codebase's context, wherein the change context is extracted from the codebase's context as a result of the change context being identified as corresponding to the change.

### Claim 4 (depends on 1)

The computer system of claim 1, wherein the one analyzer component identifies and accesses the change context.

### Claim 5 (depends on 1)

The computer system of claim 1, wherein each of the one or more analyzer components performs a different type of analysis.

### Claim 6 (depends on 1)

The computer system of claim 1, wherein a probability indication is also rendered with the at least some information, the probability indication indicating a level of confidence associated with the result.

### Claim 7 (depends on 1)

The computer system of claim 1, wherein determining how the user responded to the rendered information includes determining that the user subsequently edited the codebase based on the at least some information that was rendered.

### Claim 8 (depends on 1)

The computer system of claim 1, wherein determining how the user responded to the rendered information includes determining that the user did not subsequently edit the codebase based on the at least some information that was rendered.

### Claim 9 (depends on 1)

The computer system of claim 1, wherein determining how the user responded to the rendered information includes receiving a notice indicating that the user marked the at least some information either as positive information or as negative information and using at least that notice to make the determination.

### Claim 10 (depends on 1)

The computer system of claim 1, wherein modifying the subsequent analysis performed by the one analyzer component includes causing the one analyzer component to learn from the result.

### Claim 11

A method for improving user development of source code, the method being implemented by a computer system that includes one or more processors, the method comprising:
within an architecture that includes one or more analyzer components, receiving a notification indicating that a codebase has undergone a change from a collaborative code review request service, the notification including a scope of the change:
accessing a change context that provides context for the change;
performing, by one of the one or more analyzer components,
analysis of the change using at least a portion of the change context, the one analyzer component selected based on the scope of the change;
detecting receipt of a result of the analysis;
receiving, by an orchestrator service, the result of the analysis from the one analyzer component, the collaborative code review request service periodically polling
the orchestrator service to inquire about the result of the analysis;
causing at least some information of the result to be rendered to a user;
determining how the user responded to the rendered information; and
automatically modifying a subsequent analysis performed by at least the one analyzer component based on how the user responded to the rendered information.

### Claim 12 (depends on 11)

The method of claim 11, wherein the one or more analyzer components are selected for use during a registration of the codebase.

### Claim 13 (depends on 11)

The method of claim 11, wherein the computer system additionally provides access control for the codebase such that an authentication is performed prior to accessing the codebase.

### Claim 14 (depends on 11)

The method of claim 11, wherein at least a part of the change context is extracted from a context associated with the codebase, and wherein the context is generated by:
identifying program files that include at least a part of the codebase; and
building a context graph based on the program files.

### Claim 15 (depends on 11)

The method of claim 11, wherein each of the one or more analyzer components is an instance that provides isolation between the analysis performed for the codebase and other analyses performed for different source code by other instances.

### Claim 16 (depends on 11)

The method of claim 11, wherein the change context includes one or more context portions associated with the change.

### Claim 17

One or more hardware storage devices having stored thereon computer-executable instructions that are structured to be executable by one or more processors of a computer system to thereby cause the computer system to:
within an architecture that includes one or more analyzer components, receive a notification indicating that a codebase has undergone a change from a collaborative code review request service, the notification including a scope of the change:
access a change context that provides context for the change;
perform, by one of the one or more analyzer components, analysis of the change using at least a portion of the change context,
the one analyzer component selected based on the scope of the change;
detect receipt of a result of the analysis;
receive, by an orchestrator service, the result of the analysis from the one analyzer
component, the collaborative code review request service periodically polling the orchestrator service to inquire about the result of the analysis;
cause at least some information of the result to be rendered to a user;
determine how the user responded to the rendered information; and
automatically modify a subsequent analysis performed by at least the one analyzer component based on how the user responded to the rendered information.
