Dokumentowanie kodu z komentarzami XML
Dokumentację można utworzyć na podstawie komentarzy kodu triple-slash (///) w języku F#. Komentarze XML mogą poprzedzać deklaracje w plikach kodu (.fs) lub w plikach podpisu (fsi).
Komentarze dokumentacji XML są specjalnym rodzajem komentarza dodanego powyżej definicji dowolnego typu lub elementu członkowskiego zdefiniowanego przez użytkownika. Są one specjalne, ponieważ mogą być przetwarzane przez kompilator w celu wygenerowania pliku dokumentacji XML w czasie kompilacji. Plik XML wygenerowany przez kompilator może być dystrybuowany wraz z zestawem platformy .NET, dzięki czemu środowiska IDE mogą używać etykietek narzędzi do wyświetlania szybkich informacji o typach lub elementach członkowskich. Ponadto plik XML można uruchamiać za pomocą narzędzi, takich jak fsdocs , aby wygenerować witryny internetowe referencyjne interfejsu API.
Komentarze dokumentacji XML, podobnie jak wszystkie inne komentarze, są ignorowane przez kompilator, chyba że opcje opisane poniżej są włączone do sprawdzania poprawności i kompletności komentarzy w czasie kompilacji.
Plik XML można wygenerować w czasie kompilacji, wykonując jedną z następujących czynności:
Element można dodać
GenerateDocumentationFile
do<PropertyGroup>
sekcji.fsproj
pliku projektu, który generuje plik XML w katalogu projektu z tą samą główną nazwą pliku co zestaw. Na przykład:<GenerateDocumentationFile>true</GenerateDocumentationFile>
Aby uzyskać więcej informacji, zobacz Właściwość GenerateDocumentationFile.
Jeśli tworzysz aplikację przy użyciu programu Visual Studio, kliknij prawym przyciskiem myszy projekt i wybierz polecenie Właściwości. W oknie dialogowym właściwości wybierz kartę Kompilacja i sprawdź plik dokumentacji XML. Możesz również zmienić lokalizację, w której kompilator zapisuje plik.
Istnieją dwa sposoby pisania komentarzy dokumentacji XML: z tagami XML i bez tagów XML. Oba używają komentarzy potrójnego ukośnika.
Komentarze bez tagów XML
///
Jeśli komentarz nie zaczyna się od <
, cały tekst komentarza jest traktowany jako dokumentacja podsumowania konstrukcji kodu, która natychmiast następuje. Użyj tej metody, jeśli chcesz napisać tylko krótkie podsumowanie dla każdej konstrukcji.
Komentarz jest zakodowany w formacie XML podczas przygotowywania dokumentacji, więc znaki takie jak <
, >
i &
nie muszą być ucieczki. Jeśli nie określisz jawnie tagu podsumowania, nie należy określać innych tagów, takich jak param lub zwraca tagi.
W poniższym przykładzie przedstawiono alternatywną metodę bez tagów XML. W tym przykładzie cały tekst w komentarzu jest traktowany jako podsumowanie.
/// 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
Komentarze z tagami XML
Jeśli treść komentarza zaczyna się <
od (zwykle <summary>
), jest traktowana jako treść komentarza sformatowanego w formacie XML przy użyciu tagów XML. Ten drugi sposób umożliwia określenie oddzielnych notatek dla krótkiego podsumowania, dodatkowych uwag, dokumentacji dla każdego zgłaszanego parametru i parametru typu oraz wyjątków oraz opisu wartości zwracanej.
Poniżej przedstawiono typowy komentarz dokumentacji XML w pliku podpisu:
/// <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
Zalecane tagi
Jeśli używasz tagów XML, w poniższej tabeli opisano tagi zewnętrzne rozpoznane w komentarzach kodu XML języka F#.
Składnia tagów | opis |
---|---|
<summary> text</summary> |
Określa, że tekst jest krótkim opisem elementu programu. Opis jest zwykle jednym lub dwoma zdaniami. |
<remarks> text</remarks> |
Określa, że tekst zawiera dodatkowe informacje dotyczące elementu programu. |
<param name=" opis nazwy"> </param> |
Określa nazwę i opis funkcji lub parametru metody. |
<typeparam name=" opis nazwy"> </typeparam> |
Określa nazwę i opis parametru typu. |
<returns> text</returns> |
Określa, że tekst opisuje zwracaną wartość funkcji lub metody. |
<exception cref=" opis typu"> </exception> |
Określa typ wyjątku, który można wygenerować, oraz okoliczności, w których jest zgłaszany. |
<seealso cref=" Odwołanie"/> |
Określa link Zobacz również do dokumentacji dla innego typu. Odwołanie to nazwa wyświetlana w pliku dokumentacji XML. Zobacz Również linki zwykle pojawiają się w dolnej części strony dokumentacji. |
W poniższej tabeli opisano tagi do użycia w sekcjach opisu:
Składnia tagów | opis |
---|---|
<para> text</para> |
Określa akapit tekstu. Służy do oddzielania tekstu wewnątrz tagu uwagi . |
<code> text</code> |
Określa, że tekst jest wieloma wierszami kodu. Ten tag może być używany przez generatory dokumentacji do wyświetlania tekstu w czcionki, która jest odpowiednia dla kodu. |
<paramref name=" name"/> |
Określa odwołanie do parametru w tym samym komentarzu dokumentacji. |
<typeparamref name=" name"/> |
Określa odwołanie do parametru typu w tym samym komentarzu dokumentacji. |
<c> text</c> |
Określa, że tekst jest wbudowanym kodem. Ten tag może być używany przez generatory dokumentacji do wyświetlania tekstu w czcionki, która jest odpowiednia dla kodu. |
<see cref=" tekst odwołania"> </see> |
Określa wbudowany link do innego elementu programu. Odwołanie to nazwa wyświetlana w pliku dokumentacji XML. Tekst jest tekstem wyświetlanym w linku. |
Tagi zdefiniowane przez użytkownika
Poprzednie tagi reprezentują te, które są rozpoznawane przez kompilator języka F# i typowe narzędzia edytora języka F#. Użytkownik może jednak definiować własne tagi. Narzędzia takie jak fsdocs obsługują dodatkowe tagi, takie jak namespacedoc>.< Niestandardowe lub wewnętrzne narzędzia do generowania dokumentacji mogą być również używane ze standardowymi tagami i wieloma formatami danych wyjściowych z kodu HTML do formatu PDF.
Sprawdzanie czasu kompilacji
Po --warnon:3390
włączeniu kompilator weryfikuje składnię kodu XML i parametry, o których mowa w pliku <param>
i <paramref>
tagi.
Dokumentowanie konstrukcji języka F#
Konstrukcje języka F#, takie jak moduły, elementy członkowskie, sprawy unii i pola rekordów, są udokumentowane przez komentarz bezpośrednio przed ich deklaracją ///
.
W razie potrzeby konstruktory niejawne klas są udokumentowane, podając komentarz przed listą ///
argumentów. Na przykład:
/// This is the type
type SomeType
/// This is the implicit constructor
(a: int, b: int) =
/// This is the member
member _.Sum() = a + b
Ograniczenia
Niektóre funkcje dokumentacji XML w języku C# i innych językach platformy .NET nie są obsługiwane w języku F#.
W języku F# odwołania krzyżowe muszą używać pełnego podpisu XML odpowiedniego symbolu, na przykład
cref="T:System.Console"
. Proste odwołania w stylu C#, takie jakcref="Console"
nie są opracowywane do pełnych podpisów XML, a te elementy nie są sprawdzane przez kompilator języka F#. Niektóre narzędzia dokumentacji mogą zezwalać na korzystanie z tych odwołań krzyżowych przez kolejne przetwarzanie, ale należy użyć pełnych podpisów.Tagi
<include>
nie<inheritdoc>
są obsługiwane przez kompilator języka F#. Nie podano żadnego błędu, jeśli są używane, ale są po prostu kopiowane do wygenerowanego pliku dokumentacji bez wpływu na wygenerowaną dokumentację.Odwołania krzyżowe nie są sprawdzane przez kompilator języka F#, nawet jeśli
-warnon:3390
jest używany.Nazwy używane w tagach
<typeparam>
i<typeparamref>
nie są sprawdzane przez kompilator języka F#, nawet jeśli--warnon:3390
jest używany.Nie podano żadnych ostrzeżeń, jeśli brakuje dokumentacji, nawet jeśli
--warnon:3390
jest używana.
Zalecenia
Dokumentowanie kodu jest zalecane z wielu powodów. Poniżej przedstawiono kilka najlepszych rozwiązań, ogólnych scenariuszy przypadków użycia i rzeczy, które należy wiedzieć podczas korzystania z tagów dokumentacji XML w kodzie języka F#.
Włącz opcję
--warnon:3390
w kodzie, aby upewnić się, że dokumentacja XML jest prawidłowa.Rozważ dodanie plików podpisów w celu oddzielenia długich komentarzy dokumentacji XML od implementacji.
Ze względu na spójność wszystkie publicznie widoczne typy i ich składowe powinny być udokumentowane. Jeśli musisz to zrobić, zrób to wszystko.
Na minimalnym poziomie moduły, typy i ich członkowie powinni mieć zwykły
///
komentarz lub<summary>
tag. Spowoduje to wyświetlenie w oknie etykietki narzędzia autouzupełniania w narzędziach do edycji języka F#.Tekst dokumentacji powinien być napisany przy użyciu pełnych zdań kończących się pełnymi zatrzymaniami.