Ú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ý 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 aktualizaci a poskytuje doporučení. Při psaní více znaků se seznam doporučených výsledků zúží.
Některé symboly se vynechají automaticky, aby se výsledky zúžily. Když například přistupujete k členům objektu třídy mimo třídu, nebudete ve výchozím nastavení moct zobrazit soukromé členy ani chráněné členy (pokud nejste v kontextu podřízené třídy). Filtrování můžete upravit pomocí tlačítek dole.
Jakmile vyberete symbol z rozevíracího seznamu, můžete ho automaticky zkompilovat pomocí tabulátoru, klávesy Enter nebo jednoho z dalších znaků potvrzení (ve výchozím nastavení: { } [ ] ( ) . , : ; + - * / % & | ^ ! = ? @ # \
). Pokud chcete přidat nebo odebrat znaky z tohoto seznamu, na panelu Snadné spuštění vyhledejte IntelliSense (Ctrl +Q) a zvolte možnost Upřesnit v textovém editoru > C/C++>. Možnost Zápis znaků seznamu členů umožňuje přizpůsobit seznam požadovanými změnami.
Možnost Režim filtru seznamu členů určuje, jaké druhy návrhů automatického dokončování IntelliSense vidíte. Ve výchozím nastavení je nastavená na Fuzzy. Pokud máte v přibližném hledání symbol s názvem MyAwesomeClass, můžete napsat "MAC" a najít třídu v návrzích automatického dokončování. Přibližný algoritmus nastaví minimální prahovou hodnotu, kterou musí symboly splnit, aby se zobrazily v seznamu. Inteligentní filtrování zobrazuje všechny symboly obsahující podřetědce, které odpovídají zadanému textu. Filtrování předpon vyhledá řetězce, které začínají tím, co jste zadali.
Další informace o technologii IntelliSense jazyka C++ naleznete v tématu Visual C++ IntelliSense a Konfigurace projektu jazyka C++ pro IntelliSense.
IntelliCode
IntelliCode je intellisense s asistencí umělé inteligence. Umístí nejpravděpodobnější kandidáta na začátek seznamu dokončení. Doporučení IntelliCode jsou založená na tisících opensourcových projektech na GitHubu s více než 100 hvězdičkami. V kombinaci s kontextem kódu se seznam dokončení přizpůsobí podpoře běžných postupů.
Při psaní jazyka C++ vám IntelliCode pomůže při používání oblíbených knihoven, jako je standardní knihovna C++. Kontext kódu se používá k poskytování nejužitečnějších doporučení jako první. V následujícím příkladu size
se členská funkce běžně používá s sort
funkcí, takže se zobrazí na začátek seznamu výsledků.
V sadě Visual Studio 2022 a Visual Studio 2019 je IntelliCode k dispozici jako volitelná komponenta v úloze Vývoj desktopových aplikací C++. Pokud chcete mít jistotu, že je IntelliCode aktivní pro C++, přejděte do části Mož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í IntelliSense (experimentální)
Prediktivní IntelliSense je experimentální funkce, která použí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 tak, že přejdete do editoru>možností>>textu C/C++>Experimentální>povolení prediktivní technologie IntelliSense.
Pokud chcete přepsat prediktivní technologii IntelliSense a zobrazit delší seznam, stiskněte kombinaci kláves Ctrl + J. Pokud je zapnutá prediktivní technologie IntelliSense , 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ů tam, kde je to relevantní. Tlačítko ([+]) pod rozevíracím seznamem IntelliSense provede totéž jako Ctrl +J. Když najedete myší na tlačítko, zobrazí se informace o tom, co se zobrazuje.
Předchozí snímek obrazovky ukazuje několik tlačítek v rozevíracím seznamu. Tyto funkce umožňují filtry IntelliSense pro různé druhy výsledků:
- Proměnné a konstanty
- Funkce
- Typy
- Makra
- Výčty
- Obory názvů
Tlačítko se zobrazí jenom v případě, že je relevantní pro 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 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 zadat, že argument šablony je typu std::vector<int>
. Když pak tento argument použijete v těle šablony, uvidíte členy std::vector<int>
funkce IntelliSense.
Kliknutím na <ikonu T> rozbalte nebo sbalte panel šablon. Klikněte na ikonu tužky nebo poklikejte na panel šablon a otevřete okno Pro úpravy , ve kterém zadáte typy argumentů pro parametry.
Panel šablon 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 rámci základu kódu.
V dolní části editoru se zobrazí okno, kde byla nalezena každá instance a jaké byly její argumenty. Můžete vybrat instanci a přejít do umístění v kódu, kde byla nalezena instance.
Informace o panelu šablony jsou specifické pro uživatele. Je uložený ve .vs
složce a není potvrzen do správy zdrojového kódu.
Chyby vlnovek a rychlé opravy
Pokud editor zjistí problémy s vaším kódem, přidá pod něj barevné vlnovky. Červené vlnovky označují kód, který se nezkompiluje. Zelené vlnovky naznačují jiné druhy problémů, které mohou být stále potenciálně vážné. Pokud chcete získat další informace o problémech, můžete otevřít okno Se seznamem chyb.
U některých druhů 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í zahrnout potřebný hlavičkový soubor:
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 pro ni v samostatném souboru .cpp.
Sledování změn
Při každé změně souboru se na levé straně zobrazí žlutý pruh, který označuje, že neuložené změny byly provedeny. Když soubor uložíte, pruh se změní na zelenou. Zelené a žluté pruhy se zachovají, pokud je dokument otevřený v editoru. Představují změny provedené od posledního otevření dokumentu.
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/Šipka 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 vyberte Fragment kódu a vložte fragment kódu nebo obklopte vybraný text fragmentem. Následující obrázek znázorňuje tři kroky pro ohraničení vybraného příkazu smyčkou for. Žlutá zvýraznění v 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.
Je vybrána funkce. V rozevíracím seznamu, který se zobrazí po kliknutí pravým tlačítkem myši na název funkce Obklopit... je zvýrazněná žlutou barvou. V rozevíracím seznamu Obklopit s: je vybraný fragment kódu smyčky for. Výsledkem je vložení smyčky for kolem funkce. Proměnná smyčky a limit jsou zobrazené žlutě, aby značily, že jde o upravitelná pole.
Přidat třídu
Přidejte novou třídu z nabídky Project nebo z místní nabídky v Průzkumník řešení:
Průvodce třídou můžete také použít k úpravě nebo prozkoumání existující třídy.
Další informace naleznete v tématu Přidání funkce 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é jsou také nalezeny v nabídce Upravit > refaktoring . Patří k nim:
- Přejmenovat
- Extrahovat funkci
- Implementovat čistě virtuální
- Vytvořit deklaraci/definici
- Přesunout – definice funkce
- Převod na nezpracovaný řetězcový literál
- Změnit signaturu
Vynucení stylu kódu pomocí ClangFormat a EditorConfig
Visual Studio 2017 a novější obsahuje integrovanou podporu pro ClangFormat, oblíbený nástroj pro formátování kódu pro C++ založený na Clang/LLVM. Do panelu Snadné spuštění zadejte "ClangFormat", abyste ho nastavili tak, aby používal jeden z těchto běžných formátů:
- LLVM
- Chrom
- Mozilla
- WebKit
- Visual Studio
Můžete také zadat vlastní .clang-format
nebo _clang-format
soubor, který použije vlastní pravidla pro všechny soubory kódu na stejné úrovni nebo níže.
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.
Visual Studio 2017 a novější také podporuje EditorConfig, který funguje podobným způsobem. ClangFormat má však více možností stylu než EditorConfig, včetně pravidel specifických pro jazyk C++. Pomocí EditorConfig vytvoříte soubory .editorconfig a umístíte je do různých složek základu kódu, abyste určili 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 možností nástrojů>. Můžete nastavit pravidla pro tabulátory a mezery, velikost odsazení a další. Další informace naleznete 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.
Pokud chcete nastavit možnosti formátování, jako jsou odsazení, doplňování závorek a zabarvení, zadejte do okna Snadné spuštění text "Formátování jazyka C++".
Další možnosti formátování najdete v části Upravit>upřesnit v hlavní nabídce.
Možnosti pro povolení a konfiguraci funkcí pro úpravy specifické pro jazyk C++jsou umístěny v části Nástroje>Možnosti>textového editoru>C/C++. Po výběru možnosti, kterou chcete nastavit, můžete získat další nápovědu stisknutím klávesy F1, když je dialogové okno fokus . Obecné možnosti formátování kódu pište Editor C++
do panelu Snadné spuštění.
Experimentální funkce, které mohou nebo nemusí být součástí budoucí verze sady Visual Studio, se nacházejí v experimentálním dialogovém okně Textového editoru C++. V sadě Visual Studio 2017 a novějších můžete v tomto dialogovém okně povolit prediktivní intelliSense .
Viz také
Přečtěte si a seznamte se s kódem
jazyka C++ a navigujte v základu kódu jazyka C++ v sadě Visual Studio
– Spolupráce s Live Share pro C++