Как избежать повторяющихся ошибок кода в качестве интегратора на основе симптомов?

При интеграции выпусков субмодулей в родительские проекты я регулярно сталкиваюсь с ошибками, которые видны и срабатывают только при интеграции. Это нормально. Баги нормальные. Мы их отлаживаем, исправляем и отправляем в подмодуль.

Теперь случалось несколько раз, что такие исправления перезаписывались разработчиком субмодуля позже и повторялись в проекте, который интегрировал этот субмодуль.

Со временем и практически без умного отслеживания их поведения и их симптомов случается так, что оно было забыто и снова исправлено. Это очень много времени, особенно если это сложно.

Отсюда мой вопрос: как я могу технически сохранить «поведение» ошибки, которую нужно «напомнить», когда я снова увижу ее симптомы?

Есть ли инструмент, который решает мою проблему. Что-нибудь, что я могу использовать, чтобы классифицировать исправленные ошибки по признакам?

У меня была идея расширить статический анализатор (такой как coverity или clang-analyzer) с помощью пользовательских шаблонов. Это не относится к подходу «поведение / симптомы», но я мог бы анализировать код во время компиляции с помощью шаблонов, созданных во время первого исправления: «если этот код написан определенным образом, это не хорошо». По моему опыту, я мог бы устранить множество ошибок таким образом, но не все из них.

Я добавил теги C и C ++, так как это языки, которые я использую.

ОБНОВИТЬ: Как были вопросы в комментариях: мы используем git. и ошибки, которые появляются вновь, совершаются через месяцы или даже годы после их первого исправления.

ОБНОВИТЬ: мы используем Mantis для отслеживания ошибок.

1

Решение

Это не инструмент, а процесс. Для этого я использовал тесты BFV (Bug Fix Verification). Каждый раз, когда вы исправляете ошибку, вы добавляете для нее автоматический тест BFV. Название теста будет BFV # bugno — это номер ошибки в базе данных ошибок. Как часть всех сборок, которые предоставляются для тестирования, запустите все тесты BFV как часть регрессионного тестирования. Если BFV2042 дает сбой, вы можете найти ошибку # 2042 в вашей базе данных ошибок, чтобы напомнить об этом. Если вы выполняете регрессионные тесты до принятия слияний из подмодульных веток, то это даже лучше.

0

Другие решения

Других решений пока нет …