Sobre o projeto
gdstyle é um linter e formatador para GDScript, a linguagem de script usada pelo motor de jogo Godot 4.x. Ele é escrito em Rust e distribuído como um único binário estático, então executá-lo não requer Python, uma toolchain Rust ou uma instalação do Godot.
O que ele faz
A ferramenta verifica arquivos GDScript quanto a violações de estilo, inconsistências de nomenclatura e problemas comuns de qualidade de código, e pode reformatar arquivos para seguir o guia de estilo oficial do Godot. Muitas convenções são extraídas do guia de estilo GDScript da GDQuest. Ele inclui 56 regras agrupadas em cinco categorias:
- Sintaxe (1 regra): relata erros de lexer, como strings não terminadas ou números inválidos.
- Nomenclatura (11 regras): impõe PascalCase para classes e enums, snake_case para funções, variáveis, sinais e nomes de arquivos, SCREAMING_SNAKE_CASE para constantes e membros de enum, nomes de sinais no passado e caminhos de nós em PascalCase.
- Formatação (20 regras): cobre comprimento de linha, espaços em branco e novas linhas finais, tabs vs espaços, operadores booleanos, estilo de aspas, espaçamento de comentários, parênteses, literais numéricos, uma declaração por linha, linhas em branco, vírgulas finais, espaçamento de operadores/dois pontos/vírgulas/chaves, parênteses de chamada, zeros em floats, sublinhados em números grandes e layout de enums.
- Ordenação (1 regra): impõe a ordem canônica de membros de classe do Godot, de anotações e class_name até sinais, enums, constantes, variáveis, métodos virtuais, métodos e classes internas.
- Qualidade (23 regras): limites para contagens de funções, arquivos, parâmetros, aninhamento, retornos, ramificações, variáveis locais, variáveis de classe, métodos públicos e classes internas, além de verificações para pass desnecessário, autocomparação, auto-atribuição, chaves duplicadas em dicionários, chamadas load duplicadas, código inalcançável, await em loops, alocação em loops, buscas de nós em _process e mais.
A maioria das regras está habilitada por padrão com severidade de aviso. Algumas regras consultivas (type hints, funções vazias, prints de depuração) estão desativadas por padrão e devem ser habilitadas explicitamente.
Formatador e correção automática
O subcomando fmt reformata arquivos no lugar e é idempotente. Ele normaliza indentação, espaços em branco, linhas em branco, operadores booleanos, aspas, espaçamento de comentários, espaçamento de pontuação, literais numéricos e novas linhas finais, expande enums de linha única, reordena membros de classe e quebra linhas longas em vírgulas dentro de delimitadores, em e/ou em condições e em limites de palavras em comentários. Linhas sem um padrão quebrável são deixadas intactas.
O subcomando check suporta --fix para correções seguras e --unsafe-fix para renomeações e reordenações. Renomeações inseguras são propagadas para outros arquivos .gd e para a fiação de cenas .tscn/.tres; qualquer coisa que não possa ser reescrita com segurança é relatada como um aviso. As correções são gravadas no disco sem backup ou confirmação, então o README aconselha commitar ou guardar (stash) primeiro.
Configuração e supressão
A configuração fica em gdstyle.toml ou .gdstyle.toml, descoberta subindo a árvore de diretórios, ou passada com --config. As configurações incluem comprimento de linha, uso de tabs, vários limites de tamanho, padrões de exclusão/inclusão e substituições de severidade por regra (off, warn, error). Nomes de regras desconhecidos na configuração são relatados no stderr. Diagnósticos podem ser silenciados por linha ou por arquivo com comentários # gdstyle:ignore e # gdstyle:ignore-file, opcionalmente restritos a IDs de regras específicos. Ignorar a regra de ordem de membros também fixa um membro para que o formatador não o mova.
Integração
A saída pode ser texto ou JSON, e os códigos de saída distinguem execuções limpas, erros de lint ou limites de aviso excedidos e erros de configuração. O README documenta o uso com GitHub Actions, hooks de pre-commit (gdstyle e gdstyle-fmt) e um hook git bruto mínimo. Um plugin opcional para o editor Godot fornece um painel inferior com diagnósticos clicáveis, correções com um clique e lint/format ao salvar, usando GDExtension quando disponível e recorrendo ao binário CLI. A crate também é utilizável como uma biblioteca Rust.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.