Википедия:Шаблоны отладки

Эссе о редактировании Википедии

В этом эссе описываются методы отладки шаблона Википедии для различных проблем в структуре используемого викитекста . Анализатор викитекста используется уже много лет, и хотя разметка может показаться запутанной, язык чрезвычайно надежен: вложенность функций if-else, вложенных до 40 уровней, может быть доверена для правильного сопоставления соответствующих 40 предложений if-else и передачи сотен параметров под правильными именами, даже в шаблоне из 2000 строк. Однако есть некоторые ограничения, которые могут удивить некоторых пользователей, например, передача знака равенства "=" в данных шаблоном "{{=}}" (см. ниже: "Необычные ограничения").

Распространенные проблемы

В следующем списке показаны некоторые распространённые проблемы.

E1. Отображение: {{#if: означает: Функция if без закрывающего "}}"
E2. Отображение: {{#switch: означает: функция-переключатель без замыкания "}}"
E3. Дисплей: {{ 1. переключатель: означает: незамкнутая функция переключения, отделенная от "{{" на предыдущей строке
E4. Отображение: --> означает: Неоткрытый комментарий в стиле HTML
E5. Отображение: }} означает: Дополнительное закрытие "}}"
E6. Отображение: }} }} означает: Возможный неоткрытый шаблон "mytemplate|x}}"

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

  • Дважды проверьте наличие незакрытых комментариев: <!--xxx-> незакрыт, требуется "-->"
  • Поместите текст отладки за скобки: {{__}}ЗДЕСЬ{{___}}

Вставив текст отладочной печати (например, «HERE1» или «HERE2»), можно вывести поток логики между частями напечатанного текста.

Необычные ограничения

Есть некоторые ограничения, которые часто удивляют (или снова удивляют) пользователей. Возможно, самая распространенная проблема — это передача знака равенства в данных.

  • Чтобы передать данные "=": укажите номер параметра "1=a=b" или заключите его в нулевой параметр: {{{|a=b}}}.

Распространенной ошибкой является попытка {nowrap} строки, содержащей "=", и при этом ничего не отображается:

  • {{nowrap |y = x + 3}} Результат: (ничего)
  • {{nowrap |1=y = x + 3}} Результат:    y = x + 3
  • {{color |darkorange| Ошибка: x=0}} Результат:    darkorange (ничего)
  • {{color |darkorange| 2=Ошибка: x=0}} Результат:    Ошибка: x=0
  • {{color |darkorange| {{{|Ошибка: x=0}}} }} Результат:    Ошибка: x=0

Связанная проблема заключается в отображении вертикальной черты "|" внутри параметров шаблона с помощью "|" или шаблона восклицательного знака: {{!}}. Другие коды можно найти на странице wp:CODES в виде таблицы общих кодов символов.

Существует множество приемов отладки, и большинство проблем с шаблонами можно обнаружить за несколько минут, используя комбинацию методов отладки, таких как вставка текста отладки и повторная проверка для двойной проверки на наличие незакрытых if-функций или незакрытых комментариев в недавно измененных областях. Сканирование на наличие незакрытых комментариев "<!-- -->" можно выполнить с помощью простого HTML-инструмента в качестве средства проверки синтаксиса , поскольку это комментарии в стиле HTML, если только токены "}}" не запутывают проблему.

Внесите небольшие изменения и протестируйте

В целом, лучше всего вносить в шаблон только несколько изменений за раз, чтобы сначала проверить результаты, а затем повторно проверить (немного) измененных областей, чтобы выявить распространенные ошибки. Например, если вы планируете изменить 5 областей в шаблоне, просто измените сначала одно место и проверьте результаты, затем, когда будете уверены, повторите или расширьте изменение в других областях.

Для сравнения, изменение 20 точек и запуск теста могут занять в 100 раз больше времени, чтобы точно определить простую новую ошибку, пытаясь при этом угадать, какая из 20 областей внесла новую ошибку. В типичных случаях исправления ошибок 1 из 10 изменений вносит еще одну ошибку. Таким образом, 20 изменений предсказали бы 2 новые проблемы (как минимум).

Сохраните старые версии в качестве спасательных шлюпок

В качестве страховочной сетки (или спасательной шлюпки) программисты часто сохраняют несколько предыдущих версий шаблона, например, в пронумерованных текстовых файлах компьютера, а затем в случае возникновения сложной новой неразберихи сохраняют текущую версию где-то еще, затем просто возвращаются к предыдущей, проверенной версии и повторно вносят некоторые изменения более осторожно. Во многих случаях наихудшую ошибку можно быстро обнаружить по сравнению с предыдущей ревизией, что позволяет восстановить всю сохраненную текущую версию, чтобы повторно применить исправление ошибки и продолжить работу, фактически не переделывая все изменения в предыдущей старой ревизии (как временное путешествие в старой «спасательной шлюпке»).

В редких случаях остерегайтесь спящих клопов

Хотя большинство ошибок вызвано недавними изменениями, могут быть «спящие ошибки», оставшиеся с недель/месяцев, например, незакрытый комментарий, который поглотил редко используемый раздел кода, пока недавние правки не активировали этот раздел разметки.

Смотрите также

Взято с "https://en.wikipedia.org/w/index.php?title=Wikipedia:Debugging_templates&oldid=1248413990"