Files
dbc/docs/html/md_AGENTS.html
T
2026-10-20 13:40:44 -04:00

171 lines
9.5 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>DBC Framework: Инструкции для работы с проектом</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">DBC Framework
</div>
<div id="projectbrief">DBC parsing and CAN signal decoding framework</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('md_AGENTS.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div><div class="header">
<div class="headertitle"><div class="title">Инструкции для работы с проектом</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p><a class="anchor" id="autotoc_md0"></a> </p>
<h1><a class="anchor" id="autotoc_md1"></a>
О проекте</h1>
<p>Проект — библиотека C++17 для разбора DBC, декодирования CAN-кадров и построения дерева метаданных.</p>
<ul>
<li><code>core/</code> — библиотека без зависимости от Qt.</li>
<li><code>qt/</code> — необязательный адаптер для Qt.</li>
<li><code>tests/</code> — тесты парсера, декодера, метаданных и дерева.</li>
<li><code>examples/</code> — примеры использования.</li>
</ul>
<p>Сборка выполняется через qmake. Qt-зависимые цели требуют Qt 6.8.2.</p>
<h1><a class="anchor" id="autotoc_md2"></a>
Формат задания</h1>
<ul>
<li>В начальном сообщении с заданием первая непустая строка перед пустой строкой — точное название issue в Gitea и требуемое название чата. Описание задания начинается после этой пустой строки.</li>
<li>Для названия чата используй первую строку дословно: сохраняй язык, формулировку и номер issue (<code>#20</code> и т. п.). Не переводи, не перефразируй, не добавляй описание задания, план работы или итоги.</li>
<li>Например, для сообщения <code>Support signal value descriptions #20</code>, за которым следуют пустая строка и описание, название чата должно быть ровно <code>Support signal value descriptions #20</code>.</li>
<li>Применяй это правило при создании или переименовании чата, если интерфейс предоставляет такую возможность. Если управление названием недоступно, не утверждай, что чат переименован: инструкции в AGENTS.md сами по себе не управляют автоматическим названием в интерфейсе.</li>
<li>Последующие уточнения и сообщения в текущем чате не меняют выбранное название, если пользователь явно не попросил его изменить.</li>
</ul>
<h1><a class="anchor" id="autotoc_md3"></a>
Правила кода</h1>
<ul>
<li>Используй <a class="el" href="classTypeFactory.html" title="Registry-based factory for creating objects by runtime identifier.">TypeFactory</a> везде, где это уместно.</li>
<li>Не используй <code>auto</code> как возвращаемый тип функций.</li>
<li>Не используй lambda.</li>
<li>Придерживайся KISS.</li>
<li>Пиши читаемый код, который легко понять.</li>
<li>Соблюдай существующий стиль и настройки <code>.clang-format</code>.</li>
<li>Сохраняй независимость <code>core/</code> от Qt.</li>
</ul>
<h1><a class="anchor" id="autotoc_md4"></a>
Тестирование</h1>
<ul>
<li>Добавляй необходимые тесты для изменённого поведения.</li>
<li>При исправлении ошибки добавляй тест, воспроизводящий её.</li>
<li>Подключай новые тестовые файлы к соответствующей цели qmake.</li>
<li>Перед завершением работы запускай применимые тесты.</li>
<li>Если проверку выполнить невозможно, сообщи причину.</li>
</ul>
<p>Основная сборка и тесты из корня репозитория:</p>
<div class="fragment"><div class="line">mkdir -p build</div>
<div class="line">cd build</div>
<div class="line">qmake6 ../dbc.pro</div>
<div class="line">make -j4</div>
<div class="line">make check</div>
</div><!-- fragment --><p>Для изменений Qt-адаптера включай model-тесты:</p>
<div class="fragment"><div class="line">mkdir -p build-qt</div>
<div class="line">cd build-qt</div>
<div class="line">qmake6 ../dbc.pro CONFIG+=dbc_qt</div>
<div class="line">make -j4</div>
<div class="line">make check</div>
</div><!-- fragment --><p>Для изменений дерева запускай также standalone-тест из корня репозитория:</p>
<div class="fragment"><div class="line">c++ -std=c++17 -Icore tests/tree_node_test.cpp core/tree_node.cpp \</div>
<div class="line"> core/dbc_tree_builder.cpp -o /tmp/dbc_tree_node_test</div>
<div class="line">/tmp/dbc_tree_node_test</div>
</div><!-- fragment --><p>Используй отдельные каталоги для разных конфигураций сборки.</p>
<h1><a class="anchor" id="autotoc_md5"></a>
Документация</h1>
<ul>
<li>Актуализируй <code>README.md</code> и <code>changelog.md</code> при изменениях проекта.</li>
<li>При изменении тестов актуализируй <code>tests/README.md</code>.</li>
<li>Описывай фактическое поведение и выполненные проверки. </li>
</ul>
</div></div><!-- contents -->
</div><!-- PageDoc -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
</ul>
</div>
</body>
</html>