О проекте
Проект — библиотека C++17 для разбора DBC, декодирования CAN-кадров и построения дерева метаданных.
core/ — библиотека без зависимости от Qt.
qt/ — необязательный адаптер для Qt.
tests/ — тесты парсера, декодера, метаданных и дерева.
examples/ — примеры использования.
Сборка выполняется через qmake. Qt-зависимые цели требуют Qt 6.8.2.
Формат задания
- В начальном сообщении с заданием первая непустая строка перед пустой строкой — точное название issue в Gitea и требуемое название чата. Описание задания начинается после этой пустой строки.
- Для названия чата используй первую строку дословно: сохраняй язык, формулировку и номер issue (
#20 и т. п.). Не переводи, не перефразируй, не добавляй описание задания, план работы или итоги.
- Например, для сообщения
Support signal value descriptions #20, за которым следуют пустая строка и описание, название чата должно быть ровно Support signal value descriptions #20.
- Применяй это правило при создании или переименовании чата, если интерфейс предоставляет такую возможность. Если управление названием недоступно, не утверждай, что чат переименован: инструкции в AGENTS.md сами по себе не управляют автоматическим названием в интерфейсе.
- Последующие уточнения и сообщения в текущем чате не меняют выбранное название, если пользователь явно не попросил его изменить.
Правила кода
- Используй TypeFactory везде, где это уместно.
- Не используй
auto как возвращаемый тип функций.
- Не используй lambda.
- Придерживайся KISS.
- Пиши читаемый код, который легко понять.
- Соблюдай существующий стиль и настройки
.clang-format.
- Сохраняй независимость
core/ от Qt.
Тестирование
- Добавляй необходимые тесты для изменённого поведения.
- При исправлении ошибки добавляй тест, воспроизводящий её.
- Подключай новые тестовые файлы к соответствующей цели qmake.
- Перед завершением работы запускай применимые тесты.
- Если проверку выполнить невозможно, сообщи причину.
Основная сборка и тесты из корня репозитория:
mkdir -p build
cd build
qmake6 ../dbc.pro
make -j4
make check
Для изменений Qt-адаптера включай model-тесты:
mkdir -p build-qt
cd build-qt
qmake6 ../dbc.pro CONFIG+=dbc_qt
make -j4
make check
Для изменений дерева запускай также standalone-тест из корня репозитория:
c++ -std=c++17 -Icore tests/tree_node_test.cpp core/tree_node.cpp \
core/dbc_tree_builder.cpp -o /tmp/dbc_tree_node_test
/tmp/dbc_tree_node_test
Используй отдельные каталоги для разных конфигураций сборки.
Документация
- Актуализируй
README.md и changelog.md при изменениях проекта.
- При изменении тестов актуализируй
tests/README.md.
- Описывай фактическое поведение и выполненные проверки.