img | ||
code-style.md | ||
contributing.md | ||
LICENSE | ||
README.md | ||
tooling.md | ||
working-with-vcs.md | ||
XXE-prevention-guideline.md |
Рекомендации для разработчиков
Общие сведения
Разработка ведётся под Erlang/OTP версии 24 или выше.
В качестве основного инструмента для сборки, анализа исходного кода и запуска тестов используется rebar3. Рекомендуется использовать GNU Make для автоматизации рутинных операций и организации привычной среды для новых разработчиков.
Управление зависимостями в rebar3 предполагает более тесное использование центрального репозитория пакетов hex.pm, поэтому при поиске подходящих зависимостей следует посетить этот репозиторий в первую очередь.
Для написания функциональных тестов предпочтительно использовать common_test, а для написания простых модульных тестов для различных библиотек и фрагментов приложений допускается использовать eunit. Все тестовые сценарии должны быть написаны с учётом изолированной среды их исполнения, иными словами, с расчётом на то, что любые внешние зависимости и сервисы недоступны, либо эфемерны.
В качестве инструмента статического анализа настоятельно рекомендуется использовать dialyzer и xref.
При подготовке production ready сборок проектов следует использовать функционал релизов, предоставляемый relx.
Дабы исключить различные шероховатости, связанные с форматированием кода и различием в предпочтениях по этому вопросу у разных разработчиков, мы используем erlfmt, который берёт на себя исключительное право диктовать единое форматирование в рамках проекта и следит за его соблюдением.
Чтобы не начинать каждый раз с пустого листа, рекомендуется взять любезно заготовленные шаблоны проектов для rebar3. В них кроме всего перечсиленного выше демонстрируется работа с thrift и woody, поверх которых построено межсервисное взаимодействие в системе, а также с Github Actions, который мы используем в качестве инструмента CI.
Безопасность
При разработке ПО важно уделять внимание к подходам, позволяющим сделать это ПО безопасным. Необходимо руководствоваться следующими материалами: