Skip to main content

Распространенные ошибки проверки при создании форм проблем

Некоторые из этих распространенных ошибок проверки могут возникать при создании, сохранении или просмотре форм проблем.

В этой статье

Примечание. Формы проблем в настоящее время находятся в бета-версии и подлежат изменению.

Отсутствует обязательный ключ верхнего уровня name

Шаблон не содержит поля name, то есть не ясно, как должен называться шаблон проблемы при предоставлении пользователям списка вариантов.

Пример ошибки "обязательный ключ верхнего name уровня отсутствует"

description: "Thank you for reporting a bug!"
...

Эту ошибку можно исправить путем добавления ключа name.

name: "Bug report"
description: "Thank you for reporting a bug!"
...

Значение key должно быть строкой

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

Пример ошибки "key должен быть строкой"

Приведенная ниже метка description анализируется как логическое значение, хотя должна быть строкой.

name: "Bug report"
description: true
...

Эту ошибку можно исправить, указав строковое значение. Для успешного анализа строки может требоваться заключать в двойные кавычки. Например, в двойные кавычки должны быть заключены строки, содержащие '.

name: "Bug report"
description: "true"
...

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

name: ""
description: "File a bug report"
assignees: "      "
...

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

name: "Bug Report"
description: "File a bug report"
...

input не является допустимым ключом

На верхнем уровне шаблона предоставлен непредвиденный ключ. Дополнительные сведения о поддерживаемых ключах верхнего уровня см. в разделе "Синтаксис для форм проблем".

Пример ошибки "input не разрешенный ключ"

name: "Bug report"
hello: world
...

Эту ошибку можно устранить путем удаления лишних ключей.

name: "Bug report"
...

Запрещенные ключи

YAML анализирует некоторые строки как значения типа Boolean. Чтобы избежать этого, мы явно запретили использовать следующие ключи:

y, Y``yes``Yes``YES``n``N``no``No``NO``true``True``TRUE``false``False``FALSE``on``On``ON``off``Off``OFF

Эту ошибку можно устранить путем удаления запрещенных ключей.

Текст должен содержать по крайней мере одно поле, отличное от markdown

Формы проблем должны принимать данные, введенные пользователем, поэтому хотя бы одно из полей должно быть полем для ввода данных. Элемент markdown содержит статический текст, поэтому массив body не может содержать только элементы markdown.

Пример ошибки body должен содержать по крайней мере одно поле, отличное от markdown.

name: "Bug report"
body:
- type: markdown
  attributes:
    value: "Bugs are the worst!"

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

name: "Bug report"
body:
- type: markdown
  attributes:
    value: "Bugs are the worst!"
- type: textarea
  attributes:
    label: "What's wrong?"

Текст должен содержать уникальные идентификаторы

При использовании атрибутов id для различения нескольких элементов каждый атрибут id должен быть уникальным.

Пример ошибки "текст должен иметь уникальные идентификаторы"

name: "Bug report"
body:
- type: input
  id: name
  attributes:
    label: First name
- type: input
  id: name
  attributes:
    label: Last name

Эту ошибку можно исправить, изменив id одного из полей ввода так, чтобы каждое поле input имело уникальный атрибут id.

name: "Bug report"
body:
- type: input
  id: name
  attributes:
    label: First name
- type: input
  id: surname
  attributes:
    label: Last name

Текст должен содержать уникальные метки

При наличии нескольких элементов body, которые принимают введенные пользователем данные, атрибут label каждого поля ввода должен быть уникальным.

Пример ошибки "текст должен иметь уникальные метки"

name: "Bug report"
body:
- type: textarea
  attributes:
    label: Name
- type: textarea
  attributes:
    label: Name

Эту ошибку можно исправить, изменив атрибут label одного из полей ввода так, чтобы все label были уникальными.

name: "Bug report"
body:
- type: textarea
  attributes:
    label: Name
- type: textarea
  attributes:
    label: Operating System

Поля ввода также можно различать по атрибуту id. Если требуются повторяющиеся атрибуты label, можно указать по крайней мере один id для различения двух элементов с одинаковыми метками.

name: "Bug report"
body:
- type: textarea
  id: name_1
  attributes:
    label: Name
- type: textarea
  id: name_2
  attributes:
    label: Name

Атрибуты id не отображаются в тексте проблемы. Если поля в итоговой проблеме должны различаться, следует использовать уникальные атрибуты label.

Метки слишком похожи

В результате обработки схожих меток могут получаться одинаковые ссылки. Если для поля input не указан атрибут id, для создания ссылки на поле input используется атрибут label. Для этого label обрабатывается с помощью метода parameterize Rails. В некоторых случаях в результате обработки двух разных меток может получаться одна и та же параметризованная строка.

Пример ошибки "метки слишком похожи"

name: "Bug report"
body:
- type: input
  attributes:
    label: Name?
- type: input
  id: name
  attributes:
    label: Name???????

Эту ошибку можно исправить путем добавления по крайней мере одного отличительного буквенно-цифрового символа, - или _ к одной из конфликтующих меток.

name: "Bug report"
body:
- type: input
  attributes:
    label: Name?
- type: input
  attributes:
    label: Your name

Ошибку также можно исправить, назначив одной из конфликтующих меток уникальный id.

name: "Bug report"
body:
- type: input
  attributes:
    label: Name?
- type: input
  id: your-name
  attributes:
    label: Name???????

Флажки должны иметь уникальные метки

При наличии элемента checkboxes каждая из его вложенных меток должна быть уникальной как среди одноуровневых элементов, так и среди других входных элементов.

Пример ошибки "проверка boxes должен иметь уникальные метки"

name: "Bug report"
body:
- type: textarea
  attributes:
    label: Name
- type: checkboxes
  attributes:
    options:
    - label: Name

Эту ошибку можно исправить, изменив атрибут label одного из входных элементов.

name: "Bug report"
body:
- type: textarea
  attributes:
    label: Name
- type: checkboxes
  attributes:
    options:
    - label: Your name

Кроме того, можно предоставить id для конфликтующих элементов верхнего уровня. Вложенные элементы флажков не поддерживают атрибут id.

name: "Bug report"
body:
- type: textarea
  id: name_1
  attributes:
    label: Name
- type: checkboxes
  attributes:
    options:
    - label: Name

Атрибуты id не отображаются в тексте проблемы. Если поля в итоговой проблеме должны различаться, следует использовать уникальные атрибуты label.

Body[i]: отсутствует обязательный ключ type

Каждый блок текста должен иметь ключ type.

Сообщения об ошибках, связанных с body, начинаются с элемента body[i], где i — это отсчитываемый от нуля индекс блока текста, содержащего ошибку. Например, body[0] означает, что ошибка вызвана первым блоком в списке body.

Пример ошибки "body[i]: обязательный тип ключа отсутствует"

body:
- attributes:
    value: "Thanks for taking the time to fill out this bug! If you need real-time help, join us on Discord."

Эту ошибку можно исправить, добавив ключ type с допустимым типом входных данных в качестве значения. Доступные body типы входных данных и их синтаксис см. в разделе "Синтаксис для схемы формы GitHub".

body:
- type: markdown
  attributes:
    value: "Thanks for taking the time to fill out this bug! If you need real-time help, join us on Discord."

Body[i]: x не является допустимым типом входных данных

Один из блоков текста содержит значение типа, которое не является одним из разрешенных типов.

Сообщения об ошибках, связанных с body, начинаются с элемента body[i], где i — это индекс блока текста, содержащего ошибку. Например, body[0] означает, что ошибка вызвана первым блоком в списке body.

Пример ошибки body[i]: x не является допустимым типом входных данных.

body:
- type: x
  attributes:
    value: "Thanks for taking the time to fill out this bug! If you need real-time help, join us on Discord."

Эту ошибку можно исправить, изменив x на один из допустимых типов.

body:
- type: markdown
  attributes:
    value: "Thanks for taking the time to fill out this bug! If you need real-time help, join us on Discord."

Body[i]: отсутствует обязательный ключ атрибута value

Не предоставлен один из обязательных атрибутов value. Эта ошибка возникает, если в блоке нет ключа attributes или нет ключа value в ключе attributes.

Сообщения об ошибках, связанных с body, начинаются с элемента body[i], где i — это индекс блока текста, содержащего ошибку. Например, body[0] означает, что ошибка вызвана первым блоком в списке body.

Пример ошибки "body[i]: обязательный ключ value атрибута отсутствует"

body:
- type: markdown
  attributes:
    value: "Thanks for taking the time to fill out this bug! If you need real-time help, join us on Discord."
- type: markdown

Ошибку в этом примере можно исправить, добавив ключ value в ключе attributes во втором элементе body.

body:
- type: markdown
  attributes:
    value: "Thanks for taking the time to fill out this bug! If you need real-time help, join us on Discord."
- type: markdown
  attributes:
    value: "This is working now!"

Body[i]: метка должна быть строкой

В блоке attributes значение имеет неправильный тип данных.

Сообщения об ошибках, связанных с body, начинаются с элемента body[i], где i — это индекс блока текста, содержащего ошибку. Например, body[0] означает, что ошибка вызвана первым блоком в списке body.

Пример ошибки body[i]: метка должна быть строкой

Приведенная ниже метка label анализируется как логическое значение, хотя должна быть строкой.

body:
- type: markdown
  attributes:
    value: "Thanks for taking the time to fill out this bug! If you need real-time help, join us on Discord."
- type: textarea
  attributes:
    label: Bug Description
- type: textarea
  attributes:
    label: true

Эту ошибку можно исправить, предоставив строковое значение для label. Если вы хотите использовать значение label, которое может анализироваться как логическое, целочисленное или десятичное, его следует заключить в кавычки. Например, используйте "true" или "1.3" вместо true или 1.3.

- type: markdown
  attributes:
    value: "Thanks for taking the time to fill out this bug! If you need real-time help, join us on Discord."
- type: textarea
  attributes:
    label: Bug Description
- type: textarea
  attributes:
    label: Environment Details

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

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

body:
- type: input
  attributes:
    label: "Name"

Body[i]: id может содержать только цифры, буквы, символы "-" и "_"

Атрибуты id могут содержать только буквы, цифры, символы - и _. В атрибуте id шаблона не может быть недопустимых символов, например пробелов.

Сообщения об ошибках, связанных с body, начинаются с элемента body[i], где i — это индекс блока текста, содержащего ошибку. Например, body[0] означает, что ошибка вызвана первым блоком в списке body.

Пример "body[i]: id может содержать только цифры, буквы, -, _" ошибки

name: "Bug report"
body:
- type: input
  id: first name
  attributes:
    label: First name

Эту ошибку можно исправить, удалив пробелы и другие недопустимые символы из значений id.

name: "Bug report"
body:
- type: input
  id: first-name
  attributes:
    label: First name

Body[i]: x не является допустимым ключом

На том же уровне отступа, что и у атрибутов type и attributes, предоставлен непредвиденный ключ x.

Сообщения об ошибках, связанных с body, начинаются с элемента body[i], где i — это индекс блока текста, содержащего ошибку. Например, body[0] означает, что ошибка вызвана первым блоком в списке body.

Пример ошибки body[i]: x не разрешенный ключ

body:
- type: markdown
  x: woof
  attributes:
    value: "Thanks for taking the time to fill out this bug! If you need real-time help, join us on Discord."

Эту ошибку можно исправить, удалив лишние ключи и оставив только ключи type, attributes и id.

body:
- type: markdown
  attributes:
    value: "Thanks for taking the time to fill out this bug! If you need real-time help, join us on Discord."

Body[i]: label содержит запрещенное слово

Чтобы свести к минимуму риск публикации конфиденциальной информации и учетных данных в проблемах на GitHub, некоторые слова, часто используемые злоумышленниками, не допускаются в метках label элементов ввода или textarea.

Сообщения об ошибках, связанных с body, начинаются с элемента body[i], где i — это индекс блока текста, содержащего ошибку. Например, body[0] означает, что ошибка вызвана первым блоком в списке body.

Пример ошибки body[i]: label содержит запрещенное слово

body:
- type: markdown
  attributes:
    value: Hello world!
- type: input
  attributes:
    label: Password

Эту ошибку можно исправить, удалив такие слова, как "пароль", из всех полей label.

body:
- type: markdown
  attributes:
    value: Hello world!
- type: input
  attributes:
    label: Username

Body[i]: x не является допустимым атрибутом

В блоке attributes предоставлен недопустимый ключ.

Сообщения об ошибках, связанных с body, начинаются с элемента body[i], где i — это индекс блока текста, содержащего ошибку. Например, body[0] означает, что ошибка вызвана первым блоком в списке body.

Пример ошибки body[i]: x не является разрешенным атрибутом.

body:
- type: markdown
  attributes:
    x: "a random key!"
    value: "Thanks for taking the time to fill out this bug!"

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

body:
- type: markdown
  attributes:
    value: "Thanks for taking the time to fill out this bug!"

Body[i]: элементы options должны быть уникальными

Для типов входных данных "флажок" и "раскрывающийся список" элементы в массиве options должны быть уникальными.

Сообщения об ошибках, связанных с body, начинаются с элемента body[i], где i — это индекс блока текста, содержащего ошибку. Например, body[0] означает, что ошибка вызвана первым блоком в списке body.

Пример ошибки "body[i]: options должен быть уникальным"

body:
- type: dropdown
  attributes:
    label: Favorite dessert
    options:
      - ice cream
      - ice cream
      - pie

Эту ошибку можно исправить, убрав повторяющиеся элементы в массиве options.

body:
- type: dropdown
  attributes:
    label: Favorite dessert
    options:
      - ice cream
      - pie

Body[i]: в options не должно быть зарезервированного слова none

None — это зарезервированное слово в наборе options, которое служит для указания отсутствия выбора, если выбор элемента в dropdown не обязателен.

Сообщения об ошибках, связанных с body, начинаются с элемента body[i], где i — это индекс блока текста, содержащего ошибку. Например, body[0] означает, что ошибка вызвана первым блоком в списке body.

Пример "body[i]: options не должен включать зарезервированное слово, нет" ошибки

body:
- type: dropdown
  attributes:
    label: What types of pie do you like?
    options:
      - Steak & Ale
      - Chicken & Leek
      - None
  validations:
    required: true

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

body:
- type: dropdown
  attributes:
    label: What types of pie do you like?
    options:
      - Steak & Ale
      - Chicken & Leek

В этом примере None добавляется автоматически в качестве доступного для выбора варианта.

Body[i]: массив options не должен содержать логических значений. Заключите такие значения, как yes (да) и true (истина), в кавычки

Некоторые английские слова интерпретируются средством синтаксического анализа YAML как логические значения, если они не заключены в кавычки. В массиве options раскрывающегося списка все элементы должны быть строками, а не логическими значениями.

Сообщения об ошибках, связанных с body, начинаются с элемента body[i], где i — это индекс блока текста, содержащего ошибку. Например, body[0] означает, что ошибка вызвана первым блоком в списке body.

Пример "body[i]: options не должен включать логические значения. Обтекайте такие значения, как "да", и "true" в кавычках"

body:
- type: dropdown
  attributes:
    label: Do you like pie?
    options:
      - Yes
      - No
      - Maybe

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

body:
- type: dropdown
  attributes:
    label: Do you like pie?
    options:
      - "Yes"
      - "No"
      - Maybe

Тело не может быть пустым

Пара текста key:value шаблона не может быть пустой. Дополнительные сведения о необходимых ключах верхнего уровня см. в разделе "Синтаксис для форм проблем".

Эту ошибку можно исправить, добавив раздел body:.

Пример ошибки "текст не может быть пустым"

name: Support Request
description: Something went wrong and you need help?
---
body:
- type: textarea
  attributes:
    label: "What's wrong?"

В этом примере ошибку можно исправить, удалив --- (разделитель документов) между заголовками и разделом body.

name: Support Request
description: Something went wrong and you need help?

body:
- type: textarea
  attributes:
    label: "What's wrong?"

Дополнительные материалы