Manual:Pre-commit checklist/ru

Это попытка создать контрольный список, который можно использовать перед фиксацией изменений. Некоторые из них дублируют то, что есть в соглашения о кодировании, но в виде быстрых проверок. Этот список проверки соответствует тому же содержанию, что и Манифест самопроверки. Некоторые из них могут показаться глупо (например, спросить у врача: "мыли ли вы руки?"), но они предназначены для того, чтобы избежать проблем, которые могут быть не замечены.

Бэкенд (PHP)

  • Запускается ли ваш код без ошибок E_STRICT?[1]
  • Ваш код нарушил какие-либо испытания? Смотрите Manual:PHP unit testing.
  • Вы проверили все точки выходы из своего кода?
  • Вы использовали табуляцию вместо пробелов для отступа?
  • Удалили ли вы лишние, закомментированный код отладки? (Например, #var_dump( $array ); и/или #die();)
  • Если вы создали новую функцию, вы задокументировали функции параметры и то, что она возвращает, используя Doxygen?
  • Создавали ли вы какие-либо идентификаторы, в которых не использовался camelCase (т. е. подчеркивание)?
  • Все исключения проверены?
  • Если у вас есть несколько точек возврата, они проверены?
  • Существует ли каждое сообщение которое вы создали в languages/i18n/en.json, имеет ли документацию сообщения в languages/i18n/qqq.json?
  • Каждое использование fopen(), fread(), и т.д. проверяется на ошибки или проблемы?
  • Вы использовали флаги t или b за fopen() для обеспечения совместимости Windows?
  • Вы использовали правильные функции выхода? echo почти никогда не был использован.
  • Вы использовали правильные функции терминации? exit почти никогда не следует использовать.
  • При необходимости, вы использовали функции обертывания MediaWiki вместо их эквивалентов PHP?
  • Если вы добавили новое тестирование к parserTests.txt, вы дали ему новое имя?
  • Если вы добавили новый хук, вы задокументировали его?

Тестирование

При добавлении функций важно проверить, что вы не нарушили существующую функциональность. У нас есть три типа тестирований, которые вы можете написать для бэкэнда:

  • Parser tests - Проверьте выход анализатора для вики-текста (см. tests/parser/parserTests.php). Попробуйте запустить php tests/parser/parserTests.php --quick --quiet и посмотреть, как они работают. Гипотетически, всё должно пройти. Вы можете добавить новые тестирования, или исправить существующие, редактирую tests/parser/parserTests.txt.
  • Модульные тесты (PHPUnit) - Находятся в директории tests/phpunit. Как правило, они запускаются по команде composer phpunit:entrypoint с указанием каталога MediaWiki. Эти тестирования также включают обычные тестирования анализаторов, хотя parserTests.php вероятно, работает быстрее. Прочтите Manual:PHP unit testing для получения большего представления о том, как настроить PHPUnit и дополнительных деталей о том, каким образом он используется внутри MediaWiki.
  • Selenium - тестирования в директории tests/selenium.

В любом случае, если вы не сможете написать автоматическое тестирование, выполните ручное. Если вы слишком часто будете ломать код, люди будуи раздражаться.

Фронтенд

  • Тестирования проведены в актуальном веб-обозревателе? Даже удаление одной строчки кода, может разрушить неочевидные вещи. Откройте браузер, проходите по нему, возможно, редактируйте, входите, добавьте страницу в свой список наблюдений.
  • Ваш код нарушил какие-либо испытания? Посетите Manual:JavaScript unit testing
  • Будет ли он работать хотя бы в тех браузерах, которые мы поддерживаем для функциональности A-класса (проверьте Совместимость#Браузеры)?
  • Есть ли какие-либо подразумеваемые глобальные значения, кроме jQuery или mediaWiki? Не должно быть, (и $ также)

Автоматическое тестирование

Jenkins выполняет несколько тестирований в большинстве репозиториев, когда изменения передаются Gerrit, и фиксируются. Вы должны провести эти тестирования на локальном уровне, прежде чем фиксировать патч. Многие расширения реализуют стандартный Continuous integration/Entry points и поэтому, вы можете выполнить npm test и grunt test перед фиксацией изменений.

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

  • Валидирует ли он (или, вы хотя бы прошли через) JSHint или JSLint? (check recommended settings)
  • Модульные тестирования (QUnit): Расположенный в директории tests/qunit. Они обычно запускаются из браузера, через Special:JavaScriptTest/qunit. См. также Manual:JavaScript unit testing для получения большей информации о том, как включить его, как он работает и различные варианты, которые доступны.

Примечания

  1. Поместите error_reporting(-1); в файл записи. См. также Руководство:Как отлаживать.
Category:Development guidelines/ru#Pre-commit%20checklist/ru Category:MediaWiki development/ru#API
Category:Development guidelines/ru Category:MediaWiki development/ru