Kód dokumentálása XML-megjegyzésekkel
Az F#-ban három perjeles (///) kódbejegyzésekből készíthet dokumentációt. Az XML-megjegyzések megelőzhetik a kódfájlokban (.fs) vagy az aláírási (.fsi) fájlokban lévő deklarációkat.
Az XML-dokumentáció megjegyzései egy speciális megjegyzéstípus, amely a felhasználó által definiált típus vagy tag definíciója fölé kerül. Különlegesek, mert a fordító feldolgozhatja őket egy XML-dokumentációs fájl fordításkor történő létrehozásához. A fordító által létrehozott XML-fájl a .NET-szerelvény mellett terjeszthető, így az azonosítók elemleírásokkal jeleníthetik meg a típusok vagy tagok gyors információit. Emellett az XML-fájl futtatható olyan eszközökkel is, mint az fsdocs az API referenciawebhelyeinek létrehozásához.
Az XML-dokumentáció megjegyzéseit, mint minden más megjegyzést, a fordító figyelmen kívül hagyja, kivéve, ha az alábbi lehetőségek lehetővé teszik a megjegyzések érvényességének és teljességének ellenőrzését fordításkor.
Az XML-fájlt fordításkor az alábbiak egyikével hozhatja létre:
Hozzáadhat egy
GenerateDocumentationFile
elemet a<PropertyGroup>
projektfájl szakaszához.fsproj
, amely létrehoz egy XML-fájlt a projektkönyvtárban ugyanazzal a gyökérfájlnévvel, mint a szerelvény. Példa:<GenerateDocumentationFile>true</GenerateDocumentationFile>
További információ: GenerateDocumentationFile tulajdonság.
Ha a Visual Studióval fejleszt alkalmazást, kattintson a jobb gombbal a projektre, és válassza a Tulajdonságok lehetőséget. A Tulajdonságok párbeszédpanelen válassza a Build lapot, és ellenőrizze az XML-dokumentációs fájlt. Azt is módosíthatja, hogy a fordító melyik helyre írja a fájlt.
Xml-dokumentációs megjegyzések írásának két módja van: XML-címkékkel és anélkül. Mindkettő három perjeles megjegyzést használ.
XML-címkék nélküli megjegyzések
Ha egy ///
megjegyzés nem egy megjegyzéssel <
kezdődik, akkor a rendszer a teljes megjegyzésszöveget veszi fel az azonnal következő kódszerkezet összefoglaló dokumentációjaként. Ezt a módszert akkor használja, ha csak egy rövid összefoglalást szeretne írni az egyes szerkezetekhez.
A megjegyzés xml-kódba van kódolva a dokumentáció előkészítése során, így az olyan karaktereket, mint <
a , >
és &
nem kell feloldani. Ha nem ad meg explicit módon összefoglaló címkét, ne adjon meg más címkéket, például param vagy visszaadott címkéket.
Az alábbi példa az XML-címkék nélküli alternatív módszert mutatja be. Ebben a példában a megjegyzés teljes szövege összefoglalónak minősül.
/// 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-címkékkel ellátott megjegyzések
Ha egy megjegyzés törzse (általában<summary>
) kezdetű <
, akkor xml formátumú megjegyzéstörzsként kezeli a rendszer XML-címkékkel. Ez a második módszer lehetővé teszi, hogy külön jegyzeteket adjon meg egy rövid összefoglaláshoz, további megjegyzésekhez, az egyes paraméterek dokumentációihoz és a típusparaméterekhez és a kivételekhez, valamint a visszatérési érték leírásához.
Az alábbiakban egy jellemző XML-dokumentációs megjegyzés található egy aláírásfájlban:
/// <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
Ajánlott címkék
HA XML-címkéket használ, az alábbi táblázat az F# XML-kód megjegyzéseiben felismert külső címkéket ismerteti.
Címkeszintaxis | Leírás |
---|---|
<summary> text</summary> |
Azt adja meg, hogy a szöveg a programelem rövid leírása. A leírás általában egy vagy két mondat. |
<remarks> text</remarks> |
Megadja, hogy a szöveg kiegészítő információkat tartalmaz-e a programelemről. |
<param name=" név"> leírása</param> |
Egy függvény vagy metódusparaméter nevét és leírását adja meg. |
<typeparam name=" név"> leírása</typeparam> |
Megadja egy típusparaméter nevét és leírását. |
<returns> text</returns> |
Megadja, hogy a szöveg egy függvény vagy metódus visszatérési értékét írja le. |
<exception cref=" típus"> leírása</exception> |
Megadja a létrehozható kivétel típusát és azokat a körülményeket, amelyek miatt a kivételt ki lehet dobni. |
<seealso cref=" Hivatkozás"/> |
Egy másik típus dokumentációjának Lásd még hivatkozását adja meg. A hivatkozás az XML-dokumentációs fájlban megjelenő név. Lásd: A dokumentációs oldal alján általában megjelennek a hivatkozások. |
Az alábbi táblázat a leírási szakaszokban használható címkéket ismerteti:
Címkeszintaxis | Leírás |
---|---|
<para> text</para> |
Szöveg bekezdését adja meg. Ez a megjegyzéscímkén belüli szöveg elválasztására szolgál. |
<code> text</code> |
Azt adja meg, hogy a szöveg több sornyi kód. Ezt a címkét a dokumentációkészítők használhatják a kódnak megfelelő betűtípusban lévő szöveg megjelenítéséhez. |
<paramref name=" név"/> |
Egy paraméterre mutató hivatkozást ad meg ugyanabban a dokumentációs megjegyzésben. |
<typeparamref name=" név"/> |
Egy típusparaméterre mutató hivatkozást ad meg ugyanabban a dokumentációs megjegyzésben. |
<c> text</c> |
Meghatározza, hogy a szöveg beágyazott kód-e. Ezt a címkét a dokumentációkészítők használhatják a kódnak megfelelő betűtípusban lévő szöveg megjelenítéséhez. |
<see cref=" referenciaszöveg"> </see> |
Egy másik programelemhez mutató beágyazott hivatkozást ad meg. A hivatkozás az XML-dokumentációs fájlban megjelenő név. A szöveg a hivatkozásban látható szöveg. |
Felhasználó által definiált címkék
Az előző címkék az F#-fordító és a tipikus F# szerkesztőeszköz által felismert címkéket jelölik. A felhasználók azonban szabadon definiálhatják saját címkéiket. Az olyan eszközök, mint az fsdocs, támogatják az olyan további címkéket, mint a namespacedoc>.< A szabványos címkékkel egyéni vagy házon belüli dokumentációkészítési eszközök is használhatók, és a HTML-ről PDF-be több kimeneti formátum is támogatott.
Fordítási idő ellenőrzése
Ha --warnon:3390
engedélyezve van, a fordító ellenőrzi az XML szintaxisát, valamint a hivatkozott <param>
paramétereket és <paramref>
címkéket.
F#-szerkezetek dokumentálása
Az F#-szerkezeteket, például a modulokat, a tagokat, az egyesítő eseteket és a rekordmezőket közvetlenül a deklaráció előtt egy ///
megjegyzés dokumentálja.
Szükség esetén az osztályok implicit konstruktorait az argumentumlista előtt megjegyzés megadásával ///
dokumentáljuk. Példa:
/// This is the type
type SomeType
/// This is the implicit constructor
(a: int, b: int) =
/// This is the member
member _.Sum() = a + b
Korlátozások
A C# és más .NET-nyelvek XML-dokumentációjának egyes funkciói nem támogatottak az F#-ban.
Az F#-ban a kereszthivatkozásoknak például a megfelelő szimbólum teljes XML-aláírását
cref="T:System.Console"
kell használniuk. Egyszerű C#-stílusú kereszthivatkozások, példáulcref="Console"
nem teljes XML-aláírásokra vannak kidolgozva, és ezeket az elemeket az F#-fordító nem ellenőrzi. Egyes dokumentációs eszközök lehetővé tehetik a kereszthivatkozások későbbi feldolgozással történő használatát, de a teljes aláírást használni kell.A címkéket
<include>
<inheritdoc>
az F# fordító nem támogatja. Nem jelenik meg hiba a használatukkor, de a rendszer egyszerűen átmásolja őket a létrehozott dokumentációs fájlba anélkül, hogy más módon befolyásolná a létrehozott dokumentációt.Az F#-fordító nem ellenőrzi a kereszthivatkozásokat, még akkor sem, ha
-warnon:3390
használatban van.A címkékben
<typeparam>
<typeparamref>
használt neveket az F#-fordító nem ellenőrzi, még akkor sem, ha--warnon:3390
használják.Nem kap figyelmeztetést, ha a dokumentáció hiányzik, még akkor sem, ha
--warnon:3390
használatban van.
Ajánlások
A kód dokumentálása számos okból ajánlott. Az alábbiakban bemutatunk néhány ajánlott eljárást, általános használati esetet, valamint azokat a tudnivalókat, amelyeket az XML-dokumentáció címkéinek F#-kódban való használatakor érdemes tudnia.
Engedélyezze a kódban található beállítást
--warnon:3390
, hogy meggyőződjön arról, hogy az XML-dokumentáció érvényes XML-fájl.Fontolja meg aláírásfájlok hozzáadását, hogy elkülönítse a hosszú XML-dokumentáció megjegyzéseit a megvalósítástól.
A konzisztencia érdekében minden nyilvánosan látható típust és azok tagjait dokumentálni kell. Ha meg kell tennie, tegye meg az egészet.
Minimális szinten a moduloknak, típusoknak és tagjaiknak egyszerű
///
megjegyzéssel vagy<summary>
címkével kell rendelkezniük. Ez egy automatikus kiegészítési elemleírás ablakban jelenik meg az F#-szerkesztőeszközökben.A dokumentáció szövegét teljes mondatokkal kell megírni.