Это эссе . Он содержит советы или мнения одного или нескольких участников Википедии. Эта страница не является статьей энциклопедии, и не является политикой или руководством Википедии , поскольку она не была тщательно проверена сообществом . Некоторые эссе представляют собой широко распространенные нормы; другие представляют лишь точки зрения меньшинства. |
В этом эссе описываются методы отладки шаблона Википедии для различных проблем в структуре используемого викитекста . Анализатор викитекста используется уже много лет, и хотя разметка может показаться запутанной, язык чрезвычайно надежен: вложенность функций if-else, вложенных до 40 уровней, может быть доверена для правильного сопоставления соответствующих 40 предложений if-else и передачи сотен параметров под правильными именами, даже в шаблоне из 2000 строк. Однако есть некоторые ограничения, которые могут удивить некоторых пользователей, например, передача знака равенства "=" в данных шаблоном "{{=}}" (см. ниже: "Необычные ограничения").
В следующем списке показаны некоторые распространённые проблемы.
Во время редактирования-предварительного просмотра шаблон действует так, как будто находится в «режиме отладки» и отображает любой текст или результат вычисления или логической ветви.
Вставив текст отладочной печати (например, «HERE1» или «HERE2»), можно вывести поток логики между частями напечатанного текста.
Есть некоторые ограничения, которые часто удивляют (или снова удивляют) пользователей. Возможно, самая распространенная проблема — это передача знака равенства в данных.
Распространенной ошибкой является попытка {nowrap} строки, содержащей "=", и при этом ничего не отображается:
Связанная проблема заключается в отображении вертикальной черты "|" внутри параметров шаблона с помощью "|" или шаблона восклицательного знака: {{!}}. Другие коды можно найти на странице wp:CODES в виде таблицы общих кодов символов.
Существует множество приемов отладки, и большинство проблем с шаблонами можно обнаружить за несколько минут, используя комбинацию методов отладки, таких как вставка текста отладки и повторная проверка для двойной проверки на наличие незакрытых if-функций или незакрытых комментариев в недавно измененных областях. Сканирование на наличие незакрытых комментариев "<!-- -->" можно выполнить с помощью простого HTML-инструмента в качестве средства проверки синтаксиса , поскольку это комментарии в стиле HTML, если только токены "}}" не запутывают проблему.
В целом, лучше всего вносить в шаблон только несколько изменений за раз, чтобы сначала проверить результаты, а затем повторно проверить (немного) измененных областей, чтобы выявить распространенные ошибки. Например, если вы планируете изменить 5 областей в шаблоне, просто измените сначала одно место и проверьте результаты, затем, когда будете уверены, повторите или расширьте изменение в других областях.
Для сравнения, изменение 20 точек и запуск теста могут занять в 100 раз больше времени, чтобы точно определить простую новую ошибку, пытаясь при этом угадать, какая из 20 областей внесла новую ошибку. В типичных случаях исправления ошибок 1 из 10 изменений вносит еще одну ошибку. Таким образом, 20 изменений предсказали бы 2 новые проблемы (как минимум).
В качестве страховочной сетки (или спасательной шлюпки) программисты часто сохраняют несколько предыдущих версий шаблона, например, в пронумерованных текстовых файлах компьютера, а затем в случае возникновения сложной новой неразберихи сохраняют текущую версию где-то еще, затем просто возвращаются к предыдущей, проверенной версии и повторно вносят некоторые изменения более осторожно. Во многих случаях наихудшую ошибку можно быстро обнаружить по сравнению с предыдущей ревизией, что позволяет восстановить всю сохраненную текущую версию, чтобы повторно применить исправление ошибки и продолжить работу, фактически не переделывая все изменения в предыдущей старой ревизии (как временное путешествие в старой «спасательной шлюпке»).
Хотя большинство ошибок вызвано недавними изменениями, могут быть «спящие ошибки», оставшиеся с недель/месяцев, например, незакрытый комментарий, который поглотил редко используемый раздел кода, пока недавние правки не активировали этот раздел разметки.