Úprava a refaktoring kódu C++ v sadě Visual Studio

Visual Studio nabízí několik nástrojů, které vám pomůžou psát, upravovat a refaktorovat kód.

IntelliSense

IntelliSense je výkonný nástroj pro dokončování kódu, který vám při psaní navrhuje symboly a fragmenty kódu. C++ IntelliSense v sadě Visual Studio běží v reálném čase, analyzuje základ kódu při jeho aktualizaci a poskytuje doporučení. Při zadávání dalších znaků se seznam doporučených výsledků zužuje.

Snímek obrazovky s rozevíracím seznamem členů C plus plus zobrazující metody dostupné pro řetězec, jako je připojení, přiřazení atd.

Některé symboly jsou vynechány automaticky, aby se výsledky zúžily. Například při přístupu ke členům objektu třídy mimo třídu nebudete moct ve výchozím nastavení zobrazit soukromé členy ani chráněné členy (pokud nejste v kontextu podřízené třídy). Filtrování můžete upravit pomocí tlačítek v dolní části.

Jakmile vyberete symbol z rozevíracího seznamu, můžete ho automaticky dokončovat pomocí klávesy Tab, Enter nebo některého z dalších znaků potvrzení (ve výchozím nastavení: { } [ ] ( ) . , : ; + - * / % & | ^ ! = ? @ # \). Pokud chcete přidat nebo odebrat znaky z tohoto seznamu, vyhledejte v panelu Snadné spuštění (Ctrl + Q) "IntelliSense" a zvolte možnost Textový editor > C/C++ > Upřesnit . Možnost Potvrdit znaky seznamu členů umožňuje přizpůsobit seznam požadovaným změnám.

Možnost Režim filtru seznamu členů určuje, jaké druhy návrhů automatického dokončování IntelliSense uvidíte. Ve výchozím nastavení je nastavená na Fuzzy. Pokud máte ve vyhledávání přibližné hodnoty symbol s názvem MyAwesomeClass, můžete zadat "MAC" a najít třídu v návrzích automatického dokončování. Algoritmus fuzzy nastaví minimální prahovou hodnotu, kterou musí symboly splnit, aby se zobrazily v seznamu. Inteligentní filtrování zobrazí všechny symboly obsahující podřetěžce, které odpovídají zadanému textu. Filtrování předpon vyhledá řetězce, které začínají tím, co jste zadali.

Další informace o intellisense jazyka C++ najdete v tématech Visual C++ IntelliSense a Konfigurace projektu jazyka C++ pro IntelliSense.

IntelliCode

IntelliCode je Technologie IntelliSense s asistencí umělé inteligence. Nejpravděpodobnějšího kandidáta umístíte na začátek seznamu dokončení. Doporučení IntelliCode jsou založená na tisících open source projektů na GitHubu, z nichž každý má více než 100 hvězdiček. V kombinaci s kontextem kódu je seznam doplňování přizpůsobený tak, aby podporoval běžné postupy.

Při psaní jazyka C++ vám intelliCode pomůže při používání oblíbených knihoven, jako je standardní knihovna jazyka C++. Kontext kódu se nejprve používá k poskytování nejužitečnějších doporučení. V následujícím příkladu size se členská funkce běžně používá s sort funkcí, takže se zobrazí na začátku seznamu výsledků.

Snímek obrazovky s rozevíracím seznamem C plus IntelliCode, který zobrazuje členy třídy vektoru seřazené podle, které se ve vašem kódu nejčastěji používají

V sadě Visual Studio 2022 a Visual Studio 2019 je IntelliCode k dispozici jako volitelná součást v úloze Vývoj desktopových aplikací C++ . Pokud se chcete ujistit, že je IntelliCode aktivní pro C++, přejděte naMožnosti>nástrojů>IntelliCode>Obecné a nastavte základní model C++ na Povoleno.

V sadě Visual Studio 2017 je IntelliCode k dispozici jako rozšíření v sadě Visual Studio Marketplace.

Prediktivní technologie IntelliSense (experimentální)

Prediktivní IntelliSense je experimentální funkce, která využívá kontextové povědomí o omezení počtu výsledků zobrazených v rozevíracím seznamu IntelliSense. Algoritmus použije porovnávání typů tak, aby zobrazoval pouze ty výsledky, které odpovídají očekávanému typu. V nejjednodušším případě, pokud zadáte int x = a vyvoláte rozevírací seznam IntelliSense, uvidíte pouze celá čísla nebo funkce vracející celá čísla. Tato funkce je ve výchozím nastavení vypnutá, protože je stále ve vývoji. Nejlépe funguje s globálními symboly; členské funkce se zatím nepodporují. Můžete ho zapnout zadáním "Prediktivní" na panelu Snadné spuštění nebo přechodem na Možnosti nástrojů>>Textový editor>C/C++>Experimentální>povolení prediktivní technologie IntelliSense.

Pokud chcete prediktivní intellisense přepsat a zobrazit delší seznam, stiskněte ctrl + J. Pokud je prediktivní technologie IntelliSense zapnutá, vyvolání ctrl + J odebere prediktivní filtr. Opětovným stisknutím kombinace kláves Ctrl+J odeberete filtr přístupnosti z výsledků seznamu členů, pokud je to relevantní. Tlačítko ([+]) v rozevíracím seznamu IntelliSense dělá totéž jako Ctrl +J. Když na tlačítko najedete myší, zobrazí se informace o tom, co se zobrazuje.

Snímek obrazovky jazyka C plus a prediktivní technologie IntelliSense

Předchozí snímek obrazovky ukazuje několik tlačítek v rozevíracím seznamu. Filtry IntelliSense umožňují různé druhy výsledků:

  • Proměnné a konstanty
  • Functions
  • Typy
  • Makra
  • Výčty
  • Obory názvů

Tlačítko se zobrazí jenom v případě, že je relevantní pro vaši aktuální relaci IntelliSense. Obvykle se nezobrazují všechna tlačítka najednou.

Šablona IntelliSense

Panel šablony je prvek uživatelského rozhraní, který se zobrazí, když je kurzor na definici šablony. Je to užitečné, protože můžete zadat ukázkové argumenty šablony pro IntelliSense, které se zobrazí při úpravě textu šablony. Můžete například určit, že argument šablony je typu std::vector<int>. Když pak použijete tento argument v těle šablony, uvidíte členy souboru std::vector<int>v intellisense.

Snímek obrazovky panelu šablony se zvýrazněnou možností Přidat všechny existující instance

Kliknutím na ikonu <T> rozbalte nebo sbalte panel šablon. Klikněte na ikonu tužky nebo poklikáním na panel Šablony otevřete okno Upravit , ve kterém zadáte typy argumentů pro parametry.

Snímek obrazovky s prostředím pro úpravy na panelu šablon, kde zadáte typ pro každý parametr šablony

Panel šablony může automaticky naplnit typy parametrů na základě instancí šablony v kódu. Kliknutím na Přidat všechny existující instance zobrazíte seznam všech konkrétních argumentů, které byly použity k vytvoření instance šablony v celém základu kódu.

Snímek obrazovky s výsledky intellisense šablony se seznamem různých typů použitých k vytvoření instance parametru šablony C, například C = AmbientLight, C = Candle a dalších

Okno v dolní části editoru ukazuje, kde byly nalezeny jednotlivé instance a jaké byly její argumenty. Můžete vybrat instanci a přejít do umístění v kódu, kde byla tato instance nalezena.

Snímek obrazovky se seznamem instancí šablony v kódu Jsou uvedeny instance, soubor, umístění a argumenty.

Informace o panelu šablony jsou specifické pro uživatele. Je uložený ve .vs složce a není potvrzený ve správě zdrojového kódu.

Chyby vlnovek a rychlé opravy

Pokud editor zjistí problémy s vaším kódem, přidá pod problém barevné vlnovku. Červené vlnovky označují kód, který se nebude kompilovat. Zelené vlnovnice označují jiné druhy problémů, které můžou být stále potenciálně závažné. Pokud chcete získat další informace o problémech, můžete otevřít okno Seznam chyb.

U některých typů chyb a běžných vzorů kódování editor nabídne rychlou opravu ve formě žárovky, která se zobrazí, když najedete myší na vlnovku. Kliknutím na šipku dolů zobrazíte návrhy.

V následujícím příkladu vector byl deklarován, ale nebyla nalezena žádná definice, takže editor nabízí, aby zahrnoval potřebný soubor hlaviček:

Snímek obrazovky s chybou a navrženou rychlou opravou vektoru #include

Editor také nabízí rychlé opravy pro některé příležitosti refaktoringu. Pokud například deklarujete třídu v souboru hlaviček, sada Visual Studio nabídne vytvoření definice v samostatném souboru .cpp.

Snímek obrazovky znázorňující rychlou opravu se zvýrazněnou možností Vytvořit definici iterátoru tras kanálu v kanálech dot C P P

Sledování změn

Při každé změně souboru se vlevo zobrazí žlutý pruh, který označuje, že byly provedeny neuložené změny. Když soubor uložíte, pruh se změní na zelenou. Zelené a žluté pruhy se zachovají, dokud je dokument otevřený v editoru. Představují změny, které byly provedeny od posledního otevření dokumentu.

Snímek obrazovky s C plus a sledováním změn Vlevo se zobrazí žlutý pruh, který označuje změny.

Přesunout kód

Řádky kódu můžete přesouvat nahoru a dolů tak, že je vyberete, podržíte klávesu Alt a stisknete klávesy šipka nahoru/dolů .

Vložení fragmentů kódu

Fragment kódu je předdefinovaná část zdrojového kódu. Klikněte pravým tlačítkem myši na jeden bod nebo na vybraný text a výběrem možnosti Fragment kódu vložte fragment kódu nebo obepněte vybraný text fragmentem kódu. Následující obrázek znázorňuje tři kroky k ohraničení vybraného příkazu smyčkou for. Žlutá zvýraznění na konečném obrázku jsou upravitelná pole, ke kterým přistupujete pomocí klávesy Tab. Další informace najdete v tématu Fragmenty kódu.

Snímek obrazovky s ovládacím prvku Vložit výstřižek rozevíracího seznamu

Je vybrána funkce. V rozevíracím seznamu, který se zobrazí po kliknutí pravým tlačítkem na název funkce Obklopit... zvýrazněná žlutě. V rozevíracím seznamu Obklopit do: je vybraný fragment kódu pro smyčku "for". Výsledkem je vytvoření smyčky for kolem funkce. Proměnná smyčky a limit se zobrazují žlutě, což znamená, že se jedná o upravitelná pole.

Přidat třídu

Přidejte novou třídu z nabídky Projekt nebo z místní nabídky v Průzkumník řešení:

Snímek obrazovky s dialogovým oknem Přidat novou třídu Obsahuje pole pro název třídy, přístupnost, soubory pro vložení deklarace a implementace atd.

Průvodce třídou můžete také použít k úpravě nebo prozkoumání existující třídy.

Snímek obrazovky s Průvodcem třídou, který nabízí možnosti pro přidávání metod, členských proměnných a mnoho dalšího

Další informace najdete v tématu Přidání funkcí pomocí Průvodců kódem (C++).

Refaktoring

Refaktoringy jsou k dispozici v místní nabídce Rychlá akce nebo kliknutím na žárovku v editoru. Některé z nich najdete také v nabídce Upravit > refaktoring . Patří k nim:

Vynucení stylu kódu pomocí ClangFormat a EditorConfig

Visual Studio 2017 a novější obsahuje integrovanou podporu ClangFormat, oblíbeného nástroje pro formátování kódu pro C++ založeného na Clang/LLVM. Do panelu Snadné spuštění zadejte "ClangFormat", aby se používal jeden z těchto běžných formátů:

  • LLVM
  • Google
  • Chromium
  • Mozilla
  • Webkit
  • Visual Studio

Můžete také zadat vlastní .clang-format soubor nebo _clang-format soubor, který použije vlastní pravidla pro všechny soubory kódu na stejné úrovni nebo pod.

Soubory se dají snadno sdílet prostřednictvím správy zdrojového kódu, takže můžete vynutit konvence kódování v celém vývojovém týmu.

Snímek obrazovky se souborem ve formátu .clang, který má mnoho možností, jako je omezení počtu sloupců, šířka odsazení, šířka tabulátoru atd.

Visual Studio 2017 a novější také podporuje EditorConfig, který funguje podobným způsobem. ClangFormat však má více možností stylu než EditorConfig, včetně pravidel, která jsou specifická pro jazyk C++. Pomocí EditorConfig vytvoříte soubory .editorconfig a umístíte je do různých složek v základu kódu, abyste mohli určit styly kódu pro tyto složky a jejich podsložky. Soubor .editorconfig nahrazuje všechny ostatní soubory .editorconfig v nadřazených složkách a přepíše všechna nastavení formátování nakonfigurovaná prostřednictvím nástrojů>Možnosti. Můžete nastavit pravidla pro tabulátory a mezery, velikost odsazení a další. Další informace najdete v tématu Vytvoření přenosného vlastního nastavení editoru pomocí EditorConfig.

Další možnosti formátování

Vyhledávací pole Snadné spuštění poskytuje nejrychlejší způsob, jak najít nastavení nebo nástroj. Nachází se v hlavní nabídce. Stačí začít psát a seznam automatického dokončování vyfiltruje výsledky.

Snímek obrazovky s vyhledávacím polem snadného spuštění Zobrazuje vyhledávání v jazyce C plus plus upřesnit, což vede k možnostem pro textový editor.

Pokud chcete nastavit možnosti formátování, jako jsou odsazení, dokončování závorek a obarvení, zadejte do okna Snadné spuštění text "Formátování C++".

Snímek obrazovky s možnostmi formátování jazyka C++, například jestli se při zadání karty automaticky odsadí

Další možnosti formátování najdete v části Upravit>upřesnit v hlavní nabídce.

Snímek obrazovky s rozšířenými možnostmi úprav, jako je zobrazení prázdných znaků, zalamování řádků, okomentování výběru, zvětšení odsazení řádku a další

Možnosti pro povolení a konfiguraci funkcí úprav specifických pro jazyk C++ najdete v části Nástroje>Možnosti>Textový editor>C/C++. Po výběru možnosti, kterou chcete nastavit, získáte další nápovědu stisknutím klávesy F1 , když je dialogové okno fokus. Obecné možnosti formátování kódu potřebujete zadáním Editor C++ do panelu Snadné spuštění.

Snímek obrazovky znázorňující vybranou položku nabídky Sady Visual Studio Nástroje a zvýrazněnou položku nabídky Možnosti

Experimentální funkce, které mohou nebo nemusí být součástí budoucí verze sady Visual Studio, najdete v dialogovém okně Text Editor C++ Experimentální . V sadě Visual Studio 2017 a novějších verzích můžete v tomto dialogovém okně povolit funkci Predictive IntelliSense .

Viz také

Čtení a pochopení kódu
C++ Navigace v základu kódu C++ v sadě Visual Studio
Spolupráce s live shareem pro C++