Formatar Transact-SQL na extensão MSSQL para Visual Studio Code

A formatação consistente torna Transact-SQL (T-SQL) mais fácil de ler, rever e manter, especialmente quando várias pessoas contribuem para a mesma base de código. A extensão MSSQL para Visual Studio Code inclui um formador SQL incorporado (Preview) que pode executar a pedido, configurar para formatação automática no save e personalizar através das definições do Visual Studio Code.

A funcionalidade de formatação T-SQL na extensão MSSQL é construída sobre o ScriptDOM, uma biblioteca .NET de código aberto que analisa T-SQL e gera scripts baseados em árvores de sintaxe abstratas.

Formato sob demanda

Podes formatar o T-SQL em qualquer janela do editor. O formador funciona no documento inteiro ou apenas no texto que seleciona.

Para formatar T-SQL a pedido, utilize um dos seguintes métodos:

  • Menu de contexto: Clique com o botão direito numa janela do editor T-SQL e selecione Formatar Documento ou Seleção de Formato.

  • Paleta de Comandos: Executar Documento de Formato ou Seleção de Formato.

  • Atalho de teclado: Para Formatar Documento, pressione Shift+Alt+F no Windows e Linux, ou Shift+Option+F no macOS. Para seleção de formato, pressione Ctrl+K, Ctrl+F no Windows e Linux, ou Cmd+K, Cmd+F no macOS.

Formatar ao guardar

No Visual Studio Code, a definição padrão do editor controla o formato ao guardar, em vez de uma configuração dedicada de formateador MSSQL.

Use as seguintes definições no seu ficheiro Visual Studio Code settings.json para formatar T-SQL automaticamente sempre que guardar um ficheiro:

{
  "[sql]": {
    "editor.formatOnSave": true
  }
}

Configurar opções de formatação

Configure a formatação na interface de Definições do Visual Studio Code ou no utilizador ou espaço de trabalhosettings.json.

No editor de Definições, procure por Formato Mssql> para ver as opções disponíveis. Em settings.json, utilize as definições mssql.format.* correspondentes.

  • O formatador de pré-visualização está ativado por defeito. As suas opções usam o mssql.format.options.* namespace.

  • As cinco definições existentes de formatador permanecem disponíveis quando a formatadora de pré-visualização está ativada. O formatador de pré-visualização adiciona as definições mssql.format.options.*.

Captura de ecrã das definições do formatador SQL no editor de Definições do Visual Studio Code.

Configurações suportadas

As tabelas apresentam as configurações existentes do formatador, seguidas pelas configurações de pré-visualização do formatador.

Definições existentes do formatador

Configuração Tipo Predefinição Description
mssql.format.alignColumnDefinitionsInColumns bool false Alinhar definições de colunas em colunas.
mssql.format.datatypeCasing enumeração none Formate os tipos de dados como uppercase, lowercase, ou none (não formatados).
mssql.format.keywordCasing enumeração none Formate palavras-chave como uppercase, lowercase, ou none (não formatado).
mssql.format.placeCommasBeforeNextStatement bool false Coloque vírgulas no início de cada item numa lista, por exemplo , mycolumn2, em vez de no final, por exemplo mycolumn1,.
mssql.format.placeSelectStatementReferencesOnNewLine bool false Coloque referências numa SELECT declaração em linhas separadas. Para SELECT C1, C2 FROM T1, tanto C1 como C2 estão em linhas separadas.

Pré-visualizar definições do formatador

Estas mssql.format.options.* definições adicionam-se às definições existentes do formatador quando ativas o formatador de pré-visualização.

General

Configuração Tipo Predefinição Description
mssql.format.enablePreviewFormatter bool true Utilize o formatador de SQL (Pré-visualização).
mssql.format.showParseErrorNotification bool true Mostrar uma notificação quando o formatador não conseguir analisar totalmente o T-SQL.
mssql.format.options.sqlVersion enumeração sql170 Versão T-SQL usada para analisar e gerar scripts formatados.
mssql.format.options.sqlEngineType enumeração all Tipo Database Engine usado para analisar e gerar scripts formatados. Os valores válidos são all, standalonee sqlAzure.

Alinhamento

Configuração Tipo Predefinição Description
mssql.format.options.alignClauseBodies bool true Alinhe os corpos de FROM, WHERE, GROUP BY e cláusulas semelhantes.
mssql.format.options.alignColumnDefinitionFields bool true Alinhe os campos de definição de colunas, como nome, tipo e restrições.
mssql.format.options.alignSetClauseItem bool true Alinhar SET os itens das cláusulas nas UPDATE declarações.

Paths

Configuração Tipo Predefinição Description
mssql.format.options.allowExternalLanguagePaths bool true Permitir que conteúdos de línguas externas utilizem caminhos de ficheiros.
mssql.format.options.allowExternalLibraryPaths bool true Permitir que o conteúdo externo da biblioteca use caminhos de ficheiros.

Formatting

Configuração Tipo Predefinição Description
mssql.format.options.asKeywordOnOwnLine bool true Coloque AS numa linha própria.
mssql.format.options.keywordCasing enumeração uppercase Estilo de capitalização das palavras-chave. Os valores válidos são uppercase, lowercasee pascalCase.
mssql.format.options.preserveComments bool true Preserve os comentários durante a formatação.
mssql.format.options.numNewlinesAfterStatement int 1 Número de quebras de linha após cada afirmação, de 0 até 5.

Recuo

Configuração Tipo Predefinição Description
mssql.format.options.indentSetClause bool false Indentar a cláusula SET nas instruções UPDATE.
mssql.format.options.indentViewBody bool false Indentar corpo VIEW.

Multilinha

Configuração Tipo Predefinição Description
mssql.format.options.multilineInsertSourcesList bool true INSERT Fontes como multilinha.
mssql.format.options.multilineInsertTargetsList bool true INSERT colunas como várias linhas.
mssql.format.options.multilineSelectElementsList bool true SELECT colunas como várias linhas.
mssql.format.options.multilineSetClauseItems bool true SET itens como multilinhas.
mssql.format.options.multilineViewColumnsList bool true VIEW colunas como várias linhas.
mssql.format.options.multilineWherePredicatesList bool true WHERE predicados como multilinha.

Nova linha

Configuração Tipo Predefinição Description
mssql.format.options.newLineBeforeCloseParenthesisInMultilineList bool true Nova linha antes de fechar parênteses na lista multilinha.
mssql.format.options.newLineBeforeFromClause bool true Nova linha antes da cláusula FROM.
mssql.format.options.newLineBeforeGroupByClause bool true Nova linha antes da cláusula GROUP BY.
mssql.format.options.newLineBeforeHavingClause bool true Nova linha antes da cláusula HAVING.
mssql.format.options.newLineBeforeJoinClause bool true Nova linha antes da cláusula JOIN.
mssql.format.options.newLineBeforeOffsetClause bool true Nova linha antes de OFFSET cláusula.
mssql.format.options.newLineBeforeOpenParenthesisInMultilineList bool false Nova linha antes do parêntese de abertura numa lista multilinha.
mssql.format.options.newLineBeforeOrderByClause bool true Nova linha antes da cláusula ORDER BY.
mssql.format.options.newLineBeforeOutputClause bool true Nova linha antes da cláusula OUTPUT.
mssql.format.options.newLineBeforeWhereClause bool true Nova linha antes da cláusula WHERE.
mssql.format.options.newLineBeforeWindowClause bool true Nova linha antes da cláusula WINDOW.
mssql.format.options.newlineFormattedCheckConstraint bool false Restrição formatada CHECK por linha nova.
mssql.format.options.newLineFormattedIndexDefinition bool false Definição de índice formatado por linha nova.

Spacing

Configuração Tipo Predefinição Description
mssql.format.options.spaceBetweenDataTypeAndParameters bool true Espaço entre o tipo de dados e os parênteses, por exemplo, VARCHAR (255).
mssql.format.options.spaceBetweenParametersInDataType bool true Espaço entre parâmetros nos tipos de dados.

Ficheiro de definições de exemplo

{
  "mssql.format.options.keywordCasing": "lowercase",
  "mssql.format.options.alignClauseBodies": false,
  "mssql.format.options.numNewlinesAfterStatement": 2,
  "[sql]": {
    "editor.formatOnSave": true
  }
}

Definir o formador padrão

Para definir a extensão MSSQL como padrão, selecione Configurar Formatador Padrão...>SQL Server (mssql), ou adicionar a seguinte configuração asettings.json:

{
  "[sql]": {
    "editor.defaultFormatter": "ms-mssql.mssql"
  }
}