SQL Fluff
O que é SQL Fluff?
SQL Fluff é uma ferramenta de linting para SQL que foi criada para ajudar os desenvolvedores a escrever código SQL de alta qualidade.
Ele verifica o código SQL em busca de erros comuns, como erros de sintaxe, nomes de coluna e tabela incorretos, e outros problemas que podem afetar a legibilidade e manutenção do código.
O SQL Fluff também pode ser usado para aplicar regras personalizadas de linting para atender às necessidades específicas de uma equipe ou projeto. Ele suporta vários dialetos SQL, incluindo PostgreSQL, MySQL, BigQuery e SQLite.
Instalando o SQL Fluff
Para começar a usar o SQL Fluff, você precisará instalá-lo. A maneira mais fácil de fazer isso é usar o gerenciador de pacotes Python pip. Para instalar o SQL Fluff, abra o terminal e digite o seguinte comando:
pip install sqlfluff
Usando o SQL Fluff
Depois de instalar o SQL Fluff, você pode usá-lo para verificar o seu código SQL. Vamos ver alguns exemplos práticos de como usar o SQL Fluff.
- Exemplo: Verificando a Sintaxe
Vamos começar verificando a sintaxe de um código SQL. Crie um arquivo chamado exemplo.sql com o seguinte conteúdo:
SELECT
*
FROMtabela
WHERE id = 1
Para verificar a sintaxe do código SQL, execute o seguinte comando no terminal:
sqlfluff check exemplo.sql
O SQL Fluff detectará um erro de sintaxe e retornará a seguinte mensagem:
== [example.sql] FAIL
L:3|P:0|L003|There'snowhitespaceafter'FROM'
A mensagem de erro indica que há um erro na linha 3 do arquivo exemplo.sql, onde falta um espaço em branco após a palavra-chave FROM.
- Exemplo: Verificando o Nome da Tabela
Agora vamos verificar se o nome da tabela está correto. Crie um arquivo chamado exemplo2.sql com o seguinte conteúdo:
SELECT
*
FROM tabela_incorreta
WHERE id = 1
Para verificar o nome da tabela, execute o seguinte comando no terminal:
sqlfluff check exemplo2.sql
O SQL Fluff detectará um erro e retornará a seguinte mensagem:
== [example2.sql] FAIL
L: 2 | P: 5 | L002 | Linting Syntax: A Table or Alias name 'tabela_incorreta' wasn't found.
A mensagem de erro indica que o nome da tabela tabela_incorreta não foi encontrado. Você deve corrigir o nome da tabela para tabela para resolver o erro.
- Exemplo: Aplicando Regras Personalizadas
O SQL Fluff também permite que você aplique suas próprias regras de linting para atender às necessidades específicas de sua equipe ou projeto.
Vamos criar uma regra personalizada para verificar se todas as consultas SQL têm um comentário explicando o que elas fazem.
Crie um arquivo chamado regras_personalizadas.yml com o seguinte conteúdo:
version: 1
rules:
sql_has_comment:
# The SQL code to check is given in the `code` variable.
# The `errors` list should be modified to include any linting errors.
# If no errors are detected, the `errors` list should be left empty.
- name: check_sql_has_comment
code: |
# Check that every SELECT query has a comment explaining its purpose
for block in parsed.tree.iter_blocks():
if block.get_type() == "query":
if not block.comment:
errors.append(
LintError(
node=block,
message="A SELECT query should have a comment explaining its purpose."
)
)
A regra personalizada sql_has_comment verifica se todas as consultas SELECT têm um comentário explicando o que elas fazem. Para aplicar essa regra, execute o seguinte comando no terminal:
sqlfluff check exemplo3.sql --config regras_personalizadas.yml
O SQL Fluff verificará o arquivo exemplo3.sql em busca de consultas SELECT sem comentários e retornará uma mensagem de erro se encontrar algum.
Conclusão
O SQL Fluff é uma ferramenta útil para melhorar a qualidade do código SQL, reduzir erros e aumentar a consistência. Ele verifica o código SQL em busca de erros comuns, melhora a legibilidade e simplifica a manutenção.
Neste artigo, exploramos como o SQL Fluff funciona e como usá-lo para melhorar a qualidade do código SQL. Demonstramos exemplos práticos de como verificar a sintaxe do código SQL, verificar nomes de tabela e aplicar regras personalizadas de linting.
Com o SQL Fluff, você pode escrever código SQL de alta qualidade e garantir que ele atenda aos padrões de sua equipe ou projeto.
Selo 🧙♂️: