Словарь терминов
Полное руководство по терминам код-ревью, безопасности, DevOps и качества ПО
50 терминов
Код-ревью и качество
(12)Код-ревью
HOTСистематическая проверка исходного кода одним или несколькими разработчиками для выявления ошибок, уязвимостей безопасности и улучшения качества кода перед слиянием в основную кодовую базу.
Статический анализ
HOTПроцесс анализа исходного кода без его выполнения для обнаружения потенциальных багов, уязвимостей безопасности и проблем качества кода.
Технический долг
HOTПодразумеваемая стоимость дополнительной переработки, вызванная выбором простого (ограниченного) решения сейчас вместо лучшего подхода, который занял бы больше времени.
Код-смелл
HOTПоверхностный признак в исходном коде, который обычно соответствует более глубокой проблеме в системе. Не баг сам по себе, но знак того, что может потребоваться рефакторинг.
Рефакторинг
HOTПроцесс реструктуризации существующего кода без изменения его внешнего поведения для улучшения читаемости, снижения сложности и упрощения поддержки.
Линтинг
Процесс запуска программы, которая анализирует код на потенциальные ошибки, баги, стилистические проблемы и подозрительные конструкции.
Чистый код
Код, который легко понять, просто модифицировать и который ясно выражает намерение программиста. Философия, популяризированная Robert C. Martin.
Легаси-код
Существующий код, который трудно изменять из-за отсутствия тестов, плохой документации, устаревших технологий или недоступности оригинальных разработчиков.
Принцип DRY (Don't Repeat Yourself)
Принцип разработки ПО, гласящий, что каждый элемент знания должен иметь единственное, авторитетное представление в системе.
Принцип KISS (Keep It Simple, Stupid)
Принцип проектирования, гласящий, что системы работают лучше, когда они просты, а не сложны. Простота должна быть ключевой целью.
YAGNI (You Aren't Gonna Need It)
Принцип экстремального программирования, гласящий, что программисты не должны добавлять функциональность, пока она реально не понадобится, избегая спекулятивных фич.
Мёртвый код
Код, который никогда не выполняется во время работы программы: недостижимый код, неиспользуемые функции, код за всегда-ложными условиями.
Безопасность
(12)SAST
HOTStatic Application Security Testing — метод анализа исходного кода на уязвимости безопасности без выполнения программы.
DAST
HOTDynamic Application Security Testing — метод тестирования запущенных приложений на уязвимости безопасности путем симуляции атак.
OWASP
HOTOpen Worldwide Application Security Project — некоммерческий фонд, работающий над улучшением безопасности ПО через проекты с открытым исходным кодом под руководством сообщества.
OWASP Top 10
HOTРегулярно обновляемый список 10 наиболее критических рисков безопасности веб-приложений, публикуемый OWASP как стандартный документ для информирования разработчиков.
CSRF (Межсайтовая подделка запроса)
HOTАтака, которая заставляет аутентифицированных пользователей выполнять нежелательные действия в веб-приложении, обманом заставляя их нажимать на вредоносные ссылки или отправлять формы.
Аутентификация
HOTПроцесс проверки личности пользователя, устройства или системы. Отвечает на вопрос "Кто вы?" (в отличие от авторизации, которая отвечает "Что вы можете делать?").
Управление секретами
HOTПрактика безопасного хранения, распространения и ротации конфиденциальных данных: API-ключей, паролей, учётных данных баз данных и сертификатов.
Уязвимость зависимостей
HOTУязвимость безопасности в сторонних библиотеках или пакетах, от которых зависит приложение и которые могут быть использованы для компрометации приложения.
Сканирование кода
HOTАвтоматический анализ кода для обнаружения уязвимостей безопасности, багов и проблем качества кода, обычно интегрированный в CI/CD пайплайны.
DevSecOps
Подход, интегрирующий практики безопасности в каждую фазу DevOps-пайплайна, делая безопасность общей ответственностью команд разработки, безопасности и операций.
SQL-инъекция
Техника внедрения кода, которая эксплуатирует уязвимости безопасности в слое базы данных приложения путём вставки вредоносных SQL-выражений в поля ввода.
XSS (межсайтовый скриптинг)
Уязвимость безопасности, позволяющая атакующим внедрять вредоносные скрипты в веб-страницы, просматриваемые другими пользователями, потенциально похищая сессионные куки, учётные данные или выполняя действия от имени жертв.
AI код-ревью
(3)AI код-ревью
HOTИспользование искусственного интеллекта и машинного обучения для автоматического анализа изменений кода и предоставления обратной связи по качеству, безопасности и лучшим практикам.
Автоматизированное код-ревью
HOTИспользование автоматизированных инструментов для анализа кода и предоставления обратной связи без ручного вмешательства человека, обычно интегрированное в CI/CD пайплайны.
Мульти-агентный AI
HOTАрхитектура AI, где несколько специализированных агентов совместно работают над сложными задачами, каждый фокусируясь на конкретной области: безопасность, производительность или качество кода.
DevOps и CI/CD
(5)CI/CD
HOTContinuous Integration и Continuous Delivery/Deployment — набор практик для автоматизации сборки, тестирования и деплоя изменений кода.
DevOps
HOTНабор практик, объединяющих разработку ПО (Dev) и IT-операции (Ops), направленных на сокращение цикла разработки и непрерывную доставку качественного ПО.
GitHub Actions
HOTВстроенная CI/CD платформа GitHub, позволяющая автоматизировать рабочие процессы ПО прямо из репозитория с помощью YAML-файлов конфигурации.
Shift Left
Практика переноса тестирования, качества и процессов безопасности на более ранние этапы жизненного цикла разработки ПО для более раннего обнаружения и исправления проблем.
Pre-commit хуки
Скрипты, автоматически запускающиеся перед созданием git-коммита для обеспечения стандартов качества кода, запуска линтеров и предотвращения коммита проблемного кода.
Тестирование
(7)Юнит-тестирование
HOTМетод тестирования ПО, при котором отдельные модули или компоненты кода тестируются изолированно для проверки их корректной работы.
Покрытие кода
HOTМетрика, измеряющая процент кода, выполненного во время тестирования, показывающая, какая часть кодовой базы покрыта автоматическими тестами.
E2E-тестирование (End-to-End)
HOTМетодология тестирования, проверяющая весь рабочий процесс приложения от начала до конца, симулируя реальные сценарии пользователя включая UI, API, базы данных и внешние интеграции.
TDD (разработка через тестирование)
Практика разработки ПО, где тесты пишутся до фактического кода, следуя циклу: написать падающий тест, написать минимальный код для прохождения, затем рефакторинг.
Интеграционное тестирование
Тестирование, проверяющее, что разные модули или сервисы работают правильно вместе, обычно тестируя взаимодействия между компонентами, а не отдельные юниты.
Порог покрытия тестами
Минимальный процент кода, который должен быть покрыт тестами, обеспечиваемый в CI/CD пайплайнах для гарантии, что новый код не снижает общее покрытие тестами.
Мутационное тестирование
Техника оценки качества тестов путём внесения небольших изменений (мутаций) в код и проверки, обнаруживают ли их тесты. Необнаруженные мутации указывают на слабые тесты.
Git и контроль версий
(7)Пул-реквест
HOTМетод отправки изменений кода на проверку перед слиянием в основную ветку. Также известен как merge request (MR) в GitLab.
Git
HOTРаспределённая система контроля версий, отслеживающая изменения в исходном коде во время разработки ПО, позволяющая нескольким разработчикам работать вместе.
Merge Request
Термин GitLab для пул-реквеста — метод отправки изменений кода на проверку перед слиянием в другую ветку. Функционально идентичен пул-реквесту GitHub.
Коммит
Снимок изменений в Git-репозитории, который записывает модификации файлов вместе с сообщением, описывающим что изменилось и почему.
Ветка
Независимая линия разработки в Git, позволяющая разработчикам работать над фичами, исправлениями или экспериментами без влияния на основную кодовую базу.
Gitflow
Модель ветвления для Git, определяющая строгую структуру веток, разработанную вокруг релизов проекта, с использованием выделенных веток для фич, релизов и хотфиксов.
Trunk-Based Development
Модель ветвления в системе контроля версий, где разработчики сотрудничают над кодом в единственной ветке "trunk" (или main), избегая долгоживущих фича-веток.
Метрики и архитектура
(4)Цикломатическая сложность
Метрика ПО, измеряющая количество независимых путей через исходный код программы, указывающая на сложность кода и тестируемость.
DORA-метрики
Четыре ключевые метрики, определённые командой DevOps Research and Assessment (DORA), измеряющие производительность доставки ПО: частота деплоев, время от коммита до продакшна, процент неудачных изменений, время восстановления сервиса.
SOLID-принципы
Пять принципов проектирования для объектно-ориентированного программирования, способствующих поддерживаемому, гибкому и понятному коду: Single Responsibility, Open-Closed, Liskov Substitution, Interface Segregation, Dependency Inversion.
Сложность кода
Количественная мера того, насколько сложно понять, протестировать и поддерживать код, основанная на факторах ветвления, глубины вложенности и зависимостей.
Автоматизируйте код-ревью с diffray
Мульти-агентная AI-система для код-ревью. Находит баги, уязвимости и проблемы архитектуры автоматически.