Hacking
Вот несколько советов, которые помогут вам создать и протестировать этот проект в качестве разработчика и потенциального участника.
Режим разработчика
Цели системы сборки, которые полезны только для разработчиков этого проекта, скрыты, если опция CircuitGenGenerator_DEVELOPER_MODE отключена. Включение этой опции делает доступными тесты и другие цели и параметры разработчика. Если вы не включите эту опцию, вы являетесь потребителем этого проекта и, следовательно, вам не нужны эти цели и параметры.
Режим разработчика всегда включен в рабочих процессах CI.
Правила именования переменных
Правила именования переменных:
- d_anything означает поле класса;
- i_anything принимаемый аргумент в функцию.
Пресеты
В этом проекте используются пресеты для упрощения процесса настройки проекта. Как разработчику вам рекомендуется всегда устанавливать последнюю версию CMake, чтобы использовать последние дополнения качества жизни. Таблицы пресетов, имена переменных кэша в трех репозиториях CircuitGen и порядок подключения новых исходников в CMake — в BUILDING.md.
У вас есть несколько вариантов передачи CircuitGenGenerator_DEVELOPER_MODE в команду настройки, но в этом проекте предпочитают использовать пресеты.
Пресеты разделены на два уровня:
CMakePresets.json— общие пресеты проекта (CI, release, базовые скрытые пресеты), хранится в репозитории;CMakeUserPresets.json— локальные пресеты разработчика (dev,coverage,dev-msvc), не хранится в репозитории.
Важно: CMakeUserPresets.json добавлен в .gitignore, поэтому после клонирования его нужно создать локально. Рекомендуемый старт:
cp CMakeUserPresets.json.example CMakeUserPresets.json
Если файла CMakeUserPresets.json.example нет, создайте CMakeUserPresets.json вручную на основе актуальных примеров из документации и CMakePresets.json. CMakeUserPresets.json можно дополнять локальными параметрами (например, пути к инструментам, дополнительные переменные кэша) без изменения команд в CI.
Примечание Некоторые редакторы довольно жадны в открытии проектов с пресетами. Некоторые просто случайно выбирают пресет и начинают настраивать без вашего согласия, что может сбить с толку. Убедитесь, что Ваш редактор настраивается, когда Вам на самом деле этого хочется, например, в CLion Вам нужно убедиться, что только в
dev-dev presetустановлен флажокВключить профильФайл > Настройки... > Сборка, выполнение, развертывание > CMakeи в Visual Studio Вам необходимо установить опцию «Никогда не запускать шаг настройки автоматически» вИнструменты > Параметры > CMakeдо открытия проекта, после чего Вы можете настроить вручную, используя «Проект > Настроить кэш».
Настройка, сборка и тестирование
Для локальной разработки используйте команды из корня проекта:
cmake --preset=dev cmake --build --preset=dev ctest --preset=dev
Для Linux/macOS покрытия:
cmake --preset=coverage cmake --build --preset=coverage ctest --preset=coverage cmake --build --preset=coverage -t coverage
Если вы используете совместимый редактор (например, VSCode) или IDE (например, CLion, VS), вы также сможете выбрать созданные выше пользовательские пресеты для автоматической интеграции.
Обратите внимание, что и команды сборки, и команды тестирования принимают флаг -j для указания количества используемых заданий, которое в идеале должно быть указано в соответствии с количеством потоков вашего процессора. Вы также можете добавить это в свой пресет, используя свойство jobs, более подробную информацию можно найти в документации по пресетам.
Цели режима разработчика
Это цели, которые вы можете вызвать с помощью приведенной выше команды сборки с дополнительным флагом -t <target>:
Доступно, если включен ENABLE_COVERAGE. Цель агрегирует покрытие через lcov, формирует coverage.info и summary-файл в каталоге сборки. При COVERAGE_ENABLE_HTML=ON дополнительно генерируется HTML-отчет.
Доступно, если включен BUILD_MCSS_DOCS. Сборка Doxygen + m.css для одного языка в <binary-dir>/docs (см. DOXYGEN_OUTPUT_DIRECTORY и DOXYGEN_DOCUMENTATION_LANGUAGE). Для английского и русского в <binary-dir>/docs/{html,xml,latex,pdf}/{en,ru}/ используйте scripts/dev/build-docs.sh (опция BUILD_MCSS_DOCS не нужна).
Эти цели запускают инструмент формата clang в базе кода для проверки ошибок и их исправления соответственно. Доступна настройка с использованием переменных кэша FORMAT_PATTERNS и FORMAT_COMMAND.
Запускает исполняемый целевой файл CircuitGenGenerator_exe.
Эти цели запускают инструмент кодирования в базе кода для проверки ошибок и их исправления соответственно. Доступна настройка с использованием переменной кэша SPELL_COMMAND.
Правила документирования кода
- 1: Все описания и комментирование кода/добавление TO DO пишутся в файлах с расширение .hpp
2: Все содержимое должно заключаться в ///
#include <iostream>
- 3: TO DO пишутся после подключения библиотек. Перед