Compartilhar via


Analisar o código T-SQL para encontrar defeitos

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Banco de Dados SQL no Microsoft Fabric

Você pode melhorar a qualidade do código Transact-SQL em um esquema de banco de dados importando-o para um projeto de banco de dados e analisando o código em relação a um conjunto de regras. Por exemplo, talvez você queira encontrar erros em um esquema que não desenvolveu e cuja qualidade não foi verificada. Para obter mais informações, confira Visão geral da análise de código.

Para essa avaliação inicial, você deseja encontrar todos os possíveis problemas no código do banco de dados. Você revisa os avisos e o código que causou esses avisos. Para melhorar o código T-SQL, corrija avisos, suprima um aviso e analise iterativamente o projeto de banco de dados.

Pré-requisitos

Antes de analisar o código em um projeto de banco de dados, você já deve ter um projeto SQL. Para obter mais informações sobre como usar um banco de dados existente para criar um projeto, consulte Tutorial: iniciar a partir de um banco de dados existente.

Habilitar a análise de código SQL na compilação do projeto

Para habilitar a análise de código SQL no Visual Studio, clique com o botão direito do mouse no projeto no Gerenciador de Soluções e selecione Propriedades. Na guia Análise de Código da janela Propriedades, marque a caixa de seleção Habilitar Análise de Código na Compilação.

Salve a janela Propriedades do projeto e retorne ao Gerenciador de soluções.

Para habilitar a análise de código SQL em um projeto SQL, edite o arquivo .sqlproj diretamente. Abra o arquivo .sqlproj e adicione um elemento <RunSqlCodeAnalysis>True</RunSqlCodeAnalysis> ao primeiro bloco <PropertyGroup> para habilitar a análise de código.

Para habilitar a análise de código SQL na extensão de Projetos do Banco de Dados SQL, edite o arquivo .sqlproj diretamente. Abra o arquivo .sqlproj na exibição Explorer ou clicando com o botão direito do mouse no projeto na exibição Projetos de Banco de Dados e selecionando Editar Arquivo .sqlproj.

No editor de texto, adicione um elemento <RunSqlCodeAnalysis>True</RunSqlCodeAnalysis> ao primeiro bloco <PropertyGroup> para habilitar a análise de código.

Para habilitar a análise de código SQL em um projeto SQL, edite o arquivo .sqlproj diretamente. Abra o arquivo .sqlproj e adicione um elemento <RunSqlCodeAnalysis>True</RunSqlCodeAnalysis> ao primeiro bloco <PropertyGroup> para habilitar a análise de código.

Analisar o código

Para analisar o código em um projeto de banco de dados com análise de código habilitada no build, clique com o botão direito do mouse no projeto no Gerenciador de Soluções e selecione Compilar.

A janela de saída exibe os resultados do processo de build geral.

O código T-SQL em seu projeto de banco de dados é analisado durante a compilação. Erros e avisos de análise de código aparecem na Lista de erros. Se a Lista de Erros não aparecer, abra o menu Exibir e selecione Lista de Erros. Você pode clicar duas vezes em um aviso para navegar até a linha de código que causou o aviso.

Para analisar o código em um projeto de banco de dados com análise de código habilitada no build, clique com o botão direito do mouse no projeto no Gerenciador de Soluções e selecione Compilar.

A janela de saída exibe os resultados do processo de build geral.

O código T-SQL em seu projeto de banco de dados é analisado durante a compilação. Erros e avisos de análise de código aparecem na Lista de erros. Se a Lista de Erros não aparecer, abra o menu Exibir e selecione Lista de Erros. Você pode clicar duas vezes em um aviso para navegar até a linha de código que causou o aviso.

Para analisar o código em um projeto de banco de dados com a análise de código habilitada no build, clique com o botão direito do mouse no projeto na visualização Projetos de Banco de Dados e selecione Compilar.

A janela de saída exibe os resultados do processo de build geral e quaisquer erros ou avisos da análise de código. Os arquivos especificados em cada aviso ou erro são links interativos que navegam até a linha de código que causou o aviso.

Para analisar o código em um projeto de banco de dados com a análise de código habilitada no build, execute o comando dotnet build na linha de comando no diretório do projeto.

dotnet build MyDatabaseProject.sqlproj

A saída do comando exibe os resultados do processo de build geral e quaisquer erros ou avisos da análise de código.

Configurar regras de análise de código

Para desabilitar ou habilitar uma regra específica no Visual Studio, clique com o botão direito do mouse no projeto no Gerenciador de Soluções e selecione Propriedades. Na guia Análise de Código da janela Propriedades, selecione a regra na tabela. Para alterar a gravidade de uma regra, marque a caixa Tratar Aviso como Erro para essa regra na lista.

Salve a janela Propriedades do projeto e retorne ao Gerenciador de soluções.

Para desabilitar ou habilitar uma regra específica em um projeto SQL, edite o arquivo .sqlproj diretamente. Abra o arquivo .sqlproj e adicione ou modifique o elemento no SqlCodeAnalysisRules no primeiro bloco <PropertyGroup> para especificar as regras a serem habilitadas ou desabilitadas. A configuração de exemplo a seguir desabilita duas regras (SR0007 e SR0006) e alterna SR0008 para resultar em um erro de build. O restante das regras está habilitado por padrão.

<?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 desabilitar ou habilitar uma regra específica na extensão de Projetos do Banco de Dados SQL, edite o arquivo .sqlproj diretamente. Abra o arquivo .sqlproj na exibição Explorer ou clicando com o botão direito do mouse no projeto na exibição Projetos de Banco de Dados e selecionando Editar Arquivo .sqlproj.

Adicione ou modifique o elemento no SqlCodeAnalysisRules no primeiro bloco <PropertyGroup> para especificar as regras a serem habilitadas ou desabilitadas. A configuração de exemplo a seguir desabilita duas regras (SR0007 e SR0006) e alterna SR0008 para resultar em um erro de build. O restante das regras está habilitado por padrão.

<?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 desabilitar ou habilitar uma regra específica em um projeto SQL, edite o arquivo .sqlproj diretamente. Abra o arquivo .sqlproj e adicione ou modifique o elemento no SqlCodeAnalysisRules no primeiro bloco <PropertyGroup> para especificar as regras a serem habilitadas ou desabilitadas. A configuração de exemplo a seguir desabilita duas regras (SR0007 e SR0006) e alterna SR0008 para resultar em um erro de build. O restante das regras está habilitado por padrão.

<?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>
...

Suprimir avisos da análise de código

Para suprimir um erro ou aviso de análise de código para um arquivo .sql específico no Visual Studio, clique com o botão direito do mouse no aviso na Lista de Erros e selecione Suprimir Mensagens de Análise de Código Estático. O resultado da análise de código para essa regra e arquivo .sql é suprimido e não aparece mais na Lista de Erros ou na saída de build.

Observação

Suprimir um aviso não corrige o problema subjacente. Suprima os avisos somente quando tiver um motivo válido para fazê-lo.

Para suprimir um erro ou aviso de análise de código para um arquivo .sqlespecífico em um projeto SQL, adicione um arquivo StaticCodeAnalysis.SuppressMessages.xml ao projeto. No arquivo, especifique a ID da regra e o arquivo para o qual suprimir o aviso.

<?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 o arquivo não existir, crie-o na raiz do projeto. Se o arquivo já existir, suprima um aviso adicional para o arquivo StaticCodeAnalysis.SuppressMessages.xml existente criando um novo elemento <SuppressedFile><SuppressedRule /></SuppressedFile>.

O resultado da análise de código para essa regra e arquivo .sql é suprimido e não aparece mais na saída de build.

Para suprimir um erro ou aviso de análise de código para um arquivo .sql específico na extensão Projetos de Banco de Dados SQL, adicione um arquivo StaticCodeAnalysis.SuppressMessages.xml ao projeto. No arquivo, especifique a ID da regra e o arquivo para o qual suprimir o aviso.

<?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 o arquivo não existir, crie-o na raiz do projeto. Se o arquivo já existir, suprima um aviso adicional para o arquivo StaticCodeAnalysis.SuppressMessages.xml existente criando um novo elemento <SuppressedFile><SuppressedRule /></SuppressedFile>.

O resultado da análise de código para essa regra e arquivo .sql é suprimido e não aparece mais na saída de build.

Para suprimir um erro ou aviso de análise de código para um arquivo .sqlespecífico em um projeto SQL, adicione um arquivo StaticCodeAnalysis.SuppressMessages.xml ao projeto. No arquivo, especifique a ID da regra e o arquivo para o qual suprimir o aviso.

<?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 o arquivo não existir, crie-o na raiz do projeto. Se o arquivo já existir, suprima um aviso adicional para o arquivo StaticCodeAnalysis.SuppressMessages.xml existente criando um novo elemento <SuppressedFile><SuppressedRule /></SuppressedFile>.

O resultado da análise de código para essa regra e arquivo .sql é suprimido e não aparece mais na saída de build.