05. Забываем о проблемах форматирования кода (clang-format / git pre-commit hook). Автоматизация UE.

preview_player
Показать описание
#unrealengine #jenkins #gamedev #ue4 #devops #cplusplus #clangformat #githooks

Забываем о проблемах форматирования кода. Разбираем .clang-format и автоматическое форматирование с использованием pre-commit git hook.

Мой курс «Unreal Engine — полное руководство по разработке на С++»

Ссылки из видео:

Курс посвящен автоматизации разработки Unreal Engine.

План курса:
-------------------------------------------------------------
✔ Cборка движка из исходного кода
✔ Cборка проекта blueprint игры
✔ Cборка проекта C++ игры
➨ .clang-format, pre-commit .git hook
∎ Сборка UE5 из исходного кода
∎ Unreal version selector / unreal build tool (UBT)
∎ Unreal version selector bug fixes
∎ Сборка бинарной версии из исходников (Installed Build)
∎ Сборка dedicated/listen сервера, подключение клиентов
∎ Тестирование в Unreal Engine. Обзор модуля
∎ Введение в тестирование. Теоретическая часть. Основные понятия
∎ Знакомство с Unreal Testing Automation Frontend. Простейшие unit тесты
∎ Тестирование классов UObject
∎ Test Driven Development (TDD). Тестирование AActor. Latent automation command
∎ Интеграционное тестирование. Симуляция ввода Input Component
∎ Functional screenshot test
∎ Публикация отчета по тестам. Test Report
∎ Метрики тестирования. Тестовое покрытие. OpenCppCoverage
∎ Создание работы в Jenkins для автоматического запуска тестов с публикацией отчетов
∎ Slack. Email notifications
∎ Jenkins pipelines
-------------------------------------------------------------

Ресурсы:

Поддержать канал:
Рекомендации по теме
Комментарии
Автор

Очень полезные уроки. Мне очень нравится, что всё без воды, коротко и ясно. Продолжай в том же духе!

argrigorov
Автор

Вдруг, кому полезно будет.
Если удалить какой-либо файл, подлежащий clang-формату, из файловой системы, и попытаться закоммитить это удаление файла, то git выдаст ошибку "no such file or directory fatal: pathspec 'path/myfilename.cpp' did not match any files.
Это происходит из-за того что pre-commit hook пытается обработать файл, которого уже нет.
Чтобы избежать этой ошибки, можно либо на время коммита убрать pre-commit hook, или предусмотреть такой случай в самoм скрипте в pre-commit hook:

#!/bin/sh

for file in $(git diff --staged --name-only | grep -i -E '\.(cpp|h|cs)$'); do
if [ -e "$file" ]; then
echo "Formatting: ${file}"
clang-format -i "${file}"
git add "${file}"
else
echo "File not found: ${file}. Skipping."
fi
done

michael-dxcu
Автор

жалко что под Visual Studio 2022 эти расширения не работают (

genrihkutz
Автор

Привет. БЯда какаято)
Хук прекомит. Если запустить в ручном режиме(гитбаш) то работает. Но при комите(Sourcetree) не отрабатывает. Имя файла и место хранения правильные(согласно докам).
Батник(из лекции), для принудительного форматирования, форматирует тоже нормально.
Почему может не отрабатывать? Есть возможность предположения написать?

ДмитрийЗахаров-дж
Автор

выглядит очень круто и полезно, хочу показать эту тему с клангом и его возможностями своим зарубежным коллегам, может подскажешь какой-нибудь схожий гайд, как в этом видео, только на английском?

yourfriendcaspr
Автор

Как сделать, чтобы при форматировании кода, не ставился отступ после UPROPERTY и других макросов в UE?

inigemm
Автор

Уроки огонь. 12 из 10. Одного не пойму. Зачем писать баш скрипты, если у нас есть 100% есть git-bash/sh/zsh/bash на машине с jenkins?

dominuspiritus
Автор

Привет!
решение проблемы с тем что вместе с cpp файлами форматируются и cs не нашлось?

forstudy
Автор

Батник пишет no such file or directory, хотя переменную в окружение добавил.

RDcrossChanel
Автор

Случайно нашел полезный ресурс в сети clang format configurator: zed0_co_uk clang-format-configurator (вместо нижнего подчеркивания точки, вместо пробела прямой слеш)

valeryv