Partilhar via


Visão geral de extensibilidade para regras de análise de código do banco de dados

 

Aplicável a: SQL Server 2014, SQL Server 2016 Preview

As edições Visual Studio contendo SQL Server Data Tools incluem regras de análise de código para relatórios em Transact-SQL avisos de design, nomeação e desempenho em seu código de banco de dados.Para obter mais informações, consulte Análise de código de banco de dados para melhorar a qualidade do código.

Se as regras de análise de código integrado não tiverem cobertura para um determinado problema Transact-SQL a ser incluído, você pode criar regras de análise de código do banco de dados personalizado.Por exemplo, você talvez queira criar uma regra personalizada que evite o uso da instrução WAITFOR DELAY, conforme demonstrado no Passo a passo da criação de um Assembly de regra de análise de código estático personalizado para o SQL Server.Para criar regras de análise de código personalizado do banco de dados, você pode usar as classes no namespace Microsoft.SqlServer.Dac.CodeAnalysis.

Antes de criar regras de análise de código personalizado, você deve compreender a arquitetura básica entre os vários componentes de regras de análise de código do banco de dados.

Componentes de regras de análise de código do banco de dados

O diagrama a seguir ilustra como interagem os componentes de regras de análise de código de banco de dados:

Database Code Analysis Rules Components

Quando você usa o recurso de regras de análise de código de banco de dados, executando a análise de código estático diretamente (para obter mais informações, consulte Como analisar o código Transact-SQL para localizar defeitos) ou executando uma compilação, todas as regras são carregadas e usadas de acordo com a forma como você as configurou em seu projeto.Para obter mais informações, consulte Como habilitar e desabilitar regras específicas para análise estática de código de banco de dados.O Gerenciador de Extensões também carregará todos os assemblies de regra personalizada que você tenha criado e registrado.Para obter mais informações, consulte Como instalar e gerenciar extensões de recurso.

Uma classe de regra de análise de código personalizado herda de SqlCodeAnalysisRule.A classe de regra personalizada pode acessar um número de objetos úteis por meio de seu contexto de execução de regra.Eles incluem:

  • Metadados sobre a regra em si.

  • O TSqlModel que representa o esquema do banco de dados, incluindo todos os elementos do modelo, relações entre eles e as propriedades dos elementos.

  • Para regras que examinam os elementos específicos de TSqlObject que representa o elemento de esquema no modelo que está incluído no contexto.

  • Muitos objetos de esquema também têm uma representação ScriptDom que pode ser acessada por meio desse contexto. Essa é uma representação baseada em AST de um elemento que pode ser útil ao tentar prever problemas de sintaxe em potencial, como a presença de SelectStarExpression.

Um SqlRuleProblem é criado pela regra para representar quaisquer problemas encontrados por ele.Ao criá-lo, o TSqlObject relevante e possivelmente um elemento de representação ScriptDom são passados para o construtor e usados para determinar o local do problema em seus arquivos de código-fonte.Ao final da análise, todos esses problemas são passados para o Gerenciador de Erro e exibidos na Lista de Erros.

Consulte também

Estender os recursos de banco de dados