Complétion de code intelligente - Intelligent code completion

La complétion de code intelligente est une fonction de complétion de code contextuelle dans certains environnements de programmation qui accélère le processus de codage des applications en réduisant les fautes de frappe et autres erreurs courantes. Les tentatives en ce sens sont généralement effectuées via des fenêtres contextuelles d'auto-complétion lors de la frappe, l'interrogation des paramètres des fonctions, des conseils de requête liés aux erreurs de syntaxe. La complétion de code intelligente et les outils associés servent de documentation et de désambiguïsation pour les noms de variables , les fonctions et les méthodes , à l'aide de la réflexion .

La fonctionnalité apparaît dans de nombreux environnements de programmation. Les implémentations incluent "autocomplete +" dans Atom et IntelliSense dans Visual Studio Code . Le terme a été popularisé à l'origine sous le nom de « liste de sélection » et certaines implémentations le désignent toujours comme tel.

Aperçu

La complétion de code intelligente, qui est similaire à d'autres systèmes de saisie semi- automatique, est un moyen pratique d'accéder aux descriptions des fonctions, et en particulier à leurs listes de paramètres. La fonctionnalité accélère le développement du logiciel en réduisant la saisie au clavier et la nécessité de mémoriser le nom. Il permet également aux utilisateurs de se référer moins fréquemment à la documentation externe, car la documentation interactive sur de nombreux symboles (c'est-à-dire les variables et les fonctions) dans la portée active apparaît dynamiquement sous la forme d' info - bulles .

La complétion de code intelligente utilise une base de données en mémoire générée automatiquement de classes, de noms de variables et d'autres constructions qu'un code informatique donné définit ou fait référence. L'implémentation "classique" d'IntelliSense fonctionne en détectant les caractères marqueurs tels que les points (ou d'autres caractères de séparation, selon la langue). Lorsque l'utilisateur tape l'un de ces caractères immédiatement après le nom d'une entité ayant un ou plusieurs membres accessibles (comme des variables ou des fonctions contenues), IntelliSense suggère des correspondances dans une boîte de dialogue contextuelle. L'utilisateur peut soit accepter la suggestion en tapant un caractère de fin d'instruction ( Tab ↹ou ↵ Enter) ou un marqueur spécifique à la langue (comme le point-virgule pour C++ ), soit continuer à taper le nom. Au fil du temps, IntelliSense détermine de quelle variable ou fonction l'utilisateur a le plus probablement besoin. IntelliSense affiche également une brève description d'une fonction dans la fenêtre contextuelle, en fonction de la quantité de documentation dans le code source de la fonction .

La fonctionnalité permet également aux utilisateurs de choisir parmi un certain nombre de fonctions surchargées dans des langages prenant en charge la programmation orientée objet . Certains logiciels d'édition de code fournissent une complétion de code intelligente via un serveur Language Server Protocol (LSP).

Histoire

La recherche sur la complétion de code intelligente a commencé en 1957, avec des vérificateurs d'orthographe pour les images bitmap d' écriture cursive et des applications spéciales pour trouver des enregistrements dans des bases de données malgré des entrées incorrectes. En 1961, Les Earnest , qui dirigeait les recherches sur cette technologie naissante, jugea nécessaire d'inclure le premier correcteur orthographique qui accédait à une liste de 10 000 mots acceptables. Ralph Gorin, un étudiant diplômé de Earnest à l'époque, a créé le premier véritable programme de vérification orthographique écrit comme une application (plutôt qu'une recherche) pour le texte en anglais général. SPELL, pour le DEC PDP-10 du Laboratoire d'Intelligence Artificielle de l'Université de Stanford (SAIL), a été publié en février 1971. Gorin a écrit le programme en assembleur pour une action plus rapide ; il l'a fait en recherchant dans une liste de mots des orthographes correctes plausibles qui diffèrent par une seule lettre ou des transpositions de lettres adjacentes, et en les présentant à l'utilisateur. Gorin a rendu SPELL accessible au public, comme cela a été fait avec la plupart des programmes SAIL, et il s'est rapidement répandu dans le monde via le tout nouvel ARPANET , environ une décennie avant que les ordinateurs personnels ne soient généralisés. SPELL et ses algorithmes et structures de données ont inspiré le programme Unix Ispell .

Support dans les éditeurs et les IDE

Visual Studio

IntelliSense est l'implémentation de Microsoft de la complétion de code, mieux connue dans Visual Studio . Il a été introduit pour la première fois en tant que fonctionnalité d'un produit Microsoft grand public en 1996, en s'appuyant sur de nombreux concepts déjà inventés de complétion de code et de vérification de la syntaxe, avec Visual Basic 5.0 Control Creation Edition, qui était essentiellement un prototype accessible au public pour Visual Basic 5.0. Initialement, Visual Basic IDE était le « banc d'essai » principal pour la technologie, mais IntelliSense a été incorporé dans Visual FoxPro et Visual C++ dans le délai de Visual Studio 97 (une révision après la première vue dans Visual Basic). Parce qu'elles étaient basées sur les capacités d'introspection de COM , les versions Visual Basic d'IntelliSense étaient toujours plus robustes et complètes que les versions 5.0 et 6.0 (97 et 98 dans la séquence de nommage de Visual Studio) de Visual C++, qui n'avaient pas l'avantage d'être entièrement basé sur COM. Ces lacunes (critiquées par de nombreux développeurs VC++ depuis la version 97) ont été largement corrigées dans les gammes de produits .NET . Par exemple, l'une des fonctionnalités manquantes les plus demandées dans les produits pré-.NET était la prise en charge des modèles , qui est désormais entièrement implémentée.

IntelliSense est entré dans une nouvelle phase de développement avec l' environnement unifié Visual Studio.NET publié pour la première fois en 2001, augmenté par les capacités d'introspection et de documentation de code plus puissantes fournies par le framework .NET. IntelliSense est désormais pris en charge par les éditeurs Visual Studio pour C++ , C# , J# , Visual Basic , XML , HTML et XSLT, entre autres. À partir de Visual Studio 2005 , IntelliSense est désormais activé par défaut lorsque l'utilisateur commence à taper, au lieu d'exiger des caractères marqueurs (bien que ce comportement puisse être désactivé). L' IDE a la capacité d'inférer une plus grande quantité de contexte en fonction de ce que le développeur tape, au point que les constructions de langage de base telles que for et while sont également incluses dans la liste de choix. En 2017, Microsoft a annoncé IntelliCode, qui utilise l'apprentissage automatique pour déduire exactement quelle langue ou fonctionnalité de bibliothèque est susceptible d'être destinée à chaque frappe. Initialement disponible en tant qu'extension pour C# uniquement, il devrait être intégré aux futures versions de Visual Studio.

Les autres produits Microsoft qui intègrent IntelliSense incluent Expression Web , FrontPage 2003 , Small Basic , les IDE Visual Basic pour Applications dans les produits Microsoft Office , Visual Studio Code et bien d'autres. SQL Server 2008 Management Studio a la saisie semi-automatique pour la syntaxe SQL.

Éclipse

L' IDE Eclipse dispose d'outils de complétion de code fournis avec le programme. Il inclut une prise en charge notable de la création de code Java, C++ et JavaScript. Le projet Code Recommenders Eclipse fournissait auparavant une complétion intelligente puissante, mais en raison du manque de ressources, a été abandonné dans Eclipse 2018-12, puis archivé en juillet 2019.

Vigueur

Vim Intellisense est un système de complétion de code avancé pour l' éditeur Vim .

Exemple

Supposons qu'une application C++ en cours de modification dans Visual Studio possède une classe Foo avec certaines fonctions membres :

class Foo {
  public:
    void bar();
    void foo_bar(char c, int n);
};

Lorsque le développeur référence cette classe dans le code source, par exemple :

Foo foo;
foo.

dès que l'utilisateur tape le point après foo, IntelliSense répertorie automatiquement toutes les fonctions membres disponibles (c'est-à bar()- dire et foo_bar()) et tous les attributs membres disponibles (les membres privés et protégés peuvent être identifiés par une image de cadenas à côté de leurs noms). L'utilisateur peut ensuite en sélectionner un en utilisant les touches fléchées et en appuyant sur un caractère de fin lorsque la fonction membre correcte est mise en surbrillance. Lorsqu'il est disponible, IntelliSense affiche une brève description de la fonction membre comme indiqué dans la documentation du code source.

IntelliSense va plus loin en indiquant les paramètres requis dans une autre fenêtre contextuelle lorsque l'utilisateur remplit les paramètres. Lorsque l'utilisateur tape un nom de variable, la fonctionnalité fait également des suggestions pour compléter la variable au fur et à mesure de sa saisie. IntelliSense continue d'afficher les paramètres, en mettant en évidence celui qui est pertinent, au fur et à mesure que l'utilisateur tape.

L'utilisateur peut "forcer" IntelliSense à afficher sa liste contextuelle sans contexte en utilisant Ctrl+ Jou Ctrl+ Space. Dans Visual Studio, cela affiche l'intégralité du modèle objet du domaine d'application disponible pour le développeur.

Remarques

Liens externes