130 votes

Comment utiliser @link et @code en kotlin kDoc

J'essaie de documenter une méthode et j'essaie d'utiliser @link y @code dans le cas de JavaDoc .

Je sais que dans kotlin il y a un kDoc mais je n'arrive pas à les trouver ou du moins quelque chose de similaire.

0 votes

J'utilisais /* au lieu de /** ...

172voto

humazed Points 398

@link y @code n'existe pas dans kDoc mais peut facilement être remplacé par Balisage en ligne .

de KotlinDoc Liens vers les éléments

Balisage en ligne

Pour le balisage en ligne, KDoc utilise l'option ordinaire Markdown étendu à la syntaxe prendre en charge une syntaxe abrégée permettant d'établir des liens avec d'autres éléments du code.

Liens vers les éléments

Pour établir un lien avec un autre élément (classe, méthode, propriété ou paramètre), il suffit de mettre son nom entre crochets :

Utilisez la méthode [foo] à cette fin.

Si vous voulez spécifier une étiquette personnalisée personnalisé pour le lien, utilisez la syntaxe de style référence Markdown :

Utilisez [this method][foo] à cette fin. Vous pouvez également utiliser des dans les liens. Notez que, contrairement à JavaDoc, les noms qualifiés utilisent toujours toujours le caractère point pour séparer les composants, même avant un nom de méthode. nom :

Utilisez [kotlin.reflect.KClass.properties] pour énumérer les propriétés de la classe. Les noms dans les liens sont résolus en utilisant les mêmes règles que si le nom était utilisé à l'intérieur de l'élément documenté. En particulier, cela Cela signifie notamment que si vous avez importé un nom dans le fichier en cours fichier actuel, vous n'avez pas besoin de le qualifier complètement lorsque vous l'utilisez dans un commentaire KDoc.

Notez que KDoc n'a pas de syntaxe pour résoudre les surcharges. surchargés dans les liens. Puisque l'outil de génération de documentation Kotlin place la documentation de toutes les surcharges d'une fonction sur la même page, l'identification d'une fonction surchargée spécifique n'est pas nécessaire pour que le lien fonctionne. pour que le lien fonctionne.

20 votes

Pour tous ceux qui ont du mal à résoudre une méthode non statique, vous ne pouvez pas simplement utiliser [class.methodName], vous devez utiliser [full_package_location.methodName].

4 votes

@hmac a raison, mais vous pouvez aussi ajouter le nom de la méthode à vos importations. L'IDE ne vous donnera pas l'option intellisense pour le faire à votre place, mais cela fonctionne.

0 votes

Vous, monsieur, êtes un sauveur de vie @hmac

37voto

Pour {@link SomeClass} en Java correspond à [SomeClass] en Kotlin

Pour {@code true} en Java correspond à `true` en Kotlin

30voto

Artur Dumchev Points 306

Vous pouvez écrire votre code en java et convertir les classes en Kotlin.

/**
 * @see <a href="http://somelink.com">link</a>
 */
public class Some {
}

sera converti en

/**
 * @see [link](http://somelink.com)
 */
class Some

0 votes

J'ai essayé cette méthode dans cette phrase . Cependant, aucun formatage n'a eu lieu pour le lien.

1 votes

Désolé pour la réponse tardive. Il semble que vous vous soyez trompé de format de document. Par exemple, vous devriez écrire vos docs avec /** docs here */, et pas seulement "//" que vous avez probablement utilisé dans votre fichier ContentRepository. Pour vérifier que tout fonctionne comme prévu, vous pouvez essayer l'exemple que j'ai fourni.

0 votes

J'ai mis à jour le format dans le Gist au-dessus de @Artur Dumchev. Votre échantillon est en Java, alors que le mien est en Kotlin, c'est pourquoi je ne suis pas sûr du format exact. Merci !

17voto

Michael Piefel Points 2007

El réponse qu'Artur donne est une bonne indication en général, mais le résultat est faux. En tout cas, IntelliJ IDEA ne comprend pas le résultat. Le format de lien markdown utilisant []() est bien dans le texte principal du commentaire, mais pas pour les liens externes dans le @see tag. Pour cela, vous avez besoin de la même syntaxe qu'en Java :

/**
 * Do something.
 *
 * @see <a href="https://stackoverflow.com/q/45195370/2621917">External links in kdoc</a>
 */

13voto

hb0 Points 426

En référence une méthode utiliser le classe :

/**
 * When the configuration succeeds **[MyCallback.onConfigured]** is called.
 */
class MyClass(myCallback: MyCallback) {

Utilisation d'une variable/paramètre ne fonctionne pas :

/**
 * When the configuration succeeds **[myCallback.onConfigured]** is called.
 */
class MyClass(myCallback: MyCallback) {

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X