IDE Code Suggestion via Contextual Snippet Matching

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current auto-completion features in integrated development environments (IDEs) are limited in suggesting code usage patterns when the user is unaware of the class name, as they rely on predicting words based on typed input, which is ineffective for unknown class names.

Innovation Solution

A method and system for automated suggestion of code usage patterns in an IDE, where a code snippet is matched against multiple source code files, and matching blocks are displayed as suggestions, with the option to insert them into the source code file, along with visually emphasizing the selected block and displaying popularity of use, and recommending import directives.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If auto-completion relies on predicting words based on typed input, then it works well for known class names, but it becomes ineffective when the user is unaware of the class name

Engineering Contradiction:
Improveeffectiveness of auto-completionVSAvoidapplicability to unknown class names
Core Design Contradiction:
ReliabilityVSAdaptability or versatility

Solution Approach 1:

Instead of predicting what the user wants to type based on the current input prefix, the system inverts the approach by analyzing the surrounding code context to discover and suggest relevant class names and code blocks that the user may not know exist. This reverses the traditional prediction direction from forward (input → prediction) to backward (context → discovery).

Inventive Principle:
Principle #13The other way round (Inversion)

Solution Approach 2:

The system performs preliminary analysis of the code context before the user completes their input, proactively identifying relevant code blocks and class names that match the current coding pattern. This preliminary discovery action enables suggestions to be made even before the user knows what they are looking for.

Inventive Principle:
Principle #10Preliminary action

2Ease of operation

If auto-completion displays a pop-up list of possible completions, then it helps users recall known classes, but it does not help when the class name is completely unknown

Engineering Contradiction:
Improveconvenience of code recallVSAvoidmissing unknown class information
Core Design Contradiction:
Ease of operationVSLoss of information

Solution Approach 1:

The system introduces an intermediary analysis layer that examines the code context (surrounding code, import statements, coding patterns) to bridge the gap between what the user knows and what they need to discover. This intermediary process generates suggestions for unknown classes based on contextual clues rather than relying solely on user input.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The system provides feedback by analyzing the code context and returning suggestions for code blocks and class names that match the current coding pattern. This feedback loop continues to refine suggestions based on the user's coding behavior and the discovered context, even when the target class is initially unknown.

Inventive Principle:
Principle #23Feedback

3Measurement precision

If the IDE analyzes multiple source code files to suggest code blocks, then it improves suggestion accuracy, but it increases processing time and system complexity

Engineering Contradiction:
Improveaccuracy of code matchingVSAvoidcomplexity of multi-file analysis system
Core Design Contradiction:
Measurement precisionVSDevice complexity

Solution Approach 1:

The system segments the code analysis task by focusing on specific contextual elements (import statements, surrounding code patterns, coding conventions) rather than analyzing entire files. This segmentation allows the system to process multiple files efficiently by extracting and comparing only the relevant contextual segments.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The system applies local quality analysis by examining the immediate code context surrounding the cursor position and the specific coding pattern being used, rather than uniformly analyzing all code in all files. This localized approach improves accuracy by focusing on the most relevant information while reducing overall processing complexity.

Inventive Principle:
Principle #3Local quality

Data Source

PatentUS9619211B2Code suggestion in a software development tool
Publication Date: 2017.04.11 INTERNATIONAL BUSINESS MACHINE CORPORATION
  • US9619211B2 patent drawing
  • US9619211B2 patent drawing

AI summary

Embodiments of the present invention provide a method, system and computer program product for the automated suggestion of code usage patterns in an IDE. In an embodiment of the invention, a method for automated suggestion of code usage patterns in an IDE is provided. The method includes receiving input of a code snippet for a source code file of a software development project loaded into memory of a host computer for display through an IDE. The method further includes matching terms of the received input to terms in different blocks of code in different source code files of the software development project. The method yet further includes selecting one of the different blocks of code as a code completion choice for insertion into the source code file in the IDE. Finally, the method includes inserting the selected one of the different blocks of code into the source code file in the IDE.