Code4Me provides automatic intelligent code completion based on large pre-trained language models

Overview

Code4Me

Code4Me provides automatic intelligent code completion based on large pre-trained language models. Code4Me predicts statement (line) completion and is available for both PyCharm (also other JetBrains IDEs) and Visual Studio Code. The code suggestions from Code4Me can be recognised by the logo in the suggestion menu. Code4Me automatically triggers on specific trigger characters or the user can prompt it manually by pressing the keybind. The keybind differs per IDE:

  • Jetbrains: ALT + SHIFT + K
  • VSC: Your keybind for the triggerSuggest command (likely CTRL + Space).

Code4Me does not hinder native auto completion or other extensions. However, Code4Me could be hindered by other extensions. If this is the case, please disable the other (autocomplete) extensions. Please report the extension that causes trouble on our github repository by creating an issue.

Installation

The plugin is available on both marketplaces. You can download them by either clicking the link in your browser or looking up 'Code4Me' in the integrated marketplace of your IDE.

JetBrains

The Code4Me plugin can be found in the JetBrains Marketplace.

VSC

The Code4Me plugin can be found in the Visual Studio Code Marketplace.

Data Collection

The plugin works with a remote API in order to suggest autocompletions. After triggering the autocompletion (automatically or manually), the client's request is sent to the server. Running the ML-based model, the server returns a prediction in response to the client. The remote API requires a segment of the current document (close left context at the trigger point). This limited segment is sent to the backend server only for prediction and will not be stored on our server. For the purpose of evaluating the models' predictions, we only store the suggestion made by the ML-based models at each trigger point and compare it against the accepted prediction by users (collected after 30 seconds).

The plugin does not collect personal data nor the segment sent by default. The plugin does collect the following data:

  • Suggested autocompletion.
  • Verification of the autocompletion.
    • The plugin tracks the line the code was inserted and sends that line to the server after 30 seconds.
  • Inference time of completion.

One of our research goals is to identify where and why code autocompletion fails and how it can be improved. Hence, we would like to conduct a failure analysis on the completions provided by code4me. To this end, we need to study the code context fed to our models based on which the predictions are made. This context includes a number of code tokens before and after the completion point. This is an optional setting and this data will be collected anonymously. The data will only be stored for three months to perform the failure analysis. After this period, we completely remove this data.

Furthermore, Code4Me is in full compliance with the GDPR and all data is anonymous. The data collected will remain on the servers of TU Delft until the end of the study. By using Code4Me you give permission for the data collection.

Code4Me is not working!

Code4Me should automatically trigger on specific triggers points such as a period. Additionally, it can be manually triggered by the keybinds mentioned. If the manual trigger does not prompt a code suggestion it could be the case that the ML-based model did not find a completion. To make sure that this is not the case, please attempt to trigger the plugin with enough context (code).

If Code4Me still does not prompt autocomplete suggestions, please make sure that the suggestions have not dropped in ranking by scrolling down the suggestion list.

If there is no suggestion in the whole completion list than it is likely that another (autocomplete) extension is interferring with Code4Me. Please try disabling the other extensions.

If it still does not work, please create an issue on our github repository.

Source Code

The source code for the IDE plugins and the API webserver can be found at our GitHub repository.

You might also like...

Compiler that compiles our language flowg to g-code (4th semester project)

flowg FlowG is a language that greatly simplifies manual g-code programming. It is a high-level language that supports functions, for loops, if statem

Jun 15, 2022

The Google code scanner API provides a complete solution for scanning codes without requiring your app to request camera permission.

Android Google Code Scanner The Google code scanner API provides a complete solution for scanning codes without requiring your app to request camera p

Nov 23, 2022

Representational State Transfer + Structured Query Language(RSQL): Demo application using RSQL parser to filter records based on provided condition(s)

Representational State Transfer + Structured Query Language: RSQL Demo application using RSQL parser to filter records based on provided condition(s)

Nov 23, 2022

A dubbo gateway based Java language.

A dubbo gateway based Java language.

Sep 24, 2022

Business Application Platform - no-code/low-code platform to build business applications

Business Application Platform - no-code/low-code platform to build business applications

Orienteer What is Orienteer Orienteer is Business Application Platform: Easy creation of business applications Extendable to fit your needs Dynamic da

Dec 6, 2022

This template makes it easy to organize FTC code and allows for the Autonomous and TeleOp periods to share code.

FTC Code Organizer This template created by team 19458 Equilibrium.exe makes it easy to keep your code organized and allows the Autonomous and TeleOp

Nov 10, 2022

Z2Laser - a simple Java-based tool to convert Z movements in your G-Code files to Laser on or off commands

Z2Laser - a simple Java-based tool to convert Z movements in your G-Code files to Laser on or off commands

Feb 20, 2022

This is a Maven plugin designed to help developers automatizing the creation of code classes from YML files based on AsyncApi and OpenAPI.

SCS MultiApi Maven Plugin This is a Maven plugin designed to help developers automatizing the creation of code classes from YML files based on AsyncAp

Dec 20, 2022

MFP (Mathematic language For Parallel computing) Android library

MFPAndroLib This is MFP (Mathematic language For Parallel computing) Android library project. MFP is a novel scripting programming language designed a

Sep 5, 2022
Comments
  • Updated the readme

    Updated the readme

    Read me can be found below:

    Code4Me

    Code4Me provides automatic intelligent code completion based on large pre-trained language models. Code4Me predicts statement (line) completion and is available for both PyCharm (also other JetBrains IDEs) and Visual Studio Code. The code suggestions from Code4Me can be recognised by the logo in the suggestion menu. Code4Me automatically triggers (on specific trigger characters) or the user can prompt it manually by pressing the keybind. The keybind differs per IDE:

    • Jetbrains: ALT + SHIFT + K
    • VSC: CTRL + SPACE

    Code4Me does not hinder native auto completion or other extensions.

    Installation

    The plugin is available on both marketplaces. You can download them by either clicking the link in your browser or looking up 'Code4Me' in the integrated marketplace of your IDE.

    JetBrains

    The Code4Me plugin can be found in the JetBrains Marketplace.

    VSC

    The Code4Me plugin can be found in the Visual Studio Code Marketplace.

    Data Collection

    The plugin works with a remote API in order to suggest autocompletions. After triggering the autocompletion (automatically or manually), the client's request is sent to the server. Running the ML-based model, the server returns a prediction in response to the client. The remote API requires a segment of the current document (close left context at the trigger point). This limited segment is sent to the backend server only for prediction and will not be stored on our server. For the purpose of evaluating the models' predictions, we only store the suggestion made by the ML-based models at each trigger point and compare it against the accepted prediction by users (collected after 30 seconds).

    The plugin does not collect personal data nor the segment sent. The plugin does collect the following data:

    • Suggest autocompletion.
    • Verification of the autocompletion.
      • The plugin tracks the line the code was inserted and sends that line to the server after 30 seconds.
    • Inference time of completion.

    Furthermore, Code4Me is in full compliance with the GDPR and all data is anonymous. The data collected will remain on the servers of TU Delft until the end of the study. By using Code4Me you give permission for the data collection.

    Source Code

    The source code for the IDE plugins and the API webserver can be found at our GitHub repository.

    opened by Aekalix 1
Releases(v1.0.12)
This is a simple realization of custom messages pre/post processing in spring-boot HTTP/Stream requests & responses

spring-boot-custom-message-converting-instances This is a simple realization of custom messages converting in spring-boot HTTP requests and responses.

Innopolis University Java Team 1 Jul 22, 2022
Pre-release of JavaGachi

JavaGachi-PreRelease Pre-release of JavaGachi Despite having Gradle resources, delegate building to IDEA if you are interested in deploying the applic

null 1 Jan 6, 2022
A pre-authenticated RCE exploit for Inductive Automation Ignition

Randy What This is a pre-authenticated RCE exploit for Inductive Automation Ignition that impacts versions <= 8.1.16. We failed to exploit the bugs at

Source Incite 36 Sep 23, 2022
Google's ML-Kit-Vision demo (android) for pre encoded video.

Android ML Kit Vision demo with Video Google's ML-Kit-Vision demo (android) for pre encoded video. Demos for camera preview and still image are also i

null 17 Dec 29, 2022
Team 5468's 2022 FRC robot code. This code is written in Java and is based off of WPILib's Java control system and utilizes a command based system

FRC 2022 Team 5468's 2022 FRC robot code. This code is written in Java and is based off of WPILib's Java control system and utilizes a command based s

null 4 Oct 4, 2022
Jamal is a macro language (JAmal MAcro Language)

Jamal Macro Language Jamal is a complex text processor with a wide variety of possible use. The first version of Jamal was developed 20 years ago in P

Peter Verhas 29 Dec 20, 2022
For Jack language. Most of codes were commented with their usage, which can be useful for beginner to realize the running principle of a compiler for object-oriented programming language.

Instructions: Download the Java source codes Store these codes into a local folder and open this folder Click the right key of mouse and click ‘Open i

gooooooood 1.1k Jan 5, 2023
Automatic creation of simple CRUD API of Spring boot and JPA project.

fast-crud Automatic creation of simple CRUD API of Spring boot and JPA project.

JinHwanKim 18 Oct 23, 2022
Automatic generated Jump and Run

Project GenJumpAndRun An automatic generating Jump And Run ?? I’m currently working on Nothing ?? I’m currently learning Games developer (Java) ??‍??

quodix 0 Jul 13, 2022
Spring Data Redis extensions for better search, documents models, and more

Object Mapping (and more) for Redis! Redis OM Spring extends Spring Data Redis to take full advantage of the power of Redis. Project Stage Snapshot Is

Redis 303 Dec 29, 2022