Code Completion Using Markov Chain Models for Custom Classes

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Software development environments face challenges in providing accurate code completion suggestions due to lengthy lists of irrelevant candidates, which can hinder developer productivity and increase errors.

Innovation Solution

The implementation of sequential machine learning models, specifically n-order Markov chain models, that predict method invocations by analyzing context characteristics from source code programs, generating custom and overlapping class models to improve code completion accuracy.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If traditional code completion is used to provide all possible candidates, then completeness of suggestions is improved, but list length and relevance deteriorate

Engineering Contradiction:
Improvecompleteness of suggestionsVSAvoidlist length
Core Design Contradiction:
Adaptability or versatilityVSQuantity of substance

Solution Approach 1:

The patent extracts only the most relevant code completion candidates based on contextual analysis rather than presenting all possible candidates. The system identifies and extracts the subset of candidates that are most likely to be what the developer wants, filtering out irrelevant options to reduce list length while maintaining completeness of useful suggestions.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The patent applies different levels of filtering and ranking to different contexts. Instead of uniform treatment of all candidates, the system analyzes local contextual factors (surrounding code, method signatures, usage patterns) to determine which candidates should be highlighted or included, making the suggestion quality adapt to specific local situations.

Inventive Principle:
Principle #3Local quality

2Adaptability or versatility

If traditional code completion provides all possible candidates, then coverage of options is improved, but developer time to find the right element increases

Engineering Contradiction:
Improvecoverage of optionsVSAvoidtime to find element
Core Design Contradiction:
Adaptability or versatilityVSLoss of time

Solution Approach 1:

The patent performs preliminary analysis and ranking of code completion candidates before they are presented to the developer. The system pre-processes the candidate list by analyzing contextual relevance, usage patterns, and code structure in advance, so that when candidates are displayed, they are already ordered by likelihood of being the desired element, reducing the time needed to find the right one.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The system incorporates feedback from usage patterns and contextual analysis to dynamically adjust the ordering and filtering of completion candidates. By monitoring what developers actually select and how code is structured in the current context, the system provides feedback loops that improve the accuracy and speed of candidate ranking over time.

Inventive Principle:
Principle #23Feedback

3Measurement precision

If context analysis with machine learning is implemented, then code completion accuracy is improved, but system complexity increases

Engineering Contradiction:
Improvecode completion accuracyVSAvoidsystem complexity
Core Design Contradiction:
Measurement precisionVSDevice complexity

Solution Approach 1:

The patent introduces machine learning models as intermediary components that bridge the gap between raw code context and completion suggestions. These models act as mediators that automatically analyze contextual features, usage patterns, and code structure without requiring complex manual rule systems, thereby improving accuracy while managing system complexity through specialized intermediate processing layers.

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentUS10628130B2Code completion of custom classes with machine learning
Publication Date: 2020.04.21 MICROSOFT TECHNOLOGY LICENSING LLC
  • US10628130B2 patent drawing
  • US10628130B2 patent drawing
  • US10628130B2 patent drawing

AI summary

A code completion tool uses machine learning models generated for custom or proprietary classes associated with a custom library of classes of a programming language and for overlapping classes associated with a standard library of classes for the programming language. The machine learning models are trained with features from usage patterns of the custom classes and overlapping classes found in two different sources of training data. An n-order Markov chain model is trained for each custom class and each overlapping class from the usage patterns to generate probabilities to predict a method invocation more likely to follow a sequence of method invocations for a custom class and for an overlapping class.