À propos du projet

gdstyle est un linter et un formateur pour GDScript, le langage de script utilisé par le moteur de jeu Godot 4.x. Il est écrit en Rust et distribué sous forme d'un unique binaire statique, son exécution ne nécessite donc ni Python, ni chaîne d'outils Rust, ni installation de Godot. Ce qu'il fait L'outil vérifie les fichiers GDScript à la recherche de violations de style, d'incohérences de nommage et de problèmes courants de qualité de code, et peut reformater les fichiers pour qu'ils suivent le guide de style officiel de Godot. De nombreuses conventions sont tirées du guide de style GDScript de GDQuest. Il fournit 56 règles regroupées en cinq catégories : - Syntaxe (1 règle) : signale les erreurs du lexer telles que les chaînes non terminées ou les nombres invalides. - Nommage (11 règles) : impose le PascalCase pour les classes et les enums, le snake_case pour les fonctions, les variables, les signaux et les noms de fichiers, le SCREAMING_SNAKE_CASE pour les constantes et les membres d'enum, des noms de signaux au passé et des chemins de nœuds en PascalCase. - Formatage (20 règles) : couvre la longueur des lignes, les espaces et retours à la ligne en fin de ligne, les tabulations contre les espaces, les opérateurs booléens, le style des guillemets, l'espacement des commentaires, les parenthèses, les littéraux numériques, une instruction par ligne, les lignes vides, les virgules finales, l'espacement des opérateurs/deux-points/virgules/accolades, les parenthèses d'appel, les zéros des flottants, les tirets bas des grands nombres et la disposition des enums. - Ordre (1 règle) : impose l'ordre canonique des membres de classe de Godot, des annotations et class_name jusqu'aux signaux, enums, constantes, variables, méthodes virtuelles, méthodes et classes internes. - Qualité (23 règles) : limites sur le nombre de fonctions, de fichiers, de paramètres, d'imbrications, de retours, de branches, de variables locales, de variables de classe, de méthodes publiques et de classes internes, plus des vérifications pour les pass inutiles, l'auto-comparaison, l'auto-affectation, les clés de dictionnaire dupliquées, les appels load dupliqués, le code inaccessible, await dans les boucles, les allocations dans les boucles, les recherches de nœuds dans _process, et plus encore. La plupart des règles sont activées par défaut avec une sévérité d'avertissement. Quelques règles consultatives (indications de type, fonctions vides, impressions de débogage) sont désactivées par défaut et doivent être activées explicitement. Formateur et correction automatique La sous-commande fmt reformate les fichiers sur place et est idempotente. Elle normalise l'indentation, les espaces, les lignes vides, les opérateurs booléens, les guillemets, l'espacement des commentaires, l'espacement de la ponctuation, les littéraux numériques et les retours à la ligne finaux, développe les enums sur une seule ligne, réordonne les membres de classe et replie les longues lignes aux virgules à l'intérieur des délimiteurs, aux et/ou dans les conditions et aux limites de mots dans les commentaires. Les lignes sans motif cassable sont laissées telles quelles. La sous-commande check prend en charge --fix pour les corrections sûres et --unsafe-fix pour les renommages et les réordonnancements. Les renommages non sûrs sont propagés dans les autres fichiers .gd et dans le câblage des scènes .tscn/.tres ; tout ce qui ne peut pas être réécrit en toute sécurité est signalé comme un avertissement. Les corrections sont écrites sur le disque sans sauvegarde ni confirmation, le README conseille donc de committer ou de mettre de côté les modifications au préalable. Configuration et suppression La configuration se trouve dans gdstyle.toml ou .gdstyle.toml, découvert en remontant l'arborescence des répertoires, ou passé avec --config. Les paramètres incluent la longueur de ligne, l'utilisation des tabulations, diverses limites de taille, les motifs d'exclusion/inclusion et les remplacements de sévérité par règle (off, warn, error). Les noms de règles inconnus dans la configuration sont signalés sur stderr. Les diagnostics peuvent être réduits au silence par ligne ou par fichier avec les commentaires # gdstyle:ignore et # gdstyle:ignore-file, éventuellement limités à des identifiants de règles spécifiques. Ignorer la règle d'ordre des membres épingle également un membre afin que le formateur ne le déplace pas. Intégration La sortie peut être du texte ou du JSON, et les codes de sortie distinguent les exécutions propres, les erreurs de lint ou les plafonds d'avertissement dépassés, et les erreurs de configuration. Le README documente l'utilisation avec GitHub Actions, les hooks pre-commit (gdstyle et gdstyle-fmt) et un hook git brut minimal. Un plugin optionnel pour l'éditeur Godot fournit un panneau inférieur avec des diagnostics cliquables, des corrections en un clic et le lint/formatage à l'enregistrement, en utilisant GDExtension lorsqu'il est disponible et en revenant au binaire CLI sinon. La crate est également utilisable comme bibliothèque Rust.