При интеграции выпусков субмодулей в родительские проекты я регулярно сталкиваюсь с ошибками, которые видны и срабатывают только при интеграции. Это нормально. Баги нормальные. Мы их отлаживаем, исправляем и отправляем в подмодуль.
Теперь случалось несколько раз, что такие исправления перезаписывались разработчиком субмодуля позже и повторялись в проекте, который интегрировал этот субмодуль.
Со временем и практически без умного отслеживания их поведения и их симптомов случается так, что оно было забыто и снова исправлено. Это очень много времени, особенно если это сложно.
Отсюда мой вопрос: как я могу технически сохранить «поведение» ошибки, которую нужно «напомнить», когда я снова увижу ее симптомы?
Есть ли инструмент, который решает мою проблему. Что-нибудь, что я могу использовать, чтобы классифицировать исправленные ошибки по признакам?
У меня была идея расширить статический анализатор (такой как coverity или clang-analyzer) с помощью пользовательских шаблонов. Это не относится к подходу «поведение / симптомы», но я мог бы анализировать код во время компиляции с помощью шаблонов, созданных во время первого исправления: «если этот код написан определенным образом, это не хорошо». По моему опыту, я мог бы устранить множество ошибок таким образом, но не все из них.
Я добавил теги C и C ++, так как это языки, которые я использую.
ОБНОВИТЬ: Как были вопросы в комментариях: мы используем git. и ошибки, которые появляются вновь, совершаются через месяцы или даже годы после их первого исправления.
ОБНОВИТЬ: мы используем Mantis для отслеживания ошибок.
Это не инструмент, а процесс. Для этого я использовал тесты BFV (Bug Fix Verification). Каждый раз, когда вы исправляете ошибку, вы добавляете для нее автоматический тест BFV. Название теста будет BFV # bugno — это номер ошибки в базе данных ошибок. Как часть всех сборок, которые предоставляются для тестирования, запустите все тесты BFV как часть регрессионного тестирования. Если BFV2042 дает сбой, вы можете найти ошибку # 2042 в вашей базе данных ошибок, чтобы напомнить об этом. Если вы выполняете регрессионные тесты до принятия слияний из подмодульных веток, то это даже лучше.
Других решений пока нет …