Sdílet prostřednictvím


Ú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úží.

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

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ů.

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

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.

Snímek obrazovky jazyka C plus prediktivní technologie IntelliSense

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.

Snímek obrazovky s panelem š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 poklikejte na panel šablon a otevřete okno Pro úpravy , ve kterém zadáte typy argumentů pro parametry.

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

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.

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 = Svíčka a další

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.

Snímek obrazovky se seznamem instancí šablony v kódu Zobrazí se 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 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:

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

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.

Snímek obrazovky znázorňující rychlou opravu se zvýrazněnou možností Create definition of Channel Route Iterator in channels dot C P P option

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.

Snímek obrazovky C plus sledování změn Zobrazí se žlutý pruh vlevo, 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/Š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.

Snímek obrazovky s ovládacím prvku Vložit rozevírací seznam fragmentů

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í:

Snímek obrazovky s dialogovým oknem Přidat novou třídu Obsahuje pole pro název třídy, přístupnost, soubory pro deklaraci a implementaci 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ý obsahuje možnosti pro přidávání metod, proměnných členů a mnoho dalšího

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:

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
  • Google
  • 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.

Snímek obrazovky zobrazující soubor ve formátu .clang, který má mnoho možností, jako je limit sloupců, šířka odsazení, šířka tabulátoru atd.

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.

Snímek obrazovky s vyhledávacím polem Snadné spuštění Zobrazuje hledání V plus upřesňující výsledky v možnostech textového editoru.

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++".

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

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í slov, okomentování výběru, zvětšení odsazení řádku a další

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í.

Snímek obrazovky s vybranou položkou nabídky Sady Visual Studio a zvýrazněnou položkou nabídky Možnosti

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++