Guida introduttiva: Analisi codice per C/C++
È possibile migliorare la qualità dell'applicazione eseguendo regolarmente l'analisi del codice C o C++. L'analisi del codice consente di individuare i problemi e le violazioni comuni delle procedure di programmazione consigliate. E rileva difetti difficili da individuare tramite test. Gli avvisi differiscono dagli errori e dagli avvisi del compilatore: cerca modelli di codice specifici noti per causare problemi. Ovvero, il codice valido, ma potrebbe comunque creare problemi, sia per l'utente che per altri utenti che usano il codice.
Configurare i set di regole per un progetto
In Esplora soluzioni aprire il menu di scelta rapida per il nome del progetto e quindi scegliere Proprietà.
Facoltativamente, negli elenchi Configurazione e piattaforma scegliere la configurazione di compilazione e la piattaforma di destinazione.
Per eseguire l'analisi del codice ogni volta che il progetto viene compilato usando la configurazione selezionata, selezionare la casella di controllo Abilita analisi codice in compilazione . È anche possibile eseguire manualmente l'analisi del codice aprendo il menu Analizza e scegliendo Esegui analisi del codice in ProjectName o Esegui analisi del codice nel file.
Scegliere il set di regole da usare o creare un set di regole personalizzato. Se si usa LLVM/clang-cl, vedere Uso di Clang-Tidy in Visual Studio per configurare le opzioni di analisi Clang-Tidy.
Set di regole C/C++ standard
Visual Studio include questi set standard di regole per il codice nativo:
Set di regole | Descrizione |
---|---|
Regole aritmetiche del controllo principale di C++ | Queste regole applicano i controlli correlati alle operazioni aritmetiche dalle linee guida di base di C++. |
Regole dei limiti di controllo di base C++ | Queste regole applicano il profilo Limiti delle linee guida di base di C++. |
Regole della classe C++ Core Check | Queste regole applicano controlli correlati alle classi dalle linee guida di base di C++. |
Regole di concorrenza controllo di base C++ | Queste regole applicano controlli correlati alla concorrenza dalle linee guida di base di C++. |
Regole C++ Core Check Const | Queste regole applicano controlli correlati a const dalle linee guida di base di C++. |
Regole di dichiarazione di controllo di base di C++ | Queste regole applicano i controlli correlati alle dichiarazioni delle linee guida di base di C++. |
Regole di enumerazione controllo di base C++ | Queste regole applicano controlli correlati all'enumerazione dalle linee guida di base di C++. |
Regole sperimentali del controllo di base di C++ | Queste regole raccolgono alcuni controlli sperimentali. Alla fine, si prevede che questi controlli vengano spostati in altri set di regole o rimossi completamente. |
Regole della funzione C++ Core Check | Queste regole applicano i controlli correlati alle funzioni dalle linee guida di base di C++. |
Regole GSL del controllo di base di C++ | Queste regole applicano i controlli correlati alla libreria di supporto linee guida dalle linee guida di base di C++. |
Regole di durata del controllo di base di C++ | Queste regole applicano il profilo di durata delle linee guida di base di C++. |
Regole del puntatore proprietario del controllo di base di C++ | Queste regole applicano i controlli di gestione delle risorse correlati alle owner<T> linee guida di base di C++. |
Regole del puntatore non elaborato del controllo principale C++ | Queste regole applicano i controlli di gestione delle risorse correlati ai puntatori non elaborati dalle linee guida di base di C++. |
Regole di controllo di base di C++ | Queste regole applicano un subset dei controlli dalle linee guida di base di C++. Usare questo set di regole per includere tutte le regole di controllo di base di C++ ad eccezione dei set di regole Enum e Sperimentale. |
Regole del puntatore condiviso controllo di base C++ | Queste regole applicano i controlli di gestione delle risorse correlati ai tipi con semantica del puntatore condiviso dalle linee guida di base di C++. |
Regole STL del controllo principale di C++ | Queste regole applicano i controlli correlati alla libreria standard C++ dalle linee guida di base di C++. |
Regole di stile controllo di base di C++ | Queste regole applicano controlli correlati all'uso di espressioni e istruzioni dalle linee guida di base di C++. |
Regole dei tipi di controllo di base C++ | Queste regole applicano il profilo type delle linee guida di base di C++. |
Regole del puntatore univoco controllo di base C++ | Queste regole applicano i controlli di gestione delle risorse correlati ai tipi con semantica del puntatore univoca dalle linee guida di base di C++. |
Regole di controllo della concorrenza | Queste regole applicano un set di controlli dei criteri di concorrenza Win32 in C++. |
Regole di concorrenza | Aggiunge regole di concorrenza dalle linee guida di base di C++ alle regole di controllo della concorrenza. |
Regole minime native Microsoft | Queste regole riguardano i problemi più critici nel codice nativo, inclusi potenziali problemi di sicurezza e arresti anomali dell'applicazione. È consigliabile includere questo set di regole in qualsiasi set di regole personalizzato creato per i progetti nativi. |
Regole consigliate per Microsoft Native | Queste regole riguardano i problemi più critici e comuni nel codice nativo. Questi problemi includono potenziali buchi di sicurezza e arresti anomali dell'applicazione. È consigliabile includere questo set di regole in qualsiasi set di regole personalizzato creato per i progetti nativi. Questo set di regole è progettato per funzionare con Visual Studio Professional Edition e versioni successive. Include tutte le regole nelle regole minime native di Microsoft. |
Visual Studio include questi set standard di regole per il codice gestito:
Set di regole | Descrizione |
---|---|
Regole di correttezza di base di Microsoft | Queste regole riguardano gli errori logici e gli errori comuni eseguiti nell'uso delle API del framework. Includere questo set di regole per espandere l'elenco di avvisi segnalati dalle regole minime consigliate. |
Regole delle linee guida per la progettazione di base di Microsoft | Queste regole si concentrano sull'applicazione delle procedure consigliate per semplificare la comprensione e l'uso del codice. Includere questo set di regole se il progetto include codice di libreria o se si desidera applicare le procedure consigliate per il codice gestibile facilmente. |
Regole di correttezza estesa Di Microsoft | Queste regole si espandono sulle regole di correttezza di base per ottimizzare la logica segnalata e gli errori di utilizzo del framework. L'accento aggiuntivo viene posto su scenari specifici, ad esempio l'interoperabilità COM e le applicazioni per dispositivi mobili. Prendere in considerazione l'inclusione di questo set di regole se uno di questi scenari si applica al progetto o per trovare altri problemi nel progetto. |
Regole delle linee guida per la progettazione estesa Microsoft | Queste regole si espandono sulle regole delle linee guida di progettazione di base per ottimizzare l'usabilità segnalata e i problemi di gestibilità. L'enfasi aggiuntiva è posta sulle linee guida per la denominazione. Prendere in considerazione l'inclusione di questo set di regole se il progetto include codice di libreria o se si desidera applicare gli standard più elevati per la scrittura di codice gestibile. |
Regole di globalizzazione Microsoft | Queste regole si concentrano sui problemi che impediscono la visualizzazione corretta dei dati nell'applicazione quando vengono usati in lingue, impostazioni locali e impostazioni cultura diverse. Includere questo set di regole se l'applicazione è localizzata e/o globalizzata. |
Regole minime gestite da Microsoft | Queste regole riguardano i problemi più critici nel codice per cui l'analisi del codice è la più accurata. Queste regole sono di piccole dimensioni e sono destinate solo all'esecuzione in edizioni limitate di Visual Studio. Usare MinimumRecommendedRules.ruleset con altre edizioni di Visual Studio. |
Regole consigliate gestite da Microsoft | Queste regole riguardano i problemi più critici nel codice. Questi problemi includono potenziali falle di sicurezza, arresti anomali dell'applicazione e altri importanti errori di logica e progettazione. È consigliabile includere questo set di regole in qualsiasi set di regole personalizzato creato per i progetti. |
Regole minime Microsoft Mixed (C++ /CLR) | Queste regole riguardano i problemi più critici nei progetti C++ che supportano Common Language Runtime. Questi problemi includono potenziali falle di sicurezza, arresti anomali dell'applicazione e altri importanti errori di logica e progettazione. È consigliabile includere questo set di regole in qualsiasi set di regole personalizzato creato per i progetti C++ che supportano Common Language Runtime. |
Regole consigliate di Microsoft Mixed (C++ /CLR) | Queste regole riguardano i problemi più comuni e critici nei progetti C++ che supportano Common Language Runtime. Questi problemi includono potenziali falle di sicurezza, arresti anomali dell'applicazione e altri importanti errori di logica e progettazione. Questo set di regole è progettato per l'uso nell'edizione Visual Studio Professional e versioni successive. |
Regole di sicurezza Microsoft | Questo set di regole contiene tutte le regole di sicurezza Microsoft. Includere questo set di regole per ottimizzare il numero di potenziali problemi di sicurezza segnalati. |
Per includere ogni regola:
Set di regole | Descrizione |
---|---|
Microsoft All Rules | Questo set di regole contiene tutte le regole. L'esecuzione di questo set di regole può comportare un numero elevato di avvisi segnalati. Usare questo set di regole per ottenere un quadro completo di tutti i problemi nel codice. Può essere utile decidere quale dei set di regole più incentrati sono più appropriati per l'esecuzione per i progetti. |
Eseguire l'analisi del codice
Nella pagina Analisi codice della finestra di dialogo Proprietà progetto è possibile configurare l'analisi del codice per l'esecuzione ogni volta che si compila il progetto. È inoltre possibile eseguire manualmente l'analisi del codice.
Per eseguire l'analisi del codice su una soluzione:
- Scegliere Esegui analisi del codice nella soluzione dal menu Compila.
Per eseguire l'analisi del codice su un progetto:
Nella Esplora soluzioni selezionare il nome del progetto.
Nel menu Compila scegliere Esegui analisi del codice in Nome progetto.
Per eseguire l'analisi del codice in un file:
Nella Esplora soluzioni selezionare il nome del file.
Nel menu Compila scegliere Esegui analisi del codice su File oppure premere CTRL+MAIUSC+ALT+F7.
Il progetto o la soluzione vengono compilati e viene eseguita l'analisi del codice. I risultati vengono visualizzati nella finestra Elenco errori.
Analizzare e risolvere gli avvisi dell'analisi del codice
Nella finestra Elenco errori sono elencati gli avvisi di analisi del codice trovati. I risultati vengono visualizzati in una tabella. Se sono disponibili altre informazioni su un avviso specifico, la prima colonna contiene un controllo di espansione. Scegliere questa opzione per espandere la visualizzazione per ulteriori informazioni sul problema. Se possibile, l'analisi del codice consente di visualizzare i numeri di riga e la logica di analisi che ha portato all'avviso.
Per informazioni dettagliate sull'avviso, incluse le possibili soluzioni al problema, scegliere l'ID avviso nella colonna Codice per visualizzare il corrispondente articolo della Guida online.
Fare doppio clic su un avviso per spostare il cursore nella riga di codice che ha causato l'avviso nell'editor di codice di Visual Studio. In alternativa, premere INVIO sull'avviso selezionato.
Dopo aver compreso il problema, è possibile risolverlo nel codice. Eseguire quindi di nuovo l'analisi del codice per assicurarsi che l'avviso non venga più visualizzato nell'elenco errori.
Creare elementi di lavoro per gli avvisi di analisi del codice
È possibile usare la funzionalità di gestione degli elementi di lavoro per registrare bug da Visual Studio. Per usare questa funzionalità, è necessario connettersi a un'istanza di Azure DevOps Server (in precedenza Team Foundation Server ).
Per creare un elemento di lavoro per uno o più avvisi di codice C/C++
Nell'elenco errori espandere e selezionare gli avvisi
Nel menu di scelta rapida per gli avvisi scegliere Crea elemento di lavoro e quindi scegliere il tipo di elemento di lavoro.
Visual Studio crea un singolo elemento di lavoro per gli avvisi selezionati e visualizza l'elemento di lavoro in una finestra del documento dell'IDE.
Aggiungere eventuali informazioni aggiuntive e quindi scegliere Salva elemento di lavoro.
Risultati dell'analisi del codice di ricerca e filtro
Puoi effettuare una ricerca in lunghi elenchi di messaggi di avviso e filtrare gli avvisi nelle soluzioni composte da più progetti.
Per filtrare gli avvisi in base al titolo o all'ID avviso: immettere la parola chiave nella casella Elenco errori di ricerca.
Per filtrare gli avvisi in base alla gravità: per impostazione predefinita, ai messaggi di analisi del codice viene assegnata una gravità di Avviso. È possibile assegnare la gravità di uno o più messaggi come Errore in un set di regole personalizzato. Nella colonna Gravità dell'elenco errori scegliere la freccia a discesa e quindi l'icona del filtro. Scegliere Avviso o Errore per visualizzare solo i messaggi a cui è assegnata la rispettiva gravità. Scegliere Seleziona tutto per visualizzare tutti i messaggi.