Руководство по разбору ошибок
В этом руководстве приведены рекомендации по разбору ошибок в баг-трекере Ruby.
Ошибки с воспроизводимыми примерами
Это лучшие отчёты об ошибках. Сначала выясните, действительно ли описанное поведение является ошибкой или же это ожидаемое поведение Ruby. Если это ожидаемое поведение Ruby, обновите задачу, объяснив, почему такое поведение ожидаемо, и установите статус «Отклонена».
Если описанное поведение похоже на настоящую ошибку, попробуйте воспроизвести её в основной ветке. Если вам не удаётся воспроизвести проблему в основной ветке, попробуйте воспроизвести её в последней версии ветки, для которой была заведена задача. Если вы не можете воспроизвести проблему ни в одном из этих случаев, обновите задачу, указав, что вам не удалось воспроизвести проблему, спросите автора отчёта, удаётся ли ему воспроизвести её в основной ветке или более позднем выпуске, и установите статус «Обратная связь».
Если вам удалось воспроизвести пример в основной ветке, попробуйте выяснить причину проблемы. Если вы уверены в своих силах, попробуйте подготовить исправление, обновите задачу и приложите исправление. Постарайтесь определить, кому из коммиттеров следует назначить задачу, укажите его в качестве исполнителя и установите статус «Назначена».
Если вам не удалось воспроизвести пример в основной ветке, но удалось воспроизвести проблему в последней версии ветки, вероятно, ошибка уже исправлена, но исправление ещё не перенесено в эту ветку. Постарайтесь определить, какой коммит исправил ошибку, и обновите задачу, отметив, что проблема исправлена, но исправление ещё не перенесено. Если версия Ruby находится на этапе сопровождения безопасности или больше не поддерживается, измените статус на «Закрыта». Это можно сделать, не добавляя комментарий, чтобы не рассылать лишние сообщения в список рассылки.
Если для решения проблемы могут потребоваться обратно несовместимые изменения или если она может выиграть от внимания коммиттеров или обсуждения, рассмотрите возможность добавить её в повестку следующей встречи коммиттеров (bugs.ruby-lang.org/issues/14770).
Аварийные завершения без воспроизводимых примеров
Многие отчёты об ошибках содержат лишь отчёт об аварийном завершении, зачастую без возможности воспроизвести проблему. Такие ошибки сложно разбирать, поскольку в отчётах часто недостаточно информации.
Если в таких отчётах указана версия Ruby из основной ветки или последнего выпуска ветки, которая находится на этапе обычного сопровождения, изучите трассировку стека и попробуйте определить возможную причину проблемы. Если вам удастся предположить, что её вызывает, попробуйте подготовить воспроизводимый пример (обычно это довольно сложно). Если вы не можете предположить, что вызывает проблему, или самостоятельно подготовить воспроизводимый пример, попросите автора отчёта предоставить такой пример и измените статус на «Обратная связь».
Если указанная версия Ruby устарела (например, 2.5.0, когда последняя версия ветки Ruby 2.5 — 2.5.5), добавьте к задаче комментарий с просьбой проверить проблему в последней версии Ruby для этой ветки и сообщить о результатах, а затем измените статус на «Обратная связь». Если версия Ruby находится на этапе сопровождения безопасности или больше не поддерживается, измените статус на «Закрыта». Это можно сделать, не добавляя комментарий.
Аварийные завершения в сторонних расширениях на C
Если аварийное завершение происходит внутри стороннего расширения на C, постарайтесь выяснить, в каком именно расширении это происходит, добавьте к задаче комментарий с просьбой сообщить о проблеме разработчикам этого расширения и установите статус «Проблема стороннего проекта».
Сообщения, не являющиеся отчётами об ошибках
Для задач в баг-трекере, которые не являются сообщениями о проблемах, следует изменить тип с «Ошибка» на «Предложение» (новые возможности или улучшение производительности) либо «Разное». Это можно сделать, не добавляя комментарий.
Неактуальные задачи
Многие задачи устарели: обновлений по ним не было месяцами, а иногда и годами. Для неактуальных задач со статусом «Обратная связь», по которым так и не получили ответа, можно изменить статус на «Закрыта», не добавляя комментарий. Если неактуальная задача имеет статус «Назначена», свяжитесь с исполнителем и уточните, может ли он обновить задачу. Если исполнитель больше не является активным коммиттером, снимите с него назначение и измените статус на «Открыта».
Ruby Core © 1993–2025 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.