Документируйте код с помощью xml-комментариев
Документацию можно создать из примечаний с тройной косой чертой (///) в F#. Примечания XML могут предшествовать объявлениям в файлах кода (.fs) или файлах сигнатур (.fsi).
Комментарии xml-документации — это особый вид комментариев, добавленный выше определения любого определяемого пользователем типа или члена. Они являются особыми, так как они могут обрабатываться компилятором для создания XML-файла документации во время компиляции. XML-файл, созданный компилятором, можно распространять вместе со сборкой .NET, чтобы среды разработки (IDE) могли использовать всплывающие подсказки для отображения быстрых сведений о типах или членах. Кроме того, XML-файл можно запускать с помощью таких средств, как fsdocs для создания эталонных веб-сайтов API.
По умолчанию комментарии xml-документации игнорируются компилятором. Чтобы изменить это, задайте --warnon:3390
. Затем компилятор проверит синтаксис XML и параметров, указанных в <param>
и <paramref>
тегах.
Xml-файл можно создать во время компиляции, выполнив одно из следующих действий:
Элемент
GenerateDocumentationFile
можно добавить в раздел<PropertyGroup>
файла проекта.fsproj
, который создает XML-файл в каталоге проекта с тем же корневым именем файла, что и сборка. Например:<GenerateDocumentationFile>true</GenerateDocumentationFile>
Для получения дополнительной информации см. свойство GenerateDocumentationFile.
Если вы разрабатываете приложение с помощью Visual Studio, щелкните проект правой кнопкой мыши и выберите Свойства. В диалоговом окне свойств выберите вкладку Сборка и отметьте XML-файл документации. Вы также можете изменить расположение, в которое компилятор записывает файл.
Существует два способа написания комментариев XML-документации: с тегами XML и без них. Оба используют комментарии с тройной косой чертой.
Комментарии без XML-тегов
Если комментарий ///
не начинается с <
, весь текст комментария рассматривается как сводная документация по конструкции кода, которая непосредственно следует. Используйте этот метод, если вы хотите написать только краткую сводку для каждой конструкции.
Комментарий закодирован в XML во время подготовки документации, поэтому символы, такие как <
, >
и &
, не должны быть экранированы. Если вы явно не указываете тег сводки, не нужно указывать другие теги, такие как параметр или возвращает.
В следующем примере показан альтернативный метод без xml-тегов. В этом примере весь текст в комментарии считается сводкой.
/// Creates a new string whose characters are the result of applying
/// the function mapping to each of the characters of the input string
/// and concatenating the resulting strings.
val collect : (char -> string) -> string -> string
Комментарии с XML-тегами
Если текст комментария начинается с <
(обычно <summary>
), он рассматривается как xml-форматированный текст комментариев с помощью XML-тегов. Этот второй способ позволяет указать отдельные заметки для краткой сводки, дополнительных примечаний, документации по каждому параметру и параметру типа и исключениям, а также описанию возвращаемого значения.
Ниже приведен типичный комментарий xml-документации в файле подписи:
/// <summary>Builds a new string whose characters are the results of applying the function <c>mapping</c>
/// to each of the characters of the input string and concatenating the resulting
/// strings.</summary>
/// <param name="mapping">The function to produce a string from each character of the input string.</param>
///<param name="str">The input string.</param>
///<returns>The concatenated string.</returns>
///<exception cref="System.ArgumentNullException">Thrown when the input string is null.</exception>
val collect : (char -> string) -> string -> string
Рекомендуемые теги
Если вы используете XML-теги, в следующей таблице описаны внешние теги, распознанные в комментариях кода F# XML.
Синтаксис тега | Описание |
---|---|
<summary>
текст</summary> |
Указывает, что текст является кратким описанием элемента программы. Описание обычно является одним или двумя предложениями. |
<remarks>
текст</remarks> |
Указывает, что текст содержит дополнительные сведения об элементе программы. |
<param name="
имени"> описания</param> |
Задает имя и описание параметра функции или метода. |
<typeparam name="
имени"> описания</typeparam> |
Указывает имя и описание параметра типа. |
<returns>
текст</returns> |
Указывает, что текст описывает возвращаемое значение функции или метода. |
<exception cref="
типа"> описание</exception> |
Указывает тип исключения, которое может быть создано, и обстоятельства, при которых он создается. |
справочник <seealso cref=" "/> |
Указывает ссылку "См. также" на документацию, относящуюся к другому типу. Ссылка — это имя, как оно появляется в XML-файле документации. Ссылки 'См. также' обычно отображаются в нижней части страницы документации. |
В следующей таблице описываются теги для использования в разделах описания:
Синтаксис тега | Описание |
---|---|
<para>
текст</para> |
Указывает абзац текста. Это используется для разделения текста внутри тега примечаний . |
<code>
текст</code> |
Указывает, что текст состоит из нескольких строк кода. Этот тег можно использовать генераторами документации для отображения текста в шрифте, подходящем для кода. |
<paramref name="
имя"/> |
Указывает ссылку на параметр в том же комментарии документации. |
<typeparamref name="
имя"/> |
Указывает ссылку на параметр типа в том же комментарии документации. |
<c>
текст</c> |
Указывает, что текстовый является встроенным кодом. Этот тег можно использовать генераторами документации для отображения текста в шрифте, подходящем для кода. |
<see cref="
справка"> текст</see> |
Указывает встроенную ссылку на другой элемент программы. Ссылка — это имя, как оно появляется в XML-файле документации. Текст — это текст, показанный в ссылке. |
Определяемые пользователем теги
Предыдущие теги представляют те, которые распознаются компилятором F# и типичными инструментами редактора F#. Однако пользователь может определить собственные теги. Такие инструменты, как fsdocs, поддерживают дополнительные теги, такие как <пространства имен>. Также можно использовать пользовательские или встроенные средства создания документации со стандартными тегами и несколькими форматами выходных данных из HTML-файла в PDF.
Проверка во время компиляции
Если --warnon:3390
включен, компилятор проверяет синтаксис XML и параметров, указанных в <param>
и <paramref>
тегах.
Документирование конструкций F#
Конструкции F#, такие как модули, члены, варианты объединения и поля записи, документируются с помощью ///
комментария, размещённого непосредственно перед их объявлением.
При необходимости неявные конструкторы классов документируются путем предоставления комментария ///
до списка аргументов. Например:
/// This is the type
type SomeType
/// This is the implicit constructor
(a: int, b: int) =
/// This is the member
member _.Sum() = a + b
Ограничения
Некоторые функции XML-документации в C# и других языках .NET не поддерживаются в F#.
В F#перекрестные ссылки должны использовать полную XML-сигнатуру соответствующего символа, например
cref="T:System.Console"
. Простые перекрестные ссылки в стиле C#, такие какcref="Console"
, не детализируются в полные XML-подписи, и эти элементы не проверяются компилятором F#. Некоторые средства документации могут позволить использовать эти перекрестные ссылки путем последующей обработки, но должны использоваться полные подписи.Теги
<include>
,<inheritdoc>
не поддерживаются компилятором F#. Ошибки не возникают, если они используются, но они просто копируются в созданный файл документации, не влияя на процесс её генерации.Перекрестные ссылки не проверяются компилятором F#, даже если используется
-warnon:3390
.Имена, используемые в тегах
<typeparam>
и<typeparamref>
, не проверяются компилятором F#, даже если используется--warnon:3390
.Предупреждения не предоставляются, если документация отсутствует, даже если используется
--warnon:3390
.
Рекомендации
Документирование кода рекомендуется по многим причинам. Ниже приведены некоторые рекомендации, общие сценарии использования и сведения, которые следует знать при использовании тегов xml-документации в коде F#.
Включите параметр
--warnon:3390
в коде, чтобы обеспечить допустимость XML-документации.Рассмотрите возможность добавления файлов подписи для разделения длинных комментариев xml-документации от реализации.
Для обеспечения согласованности все общедоступные типы и их члены должны быть задокументированы. Если вы должны сделать это, сделайте все это.
Как минимум, модули, типы и их члены должны иметь обычный
///
комментарий или тег<summary>
. Откроется окно подсказки автозаполнения в средствах редактирования F#.Текст документации должен быть написан с использованием полных предложений, заканчивающихся полными точками.
См. также
- комментарии к XML-документации по C# (руководство по программированию на C#).
- Справочник по языку F#
- Параметры компилятора