Solidity компилятор — критически важная часть инфраструктуры в экосистеме Ethereum. По этой причине наш процесс проверки довольно строг, и все PR должны соответствовать определённым ожиданиям качества и рекомендациям.
Приведённый ниже список призван уменьшить нагрузку на основную команду, помогая участникам самостоятельно выявлять и решать общие проблемы до того, как они будут указаны при проверке. Он также должен служить окончательным контрольным списком для рецензентов перед одобрением PR.
— [ ] Есть ли у вас другие открытые PR? Работа над PR не завершена, пока он не будет объединён или закрыт. Наша способность к проверке ограничена, поэтому мы требуем, чтобы внешние участники работали не более чем над одним PR одновременно. Если ваш PR не проверяется, вы можете привлечь к нему наше внимание на канале #solidity-dev. Если их не запрашивали, мы собираемся закрыть любые лишние PR, оставив открытым только самый ранний. Вы можете повторно открыть их по одному, когда ваш текущий PR будет завершён.
— [ ] Готов ли вопрос к работе?
Если у вопроса нет метки желательности (nice to have
, should have
,
must have eventually
, must have
, roadmap
), мы ещё не решили, стоит ли его реализовывать.
Если вопрос имеет метку needs design
, мы ещё не определились, как его следует реализовать.
good first issue candidate
означает, что вопрос потенциально станет хорошим первым вопросом
со временем, но в данный момент он ещё не готов к работе.
— [ ] Это критическое изменение? Критические изменения должны основываться на ветке breaking
, а не на ветке develop
.
— [ ] Действительно ли PR решает проблему?
Упомяните номер вопроса в описании PR.
Если PR полностью решает его, используйте форму Fixes #<номер вопроса>
, чтобы GitHub автоматически закрыл вопрос.
Не включайте номер вопроса в заголовок PR, название ветки или описание фиксации.
— [ ] При отправке PR из форка создайте ветку и дайте ей описательное имя.
Например, fix-array-abi-encoding-bug
.
Не отправляйте PR непосредственно из ветки develop
вашего форка, так как это затрудняет перебазирование и получение новых изменений.
— [ ] Зависит ли PR от других PR?
Если PR имеет зависимости, укажите их жирным шрифтом в описании.
Избегайте основывать PR из форков на ветках, отличных от develop
или breaking
, потому что GitHub закрывает их, когда базовая ветка объединяется.
Делайте это только для PR, созданных непосредственно в основном репозитории.
— [ ] Обновляет ли PR тестовые ожидания в соответствии с изменённым кодом? Если нет, ваш PR не пройдёт некоторые из заданий _soltest_
в CI.
Во многих случаях ожидания можно обновить автоматически:
cmdlineTests.sh --update
для тестов командной строки.isoltest --enforce-gas-cost --accept-updates
для основанных на soltest тестов.
Если ваш PR влияет на стоимость газа, необходим дополнительный запуск isoltest --enforce-gas-cost --optimize --accept-updates
, чтобы обновить ожидания по газу с включённым оптимизатором.
Просмотрите обновлённые файлы перед фиксацией.
Верны ли ожидания и служат ли обновлённые тесты своей цели?
— [ ] Ответственный за PR всё ещё отвечает? Если в PR не было активности от отправителя в течение последних 2 недель (несмотря на получение отзывов и наших запросов), мы считаем его заброшенным.
— [ ] Легко ли завершить заброшенный PR или он актуален?
Примените метку takeover
, если PR можно завершить без значительных усилий или это действительно нужно сделать прямо сейчас.
В противном случае закройте его.
Его всё равно можно будет взять позже или повторно открыть отправителем, но до тех пор мы не должны отвлекаться на него.
Перед подробным обзором рекомендуется провести быстрый поверхностный обзор новых PR, который не предназначен для предоставления полной и подробной обратной связи, а вместо этого даёт отправителю общее представление о том, соответствует ли PR требованиям. PR находится на верном пути, и пусть они сами решают очевидные проблемы.
Лёгкий обзор должен быть сосредоточен на следующих трёх областях:
Если ответы на вышеперечисленные вопросы «Да, Да, Нет», поблагодарите автора за его усилия и закройте PR.
solAssert()
.Следующие пункты охватываются стилем кодирования, но встречаются так часто, что стоит выделить их здесь:
T const*
, а не const T *
..editorconfig
.
auto
. Используйте его только тогда, когда фактический тип очень длинный и сложный или когда он уже используется в том же выражении.using namespace
только в .cpp
файлах. Используйте его для std
и наших собственных модулей. Избегайте ненужного префикса std::
в .cpp
файлах (кроме std::move
и std::forward
).``x``
). Предпочитайте одинарные обратные кавычки в Markdown (`x`
), но обратите внимание, что двойные обратные кавычки также допустимы, и мы используем их в некоторых случаях по устаревшим причинам.develop
(или breaking
, если это критическое изменение)?_ext_
в названии). Если они завершаются неудачно, перебазируйте на последнюю версию develop
(или breaking
) и попробуйте запустить их повторно. Также обратите внимание, что не все эти проверки обязательны для слияния PR.внешний вклад
, чтобы пометить PR, не исходящие от основной команды.имеет зависимости
и установите базовую ветку соответствующим образом.
— Метки вроде документация
или оптимизатор
полезны для фильтрации PR.Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )