Об этом проекте
gdstyle — это линтер и форматтер для GDScript, языка сценариев, используемого в игровом движке Godot 4.x. Он написан на Rust и распространяется как единый статический бинарный файл, поэтому для его запуска не требуются Python, инструментарий Rust или установка Godot.
Что он делает
Инструмент проверяет файлы GDScript на нарушения стиля, несоответствия в именовании и распространенные проблемы качества кода, а также может переформатировать файлы в соответствии с официальным руководством по стилю Godot. Многие соглашения взяты из руководства по стилю GDScript от GDQuest. Он включает 56 правил, сгруппированных в пять категорий:
- Синтаксис (1 правило): сообщает об ошибках лексера, таких как незакрытые строки или недопустимые числа.
- Именование (11 правил): требует PascalCase для классов и перечислений, snake_case для функций, переменных, сигналов и имен файлов, SCREAMING_SNAKE_CASE для констант и элементов перечислений, имена сигналов в прошедшем времени и PascalCase для путей к узлам.
- Форматирование (20 правил): охватывает длину строк, завершающие пробелы и новые строки, табуляцию против пробелов, логические операторы, стиль кавычек, интервалы в комментариях, круглые скобки, числовые литералы, одно выражение на строку, пустые строки, завершающие запятые, интервалы вокруг операторов, двоеточий, запятых и фигурных скобок, круглые скобки при вызовах, нули в числах с плавающей точкой, подчеркивания в больших числах и расположение перечислений.
- Порядок (1 правило): обеспечивает канонический порядок членов класса Godot, от аннотаций и class_name через сигналы, перечисления, константы, переменные, виртуальные методы, методы и внутренние классы.
- Качество (23 правила): ограничения на количество функций, файлов, параметров, уровней вложенности, возвратов, ветвей, локальных переменных, переменных класса, публичных методов и внутренних классов, а также проверки на ненужный pass, сравнение с собой, присваивание самому себе, дублирующиеся ключи словаря, дублирующиеся вызовы load, недостижимый код, await в циклах, выделение памяти в циклах, поиск узлов в _process и многое другое.
Большинство правил включены по умолчанию с уровнем серьезности «предупреждение». Некоторые рекомендательные правила (подсказки типов, пустые функции, отладочные print) по умолчанию отключены и должны быть включены явно.
Форматтер и автоисправление
Подкоманда fmt переформатирует файлы на месте и является идемпотентной. Она нормализует отступы, пробелы, пустые строки, логические операторы, кавычки, интервалы в комментариях, интервалы вокруг знаков препинания, числовые литералы и завершающие новые строки, разворачивает однострочные перечисления, переупорядочивает члены класса и переносит длинные строки по запятым внутри разделителей, по and/or в условиях и по границам слов в комментариях. Строки без возможности переноса остаются без изменений.
Подкоманда check поддерживает --fix для безопасных исправлений и --unsafe-fix для переименований и переупорядочивания. Небезопасные переименования распространяются на другие файлы .gd и в связи сцен в .tscn/.tres; все, что не может быть безопасно переписано, сообщается как предупреждение. Исправления записываются на диск без резервной копии или подтверждения, поэтому в README рекомендуется сначала сделать коммит или отложить изменения.
Конфигурация и подавление
Конфигурация находится в gdstyle.toml или .gdstyle.toml, обнаруживается путем подъема по дереву каталогов или передается с помощью --config. Настройки включают длину строки, использование табуляции, различные ограничения размера, шаблоны исключения/включения и переопределения серьезности для отдельных правил (off, warn, error). Неизвестные имена правил в конфигурации сообщаются в stderr. Диагностику можно подавить для строки или файла с помощью комментариев # gdstyle:ignore и # gdstyle:ignore-file, опционально сузив до конкретных идентификаторов правил. Игнорирование правила порядка членов также закрепляет член, чтобы форматтер не перемещал его.
Интеграция
Вывод может быть текстовым или JSON, а коды выхода различают чистый запуск, ошибки линтинга или превышение пределов предупреждений и ошибки конфигурации. В README документировано использование GitHub Actions, хуки pre-commit (gdstyle и gdstyle-fmt) и минимальный сырой git-хук. Дополнительный плагин редактора Godot предоставляет нижнюю панель с кликабельными диагностиками, исправления в один клик и линтинг/форматирование при сохранении, используя GDExtension, когда доступно, и возвращаясь к CLI-бинарнику. Крейт также можно использовать как библиотеку Rust.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.