Condividi tramite


Procedura: analizzare il codice Transact-SQL per trovare errori

È possibile analizzare il codice Transact-SQL su richiesta, quando si compila il progetto tramite l'interfaccia utente o quando lo si compila tramite MSBuild. Se il codice analizzato contiene difetti di progettazione, denominazione o prestazioni, verranno visualizzati uno o più errori o avvisi. È possibile fare clic su questi errori o avvisi per visualizzare il codice a cui sono correlati. È inoltre possibile visualizzare ulteriori informazioni per comprendere le cause e per stabilire se sia opportuno o meno evitarne la visualizzazione. Per ulteriori informazioni sull'analisi del codice in Visual Studio Premium e Visual Studio Ultimate, vedere Analisi del codice di database per migliorare la qualità del codice.

Prima di analizzare il codice, è possibile configurare le regole che verranno eseguite durante l'analisi. Per ulteriori informazioni, vedere Procedura: abilitare e disabilitare regole specifiche relative all'analisi statica del codice del database. È possibile configurare set di regole diversi per configurazioni di compilazione diverse. È possibile richiedere agli sviluppatori di eseguire un set di regole ridotto per rilevare i problemi comuni prima di archiviare il codice e prevedere un'analisi più approfondita durante le ore notturne.

Analisi del codice nell'edizione Database Edition

Per analizzare il codice Transact-SQL nel progetto di database

  1. Aprire la soluzione contenente il progetto di database.

  2. Scegliere Analisi codice statica dal menu Dati, quindi fare clic su Esegui.

    Verrà analizzato il codice nel progetto di database e gli eventuali avvisi ed errori verranno visualizzati nell'Elenco errori.

Per visualizzare il codice sorgente che ha causato un errore o un avviso

  1. Nell'Elenco errori fare doppio clic su un errore o un avviso. È inoltre possibileevidenziare un errore o un avviso e premere INVIO.

    Verrà visualizzato l'editor Transact-SQL contenente il codice a cui l'errore o l'avviso è correlato. Se possibile, il cursore viene posizionato in corrispondenza della clausola che ha causato l'errore o l'avviso.

  2. Effettuare uno dei passaggi seguenti:

Per visualizzare ulteriori informazioni su un errore o un avviso

  • Nell'Elenco errori effettuare uno dei passaggi seguenti:

    • Fare clic sull'errore o sull'avviso, quindi premere F1.

    • Fare clic con il pulsante destro del mouse sull'errore o sull'avviso, quindi scegliere Mostra guida errore.

      Verrà visualizzato l'argomento della Guida associato all'errore o all'avviso. Nell'argomento sono contenute informazioni sulla causa del problema, sulla correzione del codice e se sia o meno opportuno evitare la visualizzazione dell'errore o dell'avviso.

Analisi del codice tramite MSBuild

È possibile decidere di analizzare il codice tramite MSBuild se si intende applicare un set di regole più completo durante un'esecuzione notturna. È possibile configurare regole per ogni configurazione di compilazione e quindi specificare la configurazione che contiene la regola o le regole che si desidera applicare.

È possibile utilizzare un file di risposta per fornire argomenti della riga di comando a MSBuild. Questo file può contenere qualsiasi opzione della riga di comando valida per MSBuild, incluse quelle che eseguono l'override delle proprietà del progetto. Per ulteriori informazioni sui file di risposta, vedere File di risposta MSBuild. Per ulteriori informazioni sulle opzioni della riga di comando per MSBuild, vedere Riferimenti alla riga di comando di MSBuild.

Quando si analizza il codice da un prompt dei comandi, i risultati vengono scritti in un file XML denominato StaticCodeAnalysis.Results.xml. È possibile trovare questo file nella cartella del progetto nella sottocartella SQL. È possibile specificare un nome file diverso eseguendo l'override del valore della proprietà del progetto ResultsFile.

Per analizzare il codice Transact-SQL nel progetto di database da un prompt dei comandi

  1. Aprire una finestra Prompt dei comandi.

    Nota importanteImportante

    Per eseguire MSBuild.exe, è necessario utilizzare il prompt dei comandi di Visual Studio oppure eseguire il file batch vsvars32.bat contenuto nella cartella specificata dalla variabile di ambiente %VS80COMNTOOLS%.

  2. Selezionare la directory del progetto.

  3. Al prompt dei comandi, digitare una riga di comando simile a quella riportata di seguito:

    MSBuild /t:StaticCodeAnalysis /p:Configuration=Release DatabaseProject.dbproj
    

    Nota

    È necessario che MSBuild.exe si trovi nel percorso specificato dalla variabile di ambiente PATH.

  4. Esaminare l'output di MSBuild.exe. Verrà visualizzato un output simile al seguente:

    Microsoft (R) Build Engine Version 4.0.30115.0
    [Microsoft .NET Framework, Version 4.0.30115.0]
    Copyright (C) Microsoft Corporation 2007. All rights reserved.
    
    Build started 9/11/2008 3:38:29 PM.
    Project " C:\Users\UserName\Documents\Visual Studio 2010\Projects\SolutionName\DatabaseProject\DatabaseProject.dbproj" on node 0 (StaticCodeAnalysis target(s)).
      Creating a model to represent the project...
      Loading project files...
      Building the project model and resolving object interdependencies...
      Validating the project model...
    1 problem has been detected
    C:\Users\UserName\Documents\Visual Studio 2010\Projects\SolutionName\DatabaseProject\SCHEMA OBJECTS\SCHEMAS\DBO\PROGRAMMABILITY\STORED PROCEDURES\sp_ProcedureName.proc.SQL(1,24): StaticCodeAnalysis warning : SR0014 : Microsoft.Rules.Data : Data loss might occur when casting from ASCII String(1) to NChar(1). [C:\Users\UserName\Documents\Visual Studio 2010\Projects\SolutionName\DatabaseProject\DatabaseProject.dbproj]
      One problem has been detected.
      The results are saved in C:\Users\UserName\Documents\Visual Studio 2010\Projects\SolutionName\DatabaseProject\sql\release\DatabaseProject.StaticCodeAnalysis.Results.xml.
    Done Building Project " C:\Users\UserName\Documents\Visual Studio 2010\Projects\SolutionName\DatabaseProject\DatabaseProject.dbproj" (StaticCodeAnalysis target(s)) -- FAILED.
    
    
    Build succeeded.
    
    " C:\Users\UserName\Documents\Visual Studio 2010\Projects\SolutionName\DatabaseProject\DatabaseProject.dbproj" (StaticCodeAnalysis target) (1) ->
    (DspStaticCodeAnalysis target) ->
      C:\Users\UserName\Documents\Visual Studio 2010\Projects\SolutionName\DatabaseProject\SCHEMA OBJECTS\SCHEMAS\DBO\PROGRAMMABILITY\STORED PROCEDURES\sp_ProcedureName.PROC.SQL(1,24): StaticCodeAnalysis warning : SR0014 : Microsoft.Rules.Data : Data loss might occur when casting from ASCII String(1) to NChar(1). [C:\Users\UserName\Documents\Visual Studio 2010\Projects\SolutionName\DatabaseProject\DatabaseProject.dbproj]
    
        1 Warning(s)
        0 Error(s)
    
    Time Elapsed 00:00:07.07
    

Vedere anche

Attività

Procedura dettagliata: analisi del codice Transact-SQL di un database esistente

Concetti

Analisi del codice di database per migliorare la qualità del codice

Analisi della qualità del codice gestito tramite analisi del codice

Altre risorse

Problemi di progettazione di Transact-SQL

Problemi relativi alla denominazione di Transact-SQL

Problemi relativi alle prestazioni di Transact-SQL