Strumenti dell'IDE di Visual Studio per l'aggiornamento del codice C++

Visual Studio consente di aggiornare il codice C++ legacy con opzioni del compilatore, avvisi di analisi del codice e funzionalità dell'editor, ad esempio Correzioni rapide, Informazioni rapide e barra di scorrimento avanzata. Il termine "codice legacy" si riferisce a una di queste categorie:

  • Codice precedentemente consentito dal compilatore Microsoft C++ (MSVC) ma mai conforme allo standard C++.

    Per aggiornare il codice MSVC non conforme meno recente, attivare l'opzione del /permissive- compilatore. Tutte le istanze di utilizzi non conformi sono sottolineate con sottolineatura ondulata rossa nell'editor di codice. I messaggi di errore nella finestra Elenco errori includono una raccomandazione per correggere l'errore. Fare clic sul codice di errore per passare alla relativa pagina della Guida nella documentazione. Se la correzione di tutti gli errori contemporaneamente non è pratica, è possibile aggiornare il codice non conforme nelle fasi attivando l'opzione /permissive- , correggendo alcuni errori, quindi disattivando nuovamente l'opzione. Il codice verrà compilato con i nuovi miglioramenti ed è possibile tornare indietro e risolvere i problemi rimanenti in un secondo momento. Vedere la /permissive- pagina per esempi di codice MSVC non conforme.

  • Codice consentito in una versione precedente dello standard C++ ma deprecato o rimosso in una versione successiva.

    Per eseguire l'aggiornamento a uno standard del linguaggio più recente, impostare l'opzione Standard del linguaggio C++ sullo standard desiderato e correggere eventuali errori di compilazione generati. In generale, è consigliabile impostare lo standard linguistico su /std:c++17 o /std:c++20. Gli errori generati durante l'aggiornamento a uno standard più recente non sono correlati agli errori generati quando si usa l'opzione /permissive- .

  • Codice conforme a tutte le versioni dello standard, ma non è più considerato una procedura consigliata nel linguaggio C++moderno.

    Per identificare il codice in cui sono consigliate le modifiche, eseguire l'analisi del codice.

Aprire e convertire un progetto legacy

Se il progetto legacy si basa su una versione precedente di Visual Studio, è possibile aprirlo in Visual Studio 2017 o Visual Studio 2019. Visual Studio lo converte automaticamente nello schema di progetto corrente con il supporto per tutte le funzionalità più recenti del compilatore e dell'IDE.

Screenshot della finestra di dialogo Aggiorna un progetto.

Per altre informazioni, vedere Aggiornare progetti C++ da versioni precedenti di Visual Studio.

Eseguire ricerche nella codebase

L'aggiornamento di una codebase comporta spesso la ricerca in più file. Per cercare qualsiasi elemento nella codebase, premere CTRL+T per visualizzare la casella di ricerca Vai a tutto .

Screenshot della finestra di dialogo Vai a tutti.

Per restringere l'ambito di ricerca, digitare uno dei filtri di 1 lettera, seguito da uno spazio e quindi dall'elemento che si sta cercando.

Elenco degli errori

Dopo aver impostato lo standard del linguaggio C++ desiderato e tutte le altre opzioni del compilatore (Proprietà>>progetto generale), premere CTRL+MAIUSC+B per compilare il progetto. Ci si può aspettare di visualizzare alcuni errori e avvisi sotto forma di sottolineatura ondulata rossa in varie posizioni nel codice. Gli errori vengono visualizzati anche nell'elenco errori. Per altre informazioni su un errore specifico, fare clic sul codice di errore per passare alla pagina della Guida nella documentazione. I codici di errore che iniziano con "C" sono errori del compilatore. I codici che iniziano con "MSB" sono errori di MSBuild che indicano un problema con la configurazione del progetto.

Screenshot che mostra gli errori del compilatore e di MSBuild nell'elenco errori.

Indicatore di integrità del documento

L'indicatore di integrità del documento nella parte inferiore dell'editor mostra il numero di errori e avvisi nel documento corrente e consente di spostarsi direttamente da un avviso o un errore al successivo.

Indicatore di integrità del documento.

In molti casi, è possibile trovare altre informazioni su un errore specifico nella documentazione relativa alla cronologia delle modifiche di Visual Studio e ai miglioramenti della conformità.

Usare l'analisi del codice per modernizzare il codice

Quando si esegue l'aggiornamento, è consigliabile eseguire l'analisi del codice nel progetto in modo che il codice sia conforme almeno alle regole consigliate native di Microsoft. Queste regole sono una combinazione di regole definite da Microsoft e da un subset delle linee guida di base di C++. Con la conformità a questi si ridurranno notevolmente o elimineranno le origini comuni di bug e allo stesso tempo rendere il codice più leggibile e quindi più facile da gestire. L'analisi del codice che usa le regole consigliate native di Microsoft è abilitata per impostazione predefinita. È possibile abilitare regole aggiuntive in Analisi codice delle proprietà>del progetto>. Il codice che viola una delle regole viene contrassegnato come avviso e sottolineato con una sottolineatura ondulata verde nell'editor di codice. Passare il puntatore del mouse sulla sottolineatura a zigzag per visualizzare una descrizione comando QuickInfo che descrive il problema.

Screenshot di una descrizione comando di analisi del codice.

Fare clic sull'icona del filtro nella colonna Codice per scegliere gli avvisi visualizzati.

Screenshot dei filtri di analisi del codice in Elenco errori.

Gli errori e gli avvisi di analisi del codice vengono visualizzati anche nell'elenco errori proprio come gli errori del compilatore.

Screenshot degli avvisi di analisi del codice nell'elenco errori.

È possibile modificare le regole attive e creare set di regole personalizzati. Per altre informazioni sull'uso dell'analisi del codice, vedere Panoramica dell'analisi del codice per C/C++.

Usare azioni rapide per modernizzare il codice

L'editor di codice fornisce azioni rapide per alcune raccomandazioni comuni. Quando viene visualizzata l'icona della lampadina, è possibile fare clic su di essa per visualizzare le azioni rapide disponibili.

Convertire macro in funzioni constexpr

L'immagine seguente mostra l'uso della macro denominata AVERAGE, con la colorazione semantica predefinita. L'immagine mostra anche la descrizione comando QuickInfo visualizzata quando il cursore del mouse viene posizionato su di esso:

Screenshot di un'espansione di macro QuickInfo.

Poiché l'uso delle macro è sconsigliato in C++moderno, Visual Studio semplifica la conversione delle macro in constexpr funzioni:

  1. Fare clic con il pulsante destro del mouse su AVERAGE e scegliere Vai a definizione.

  2. Fare clic sull'icona del cacciavite e scegliere Converti macro in constexpr

    Screenshot di una macro Azione rapida per constexpr.

La macro viene convertita come illustrato di seguito:

Screenshot di una funzione constexpr.

La chiamata a AVERAGE è ora colorata come chiamata di funzione e la descrizione comando Informazioni rapide mostra il tipo dedotto della funzione:

Screenshot di una chiamata di funzione constexpr.

Inizializzare le variabili

Le variabili non inizializzate possono contenere valori casuali che causano bug gravi. L'analisi del codice contrassegna queste istanze e l'editor fornisce un'azione rapida:

Screenshot del popup per una variabile non inizializzata.

Convertire in valore letterale stringa non elaborata

I valori letterali stringa non elaborati sono meno soggetti a errori e più pratici da digitare rispetto alle stringhe con caratteri di escape incorporati. Fare clic con il pulsante destro del mouse su una stringa e scegliere Azioni rapide per convertirlo in un valore letterale stringa non elaborato.

Valore letterale stringa non elaborata.

La stringa viene convertita in : R"(C:\Users\bjarnes\demo\output.txt)".