Добро пожаловать на курс!
В этом семестре для более удобной сдачи домашек мы решили сделать обязательным использование стайлчекера, линтеров и динамической проверки утечек с помощью valgrind.
Если вы раньше не работали с подобными инструментами, то впадать и истерику не стоит, для вас есть гайд по локальному запуску этих утилит
Домашки будем сдавать на github, поэтому предлагаю обговорить правила оформления:
- Форкаем себе репозиторий и ДЕЛАЕМ ЕГО ПРИВАТНЫМ
- Каждое отдельное задание выполняется в отдельной ветке, поэтому делаем
git checkout -b hwN
, где N - номер домашнего задания - Создаем папку c названием, совпадающим с названием ветки
hwN
- В папке домашнего задания должен быть Makefile со слеудющими командами:
make build
- собирает ваш проектmake run
- запускает проектmake test
- гоняет тесты GTestmake memory
- прогон тестов с valgrind
Простой пример цели memory
:
build:
g++ -g -Wall -o main.out main_test.cpp # обязательно с флагом -g
memory:
valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes ./main.out < input.txt # это можно прям копипастить, либо подсмотрите пример хорошего makefile в папке example
Важно - в контейнере не установлен GoogleTest, поэтому вам надо будет добавить его установку на этап сборки. Этот момент чуть позже распишем более подробно.
- Когда задание сделано, создаем PR в master, смотрим, что все галочки Github Actions зеленые, делаем assign на ментора и запрашиваем у него ревьью Тут хорошо бы понятно назвать PR - типа "Домашнее задание 1". Не надо называть их как "first attempt" и тому подобное
- Когда ментор и преподаватель одобрили PR, то вмерживаем его в мастер
- Profit
В .gitignore
есть базовый набор файлов, которых не должно быть в репозитории, но все же прошу перед отправкой домашки на проверку обратить внимание на то, что в PR нет:
- бинарей
- системных файлов (привет, маковский
.DS_Store
) - файлов среды разработки (
.idea
,.vscode
, ...)
Чтобы бинари не добавлялись в репу, в Makfile добавляйте к их окончаниям .out
Для понятной истории коммитов желательно описывать в них конкретно, что вы сделали
Рекомендуется также в сообщении коммита указывать номер домашнего задания, для которого коммит сделан, например git commit -m "hw1: initial commit"
- Если не знаете, как удалить ветку, отменить/изменить коммит, то велком сюда
- Пример домашки с универсальным мейкфайлом лежит в папке example
По любым вопросам и предложениям касаемо этого репозитория пишите мне в telegram или заводите Issue на этот репозиторий, если стесняетесь, но все же лучше в личку