Condividi tramite


Analizzare il codice T-SQL per individuare i difetti

Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure

È possibile migliorare la qualità del codice Transact-SQL in uno schema di database importandolo in un progetto di database e analizzando il codice rispetto a un insieme di regole. Ad esempio, è possibile trovare eventuali errori in uno schema che non è stato sviluppato e la cui qualità non è stata verificata. Per altre informazioni, vedere Code analysis overview (Panoramica dell'analisi codice).

Per questa valutazione iniziale, si vogliono trovare tutti i potenziali problemi nel codice del database. Esaminare gli avvisi e il codice che ha causato tali avvisi. Per migliorare il codice T-SQL, correggere gli avvisi, eliminare potenzialmente un avviso e analizzare in modo iterativo il progetto di database.

Prerequisiti

Prima di poter analizzare il codice in un progetto di database, è necessario avere già un progetto SQL. Per altre informazioni sull'uso di un database esistente per creare un progetto, vedere Esercitazione: iniziare da un database esistente.

Abilitare l'analisi del codice SQL nella compilazione del progetto

Per abilitare l'analisi del codice SQL in Visual Studio, fare clic con il pulsante destro del mouse sul progetto in Esplora soluzioni e selezionare Proprietà. Nella scheda Analisi del codice della finestra delle proprietà selezionare la casella di controllo Abilita analisi codice in fase di compilazione.

Salvare la finestra delle proprietà del progetto e tornare a Esplora soluzioni.

Per abilitare l'analisi del codice SQL in un progetto SQL, modificare direttamente il file .sqlproj. Aprire il file .sqlproj e aggiungere un elemento <RunSqlCodeAnalysis>True</RunSqlCodeAnalysis> al primo blocco <PropertyGroup> per abilitare l'analisi del codice.

Per abilitare l'analisi del codice SQL nell'estensione database SQL Projects, modificare direttamente il file .sqlproj. Aprire il file .sqlproj dalla vista Esplora oppure facendo clic con il pulsante destro del mouse sul progetto nella vista Progetti di database e scegliendo Modifica file con estensione sqlproj.

Dall'editor di testo aggiungere un elemento <RunSqlCodeAnalysis>True</RunSqlCodeAnalysis> al primo blocco <PropertyGroup> per abilitare l'analisi del codice.

Per abilitare l'analisi del codice SQL in un progetto SQL, modificare direttamente il file .sqlproj. Aprire il file .sqlproj e aggiungere un elemento <RunSqlCodeAnalysis>True</RunSqlCodeAnalysis> al primo blocco <PropertyGroup> per abilitare l'analisi del codice.

Analizzare il codice

Per analizzare il codice in un progetto di database con l'analisi del codice abilitata per la compilazione, fare clic con il pulsante destro del mouse sul progetto in Esplora soluzioni e selezionare Compila.

Nella finestra Output vengono visualizzati i risultati dell’intero processo di compilazione.

Il codice T-SQL nel progetto di database viene analizzato durante la compilazione. Gli errori e gli avvisi dell'analisi del codice vengono visualizzati nell'elenco errori. Se l'elenco errori non viene visualizzato, aprire il menu Visualizza e selezionare Elenco errori. È possibile fare doppio clic su un avviso per passare alla riga di codice che ha causato l'avviso.

Per analizzare il codice in un progetto di database con l'analisi del codice abilitata per la compilazione, fare clic con il pulsante destro del mouse sul progetto in Esplora soluzioni e selezionare Compila.

Nella finestra Output vengono visualizzati i risultati dell’intero processo di compilazione.

Il codice T-SQL nel progetto di database viene analizzato durante la compilazione. Gli errori e gli avvisi dell'analisi del codice vengono visualizzati nell'elenco errori. Se l'elenco errori non viene visualizzato, aprire il menu Visualizza e selezionare Elenco errori. È possibile fare doppio clic su un avviso per passare alla riga di codice che ha causato l'avviso.

Per analizzare il codice in un progetto di database con l'analisi del codice abilitata per la compilazione, fare clic con il pulsante destro del mouse sul progetto nella vista Progetti di database e selezionare Compila.

Nella finestra di output vengono visualizzati i risultati del processo di compilazione complessivo e gli eventuali errori o avvisi generati dall'analisi del codice. I file specificati in ogni avviso o errore sono collegamenti interattivi che passano alla riga di codice che ha causato l'avviso.

Per analizzare il codice in un progetto di database con l'analisi del codice abilitata per la compilazione, eseguire il comando dotnet build dalla riga di comando nella directory del progetto.

dotnet build MyDatabaseProject.sqlproj

L'output del comando visualizza i risultati del processo di compilazione complessivo ed eventuali errori o avvisi dall'analisi del codice.

Configurare le regole di analisi codice

Per disabilitare o abilitare una regola specifica in Visual Studio, fare clic con il pulsante destro del mouse sul progetto in Esplora soluzioni e selezionare Proprietà. Nella scheda Analisi del codice della finestra delle proprietà selezionare la regola dalla tabella. Per modificare la gravità di una regola, selezionare la casella Considera avviso come errore per tale regola dall'elenco.

Salvare la finestra delle proprietà del progetto e tornare a Esplora soluzioni.

Per disabilitare o abilitare una regola specifica in un progetto SQL, modificare direttamente il file .sqlproj. Aprire il file .sqlproj e aggiungere o modificare l'elemento per SqlCodeAnalysisRules nel primo blocco <PropertyGroup> per specificare le regole da abilitare o disabilitare. La configurazione di esempio seguente disabilita due regole (SR0007 e SR0006) e commuta SR0008 per generare un errore di compilazione. Le altre regole sono abilitate per impostazione predefinita.

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build">
  <Sdk Name="Microsoft.Build.Sql" Version="0.2.0-preview" />
  <PropertyGroup>
    <Name>AdventureWorks</Name>
    <DSP>Microsoft.Data.Tools.Schema.Sql.Sql160DatabaseSchemaProvider</DSP>
    <ModelCollation>1033, CI</ModelCollation>
    <RunSqlCodeAnalysis>True</RunSqlCodeAnalysis>
    <SqlCodeAnalysisRules>-Microsoft.Rules.Data.SR0006;-Microsoft.Rules.Data.SR0007;+!Microsoft.Rules.Data.SR0008</SqlCodeAnalysisRules>
  </PropertyGroup>
...

Per disabilitare o abilitare una regola specifica nell'estensione progetti database SQL, modificare direttamente il file .sqlproj. Aprire il file .sqlproj dalla vista Esplora oppure facendo clic con il pulsante destro del mouse sul progetto nella vista Progetti di database e scegliendo Modifica file con estensione sqlproj.

Aggiungere o modificare l'elemento per SqlCodeAnalysisRules nel primo blocco <PropertyGroup> per specificare le regole da abilitare o disabilitare. La configurazione di esempio seguente disabilita due regole (SR0007 e SR0006) e commuta SR0008 per generare un errore di compilazione. Le altre regole sono abilitate per impostazione predefinita.

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build">
  <Sdk Name="Microsoft.Build.Sql" Version="0.2.0-preview" />
  <PropertyGroup>
    <Name>AdventureWorks</Name>
    <DSP>Microsoft.Data.Tools.Schema.Sql.Sql160DatabaseSchemaProvider</DSP>
    <ModelCollation>1033, CI</ModelCollation>
    <RunSqlCodeAnalysis>True</RunSqlCodeAnalysis>
    <SqlCodeAnalysisRules>-Microsoft.Rules.Data.SR0006;-Microsoft.Rules.Data.SR0007;+!Microsoft.Rules.Data.SR0008</SqlCodeAnalysisRules>
  </PropertyGroup>
...

Per disabilitare o abilitare una regola specifica in un progetto SQL, modificare direttamente il file .sqlproj. Aprire il file .sqlproj e aggiungere o modificare l'elemento per SqlCodeAnalysisRules nel primo blocco <PropertyGroup> per specificare le regole da abilitare o disabilitare. La configurazione di esempio seguente disabilita due regole (SR0007 e SR0006) e commuta SR0008 per generare un errore di compilazione. Le altre regole sono abilitate per impostazione predefinita.

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build">
  <Sdk Name="Microsoft.Build.Sql" Version="0.2.0-preview" />
  <PropertyGroup>
    <Name>AdventureWorks</Name>
    <DSP>Microsoft.Data.Tools.Schema.Sql.Sql160DatabaseSchemaProvider</DSP>
    <ModelCollation>1033, CI</ModelCollation>
    <RunSqlCodeAnalysis>True</RunSqlCodeAnalysis>
    <SqlCodeAnalysisRules>-Microsoft.Rules.Data.SR0006;-Microsoft.Rules.Data.SR0007;+!Microsoft.Rules.Data.SR0008</SqlCodeAnalysisRules>
  </PropertyGroup>
...

Eliminare gli avvisi di analisi del codice

Per eliminare un errore o un avviso di analisi del codice per un file specifico .sql in Visual Studio, fare clic con il pulsante destro del mouse sull'avviso nell'elenco errori e selezionare Elimina messaggi di analisi codice statica. Il risultato dell'analisi del codice per tale regola e file .sql viene eliminato e non viene più visualizzato nell'elenco errori o nell'output di compilazione.

Nota

L'eliminazione di un avviso non risolve il problema sottostante. Eliminare gli avvisi solo quando si dispone di un motivo valido per farlo.

Per eliminare un errore o un avviso di analisi del codice per un file specifico .sql nel progetto SQL, aggiungere un file StaticCodeAnalysis.SuppressMessages.xml al progetto. Nel file specificare l'ID regola e il file per cui eliminare l'avviso.

<?xml version="1.0" encoding="utf-8" ?>
<StaticCodeAnalysis version="2" xmlns="urn:Microsoft.Data.Tools.Schema.StaticCodeAnalysis">
  <SuppressedFile FilePath="Views/SelectStarView.sql">
    <SuppressedRule Category="Microsoft.Rules.Data" RuleId="SR0001" />
  </SuppressedFile>
</StaticCodeAnalysis>

Se il file non esiste, crearlo nella radice del progetto. Se il file esiste già, eliminare un avviso aggiuntivo per il file esistente StaticCodeAnalysis.SuppressMessages.xml creando un nuovo elemento <SuppressedFile><SuppressedRule /></SuppressedFile>.

Il risultato dell'analisi del codice per tale regola e file .sql viene eliminato e non viene più visualizzato nell'output di compilazione.

Per eliminare un errore o un avviso di analisi del codice per un file specifico .sql nell'estensione database SQL Projects, aggiungere un file StaticCodeAnalysis.SuppressMessages.xml al progetto. Nel file specificare l'ID regola e il file per cui eliminare l'avviso.

<?xml version="1.0" encoding="utf-8" ?>
<StaticCodeAnalysis version="2" xmlns="urn:Microsoft.Data.Tools.Schema.StaticCodeAnalysis">
  <SuppressedFile FilePath="Views/SelectStarView.sql">
    <SuppressedRule Category="Microsoft.Rules.Data" RuleId="SR0001" />
  </SuppressedFile>
</StaticCodeAnalysis>

Se il file non esiste, crearlo nella radice del progetto. Se il file esiste già, eliminare un avviso aggiuntivo per il file esistente StaticCodeAnalysis.SuppressMessages.xml creando un nuovo elemento <SuppressedFile><SuppressedRule /></SuppressedFile>.

Il risultato dell'analisi del codice per tale regola e file .sql viene eliminato e non viene più visualizzato nell'output di compilazione.

Per eliminare un errore o un avviso di analisi del codice per un file specifico .sql nel progetto SQL, aggiungere un file StaticCodeAnalysis.SuppressMessages.xml al progetto. Nel file specificare l'ID regola e il file per cui eliminare l'avviso.

<?xml version="1.0" encoding="utf-8" ?>
<StaticCodeAnalysis version="2" xmlns="urn:Microsoft.Data.Tools.Schema.StaticCodeAnalysis">
  <SuppressedFile FilePath="Views/SelectStarView.sql">
    <SuppressedRule Category="Microsoft.Rules.Data" RuleId="SR0001" />
  </SuppressedFile>
</StaticCodeAnalysis>

Se il file non esiste, crearlo nella radice del progetto. Se il file esiste già, eliminare un avviso aggiuntivo per il file esistente StaticCodeAnalysis.SuppressMessages.xml creando un nuovo elemento <SuppressedFile><SuppressedRule /></SuppressedFile>.

Il risultato dell'analisi del codice per tale regola e file .sql viene eliminato e non viene più visualizzato nell'output di compilazione.