náhled|Ukázka doplňování kódu v Microsoft Visual Studio 2025, s návrhy od umělé inteligence. Doplňování kódu je funkce automatického doplňování, která je k dispozici v mnoha integrovaných vývojových prostředích (IDE) pro urychlení psaní kódu tím, že opravuje běžné chyby a navrhuje řádky kódu. Obvykle se k tomu používají okna vyskakující během psaní, dotazování na parametry funkcí a návrhy na opravu syntaktických chyb. Doplňování kódu a související nástroje poskytuje doplňování jmen proměnných, funkcí a metod na základě statické analýzy kódu a poskytuje jejich popisy napomáhající jejich správnému výběru.
Tato funkce je k dispozici v mnoha moderních programovacích prostředích. Mezi implementace patří IntelliSense ve Visual Studio Code. Funkce byla původně nazývána „picklist“, a některé implementace ji tak stále označují.
Úvod Inteligentní doplňování kódu, který se podobá jiným systémům našeptávání v počítačích, představuje pohodlný způsob, jak získat přístup k popisům funkcí a zejména k seznamům jejich parametrů. Tato funkce urychluje vývoj softwaru tím, že zkracuje zadávání z klávesnice a omezuje nutnost zapamatovávání názvů. Uživatelům také umožňuje méně často se obracet na externí dokumentaci, protože poskytuje interaktivní dokumentaci k mnoha symbolům (tj. proměnným a funkcím) v aktuálním rozsahu platnosti v podobě kontextové nápovědy.
Inteligentní doplňování kódu využívá automaticky generovanou databázi tříd, jmen proměnných a dalších konstrukcí, které daný programový kód definuje nebo na které se odkazuje. „Klasická“ implementace IntelliSense značkovací znaky jako jsou tečky (nebo jiné oddělovače podle použitého programovacího jazyka). Když uživatel zadá jeden z těchto znaků po jménu entity, která má nějaké členy (např. obsažené proměnné nebo funkce), IntelliSense navrhne shody v rozbalovacím dialogovém okně. Uživatel může návrh přijmout stisknutím určité (obvykle nebo ) nebo oddělovače pro daný jazyk (např. středník v C++) nebo pokračovat v psaním jména. Postupem času IntelliSense určí, kterou proměnnou nebo funkci uživatel s nejvyšší pravděpodobností potřebuje. IntelliSense také zobrazuje krátký popis funkce v v rozbalovacím okně, v závislosti na množství dokumentace ve zdrojovém kódu funkce.
Tato funkce také umožňuje uživatelům vybírat z řady přetížených funkcí v jazycích, které podporují objektově orientované programování. Některá prostředí nebo editory pro úpravu kódu nabízejí inteligentní doplňování kódu využívající LSP (Language Server Protocol) server.
Historie Výzkum inteligentního doplňování kódu započal v roce 1957, a to v podobě programů pro kontrolu pravopisu u bitmapových obrázků psaných kurzívou a speciálních aplikací pro vyhledávání záznamů v databázích i přes nesprávné zadání. V roce 1961 Les Earnest, který vedl výzkum této rodící se technologie, shledal nezbytným zahrnout první program pro kontrolu pravopisu, který měl přístup k seznamu 10 000 přijatelných slov. Ralph Gorin, v té době postgraduální student pod vedením Earnesta, vytvořil první skutečný program pro kontrolu pravopisu napsaný jako aplikace (nikoli jako výzkum) pro obecný anglický text. Program SPELL pro počítač DEC PDP-10 v Laboratoři umělé inteligence Stanfordovy univerzity (SAIL) byl vydán v únoru 1971. Gorin napsal program v assembleru pro rychlejší zpracování; vytvořil jej tak, že prohledával seznam slov a hledal pravděpodobně správná hláskování, která se lišila pouze jedním písmenem nebo záměnou sousedních písmen, a předkládal je uživateli. Gorin zpřístupnil program SPELL veřejnosti, stejně jako většinu programů SAIL, a ten se brzy rozšířil po celém světě prostřednictvím tehdy nové sítě ARPANET, asi deset let předtím, než se osobní počítače staly běžně používanými. Program SPELL a jeho algoritmy a datové struktury inspirovaly program Ispell pro systém Unix.
Výzkum inteligentního doplňování kódu započal v roce 1957 v podobě korektorů překlepů v programech na rozpoznávání rukou psaného písma a speciálních aplikací pro hledání záznamů v databázi i při nesprávném zadání. Les Earnest, který vedl výzkum této rodící se technologie, dospěl v roce 1961 k zjištění, že je nutné do systému zahrnout program pro opravu překlepů, který bude využívat seznam 10 000 správných slov. Ralph Gorin, v té době postgraduální student pod vedením Earnesta, vytvořil první prakticky použitelný program pro opravu překlepů v anglickém textu nazvaný SPELL pro počítač DEC PDP-10 v Laboratoři umělé inteligence Stanfordovy univerzity (SAIL) v únoru 1971. Aby program fungoval dostatečně rychle, napsal jej Gorin v jazyce symbolických adres; program vyhledával slova, která se lišila jedním písmenem nebo prohozením sousedních znaků, a předkládal je uživateli. Gorin zpřístupnil program veřejnosti, stejně jako tomu bylo s většinou ostatních programů pocházejících ze SAIL, a program se brzy rozšířil po celém světě prostřednictvím tehdy nové sítě ARPANET, asi deset let před nástupem osobních počítačů. SPELL a použité algoritmy a datové struktury inspirovaly unixový program ispell.
Podpora v editorech a integrovaných vývojových prostředích Visual Studio náhled|Doplňování kódu ve Visual Studio 2022. IntelliSense je implementace doplňování kódu společnosti Microsoft nejlépe známá z prostředí Microsoft Visual Studio. Tato technologie vycházející z mnoha starších konceptů doplňování kódu a kontroly syntaxe byla poprvé představena v roce 1996, ve Visual Basic 5.0 Control Creation Edition, což byl v podstatě první veřejně dostupný prototyp jazyka Visual Basic 5.0. Integrované prostředí Visual Basicu bylo zpočátku primárním „testovacím prostředím“ IntelliSense, která byla následně začleněna do Visual FoxPro a Visual C++ v rámci Visual Studio 97 (tj. první vydání po jejím použití ve Visual Basicu). Protože využíval introspekční funkčnost modelu COM, verze IntelliSense ve Visual Basicu byla vždy robustnější a úplnější než verze 5.0 a 6.0 (ve Visual Studio 97 resp. 98) Visual C++, které neměly tu výhodu, že byly zcela založeny na COM. Tyto nedostatky, např. nedostatečnou podporu šablon kritizovalo mnoho vývojářů VC++, byly z větší části opraveny v produktových řadách .NET.
Nová fáze vývoje IntelliSense začala jeho začleněním do Visual Studio.NET z roku 2001, které bylo obohaceno o výkonnější funkce introspekce a dokumentace kódu poskytované frameworkem .NET. IntelliSense v editorech Visual Studia má podporu pro jazyky C++, C#, J#, Visual Basic, XML, HTML a XSLT. Od verze Visual Studio 2005 je IntelliSense aktivováno implicitně, když uživatel začne psát, i bez výskytu značkovacích znaků (toto chování lze vypnout). Vývojové prostředí má schopnost odvodit větší množství kontextu na základě toho, co vývojář píše, a to do té míry, že do seznamu možností jsou zahrnuty i základní jazykové konstrukce, jako jsou for a while. V roce 2017 společnost Microsoft oznámila nástup IntelliCode, který k odvození, který jazyk nebo funkce knihovny je pravděpodobně zamýšlena při každém stisknutí klávesy, využívá strojové učení. Zpočátku byl k dispozici pouze jako rozšíření pro C#, ale očekává se, že bude zabudován do budoucích verzí Visual Studio.
Visual Studio 2022 obsahuje funkce umělé inteligence, jako je GitHub Copilot, které dokáží na základě okolního kontextu automaticky navrhovat celé řádky kódu.
Mezi další produkty společnosti Microsoft, které využívají technologii IntelliSense, patří Expression Web, FrontPage 2003, Small Basic, integrovaná vývojová prostředí Visual Basic for Applications v produktech Microsoft Office, Visual Studio Code a mnoho dalších. SQL Server 2008 Management Studio disponuje funkcí automatického doplňování pro syntaxi jazyka SQL.
Eclipse Nástroje pro doplňování jsou součástí integrovaného vývojového prostředí Eclipse. Součástí je významná podpora pro vytváření kódu v jazycích Java, C++ a JavaScript. Projekt Code Recommenders Eclipse poskytoval výkonné inteligentní dokončování, ale kvůli nedostatku prostředků, byl v prosinci 2018 z Eclipse vyřazen a v červenci 2019 archivován.
Vim Vim Intellisense je pokročilý systém doplňování kódu pro editor vim.
Příklad Předpokládejme, že při psaní kódu v C++ ve Visual Studio Code máme třídu Foo s členskými funkcemi:
class Foo { public: void bar(); void foo_bar(char c, int n);
Když vývojář použije tuto třídu ve zdrojovém kódu, např.
Foo foo; foo.
pak když uživatel zadá tečku za slovem foo, IntelliSense automaticky zobrazí seznam všech dostupných členských funkcí (tj. bar() a foo_bar()) a všech dostupných členských atributů (soukromé a chráněné členy může identifikovat obrázkem visacího zámku vedle jejich jména). Uživatel si pak může vybrat požadovanou položku pomocí kursorových kláves a stisknutím klávesy pro dokončení na požadované členské funkci. Je-li k dispozici, IntelliSense zobrazí krátký popis členské funkce, jak je uveden v dokumentaci zdrojového kódu.
IntelliSense jde ještě dále a při vyplňování parametrů uživatelem zobrazuje v dalším vyskakovacím okně požadované parametry. Když uživatel zadává název proměnné, funkce během psaní navrhuje jména začínající znaky, které uživatel napsal. IntelliSense pokračuje v zobrazování parametrů a zvýrazňuje ten, který uživatel právě zadává.
Uživatel může pomocí + nebo + „donutit“ IntelliSense, aby zobrazil vyskakovací seznam bez kontextu. V Microsoft Visual Studio se tím zobrazí kompletní objektový model aplikační domény, který je dostupný vývojáři.
Odkazy Poznámky
Reference
Související články Tabnine Microsoft Copilot Našeptávač
* Kategorie:Vlastnosti textových editorů Kategorie:Vývojové nástroje společnosti Microsoft Kategorie:Microsoft Visual Studio Kategorie:Našeptávače