Análisis del código T-SQL para buscar defectos
Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance Base de datos de Azure SQL de Microsoft Fabric
Puede mejorar la calidad del código Transact-SQL en un esquema de base de datos importándolo en un proyecto de base de datos y analizando el código en un conjunto de reglas. Por ejemplo, es posible que desee encontrar errores en un esquema que no ha desarrollado y cuya calidad no ha sido verificada. Para obtener más información, consulte la Introducción al análisis de código.
Para esta evaluación inicial, desea encontrar todos los posibles problemas en el código de la base de datos. Revise las advertencias y el código que provocó esas advertencias. Para mejorar el código T-SQL, corrija las advertencias, suprima potencialmente una advertencia y analice iterativamente el proyecto de base de datos.
Requisitos previos
Para poder analizar el código en un proyecto de base de datos, ya debe tener un proyecto SQL. Para obtener más información sobre el uso de una base de datos existente para crear un proyecto, consulte Tutorial: inicio desde una base de datos existente.
Habilitar el análisis de código en la compilación del proyecto
Para habilitar el análisis de código SQL en Visual Studio, haga clic con el botón derecho en el proyecto en el Explorador de soluciones y seleccione Propiedades. En la pestaña Análisis de código de la ventana Propiedades, marque la casilla Habilitar el análisis de código en compilación.
Guarde la ventana Propiedades del proyecto y vuelva al Explorador de soluciones.
Para habilitar el análisis de código SQL en un proyecto SQL, edite el archivo .sqlproj
directamente. Abra el archivo .sqlproj
y agregue un elemento <RunSqlCodeAnalysis>True</RunSqlCodeAnalysis>
al primer bloque <PropertyGroup>
para habilitar el análisis de código.
Para habilitar el análisis de código SQL en la extensión proyectos de base de datos SQL, edite el archivo .sqlproj
directamente. Abra el archivo .sqlproj
desde la vista Explorador o haga clic con el botón derecho sobre el proyecto en la vista Proyectos de base de datos y seleccione Editar el archivo .sqlproj.
En el editor de texto, agregue un elemento <RunSqlCodeAnalysis>True</RunSqlCodeAnalysis>
al primer bloque <PropertyGroup>
para habilitar el análisis de código.
Para habilitar el análisis de código SQL en un proyecto SQL, edite el archivo .sqlproj
directamente. Abra el archivo .sqlproj
y agregue un elemento <RunSqlCodeAnalysis>True</RunSqlCodeAnalysis>
al primer bloque <PropertyGroup>
para habilitar el análisis de código.
Analice el código
Para analizar el código de un proyecto de base de datos con el análisis de código habilitado en la compilación, haga clic con el botón derecho en el proyecto en el Explorador de soluciones y seleccione Compilar.
La ventana de salida muestra los resultados del proceso de compilación general.
El código T-SQL del proyecto de base de datos se analiza durante la compilación. Los errores y advertencias del análisis de código aparecen en la lista de errores. Si la lista de errores no aparece, abra el menú Visualizar y seleccione Lista de errores. Puede hacer doble clic en una advertencia para ir a la línea de código que provocó la advertencia.
Para analizar el código de un proyecto de base de datos con el análisis de código habilitado en la compilación, haga clic con el botón derecho en el proyecto en el Explorador de soluciones y seleccione Compilar.
La ventana de salida muestra los resultados del proceso de compilación general.
El código T-SQL del proyecto de base de datos se analiza durante la compilación. Los errores y advertencias del análisis de código aparecen en la lista de errores. Si la lista de errores no aparece, abra el menú Visualizar y seleccione Lista de errores. Puede hacer doble clic en una advertencia para ir a la línea de código que provocó la advertencia.
Para analizar el código de un proyecto de base de datos con el análisis de código habilitado en la compilación, haga clic con el botón derecho en el proyecto en la vista Proyectos de base de datos y seleccione Compilar.
La ventana de salida muestra los resultados del proceso de compilación general y los errores o advertencias del análisis de código. Los archivos especificados en cada advertencia o error son vínculos interactivos que le llevan a la línea de código que causó la advertencia.
Para analizar el código de un proyecto de base de datos con el análisis de código habilitado en la compilación, ejecute el comando dotnet build
desde la línea de comandos del directorio del proyecto.
dotnet build MyDatabaseProject.sqlproj
La salida del comando muestra los resultados del proceso de compilación general y los errores o advertencias del análisis de código.
Configuración de las reglas de análisis de código
Para habilitar o inhabilitar una regla específica en Visual Studio, haga clic con el botón derecho en el proyecto en el Explorador de soluciones y seleccione Propiedades. En la pestaña Análisis de código de la ventana Propiedades, seleccione la regla de la tabla. Para cambiar la gravedad de una regla, marque el cuadro Tratar la advertencia como error para esa regla de la lista.
Guarde la ventana Propiedades del proyecto y vuelva al Explorador de soluciones.
Para habilitar o inhabilitar una regla específica en un proyecto SQL, edite el archivo .sqlproj
directamente. Abra el archivo .sqlproj
y agregue o modifique el elemento para SqlCodeAnalysisRules
en el primer bloque <PropertyGroup>
para especificar las reglas que se van a habilitar o inhabilitar. La siguiente configuración de muestra inhabilita dos reglas (SR0007 y SR0006) y cambia SR0008 para producir un error de compilación. El resto de las reglas está inhabilitado de manera predeterminada.
<?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>
...
Para habilitar o inhabilitar una regla específica en la extensión Proyectos de base de datos SQL, edite el archivo .sqlproj
directamente. Abra el archivo .sqlproj
desde la vista Explorador o haga clic con el botón derecho sobre el proyecto en la vista Proyectos de base de datos y seleccione Editar el archivo .sqlproj.
Agregue o modifique el elemento para SqlCodeAnalysisRules
en el primer bloque <PropertyGroup>
para especificar las reglas que se van a habilitar o inhabilitar. La siguiente configuración de muestra inhabilita dos reglas (SR0007 y SR0006) y cambia SR0008 para producir un error de compilación. El resto de las reglas está inhabilitado de manera predeterminada.
<?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>
...
Para habilitar o inhabilitar una regla específica en un proyecto SQL, edite el archivo .sqlproj
directamente. Abra el archivo .sqlproj
y agregue o modifique el elemento para SqlCodeAnalysisRules
en el primer bloque <PropertyGroup>
para especificar las reglas que se van a habilitar o inhabilitar. La siguiente configuración de muestra inhabilita dos reglas (SR0007 y SR0006) y cambia SR0008 para producir un error de compilación. El resto de las reglas está inhabilitado de manera predeterminada.
<?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>
...
Supresión de advertencias de análisis de código
Para suprimir un error o advertencia de análisis de código para un archivo .sql
específico en Visual Studio, haga clic con el botón derecho en la advertencia en la lista de errores y seleccione Suprimir mensajes de análisis de código estáticos. El resultado del análisis de código para esa regla y archivo .sql
se suprime y ya no aparece en la lista de errores ni en la salida de la compilación.
Nota:
Suprimir una advertencia no corrige el problema subyacente. Suprima advertencias solo cuando tenga un motivo válido para hacerlo.
Para suprimir un error de análisis de código o una advertencia para un archivo .sql
específico en un proyecto SQL, agregue un archivo StaticCodeAnalysis.SuppressMessages.xml
al proyecto. En el archivo, especifique el identificador de regla y el archivo para el que se suprimirá la advertencia.
<?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>
Si el archivo no existe, créelo en la raíz del proyecto. Si el archivo ya existe, suprima una advertencia adicional del archivo StaticCodeAnalysis.SuppressMessages.xml
existente mediante la creación de un nuevo elemento <SuppressedFile><SuppressedRule /></SuppressedFile>
.
El resultado del análisis de código para esa regla y archivo .sql
se suprime y ya no aparece en la salida de la compilación.
Para suprimir un error de análisis de código o una advertencia para un archivo .sql
específico en la extensión Proyectos de base de datos SQL, agregue un archivo StaticCodeAnalysis.SuppressMessages.xml
al proyecto. En el archivo, especifique el identificador de regla y el archivo para el que se suprimirá la advertencia.
<?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>
Si el archivo no existe, créelo en la raíz del proyecto. Si el archivo ya existe, suprima una advertencia adicional del archivo StaticCodeAnalysis.SuppressMessages.xml
existente mediante la creación de un nuevo elemento <SuppressedFile><SuppressedRule /></SuppressedFile>
.
El resultado del análisis de código para esa regla y archivo .sql
se suprime y ya no aparece en la salida de la compilación.
Para suprimir un error de análisis de código o una advertencia para un archivo .sql
específico en un proyecto SQL, agregue un archivo StaticCodeAnalysis.SuppressMessages.xml
al proyecto. En el archivo, especifique el identificador de regla y el archivo para el que se suprimirá la advertencia.
<?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>
Si el archivo no existe, créelo en la raíz del proyecto. Si el archivo ya existe, suprima una advertencia adicional del archivo StaticCodeAnalysis.SuppressMessages.xml
existente mediante la creación de un nuevo elemento <SuppressedFile><SuppressedRule /></SuppressedFile>
.
El resultado del análisis de código para esa regla y archivo .sql
se suprime y ya no aparece en la salida de la compilación.