Megosztás a következőn keresztül:


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 generált XML-fájl a .NET assembly mellett terjeszthető, így az IDE-k felhasználhatják a tooltip funkciókat, hogy gyors tájékoztatást nyújtsanak a típusokról vagy tagokról. Emellett az XML-fájl olyan eszközökkel is futtatható, mint az fsdocs API referenciawebhelyeinek létrehozásához.

Alapértelmezés szerint a fordító figyelmen kívül hagyja az XML-dokumentáció megjegyzéseit. Ennek módosításához állítsa be a --warnon:3390. A fordító ezután ellenőrzi az XML szintaxisát, valamint a <param> és <paramref> címkékben említett paramétereket.

Az XML-fájlt fordításkor az alábbiak egyikével hozhatja létre:

  • Hozzáadhat egy GenerateDocumentationFile elemet a .fsproj projektfájl <PropertyGroup> szakaszához, amely létrehoz egy XML-fájlt a projektkönyvtárban, amelynek gyökérfájlneve megegyezik a szerelvény nevével. Például:

    <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ágoklehetőséget. A Tulajdonságok párbeszédpanelen válassza a Build lapot, és jelölje be a XML-dokumentációs fájl. 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 <-gyel kezdődik, akkor a teljes megjegyzésszöveg tekinthető 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 <, >é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 címkéket ad vissza.

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éstörzs < (általában <summary>) kezdődik, 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

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> szöveg</summary> Meghatározza, hogy szöveg a programelem rövid leírása. A leírás általában egy vagy két mondat.
<remarks> szöveg</remarks> Megadja, hogy a szöveg kiegészítő információt tartalmaz a programelemről.
<param name=" név">leírási</param> Egy függvény vagy metódusparaméter nevét és leírását adja meg.
<typeparam name=" név">leírási</typeparam> Megadja egy típusparaméter nevét és leírását.
<returns> szöveg</returns> Megadja, hogy a szöveg leírja egy függvény vagy metódus visszatérési értékét.
<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=" referencia"/> 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> szöveg</para> Szöveg bekezdését adja meg. Ez a megjegyzések címkén belüli szöveg elválasztására szolgál.
<code> szöveg</code> Meghatározza, hogy a szöveg több sorból álló 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> szöveg</c> Meghatározza, hogy szöveges 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=" hivatkozás">szö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 <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ő alatti ellenőrzés

Ha --warnon:3390 engedélyezve van, a fordító ellenőrzi az XML szintaxisát, valamint a <param> és <paramref> címkékben említett paramétereket.

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éldául:

/// 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 a megfelelő szimbólum teljes XML-aláírását kell használniuk, például cref="T:System.Console". Az egyszerű C#-stílusú kereszthivatkozások, például a cref="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.

  • Az F# fordító nem támogatja a címkéket <include>, <inheritdoc>. 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ál.

  • A címkékben <typeparam> és <typeparamref> használt neveket az F#-fordító még akkor sem ellenőrzi, ha --warnon:3390 van használatban.

  • Nem kap figyelmeztetést, ha a dokumentáció hiányzik, még akkor sem, ha --warnon:3390 használ.

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 --warnon:3390 beállítást, 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 már meg kell tennie, csinálja meg teljesen.

  • 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 ablakban jelenik meg az F#-szerkesztőeszközökben.

  • A dokumentáció szövegét teljes mondatokkal kell megírni, amelyek ponttal végződnek.

Lásd még: