Як використовувати @link та @code у kotlin kDoc


Відповіді:


116

@linkі @codeне існує в kDoc, але його легко замінити вбудованою розміткою .

від KotlinDoc Посилання на елементи

Вбудована розмітка

Для вбудованої розмітки KDoc використовує звичайний синтаксис Markdown , розширений для підтримки скороченого синтаксису для зв’язування з іншими елементами коду.

Посилання на елементи

Щоб зв’язати інший елемент (клас, метод, властивість або параметр), просто вкажіть його ім’я у квадратних дужках:

Для цього використовуйте метод [foo].

Якщо ви хочете вказати власну мітку для посилання, використовуйте синтаксис стилю посилання Markdown:

Використовуйте [this method][foo]для цієї мети. Ви також можете використовувати кваліфіковані імена в посиланнях. Зауважте, що на відміну від JavaDoc, кваліфіковані імена завжди використовують крапковий символ для розділення компонентів, навіть перед назвою методу:

Використовуйте [kotlin.reflect.KClass.properties]для перерахування властивостей класу. Імена у посиланнях вирішуються за тими ж правилами, що і якщо ім’я було використано всередині документа, що документується. Зокрема, це означає, що якщо ви імпортували ім’я до поточного файлу, вам не потрібно повністю його кваліфікувати, коли ви використовуєте його в коментарі KDoc.

Зверніть увагу, що KDoc не має жодного синтаксису для вирішення перевантажених членів у посиланнях. Оскільки інструмент генерації документації Kotlin розміщує документацію щодо всіх перевантажень функції на одній сторінці, ідентифікація конкретної перевантаженої функції не потрібна для роботи посилання.


13
для тих, хто бореться з вирішенням нестатичного методу, ви не можете просто зробити [class.methodName], вам потрібно зробити [full_package_location.methodName]
hmac,

4
@hmac правильний, однак ви також можете додати ім'я методу до свого імпорту. IDE не надасть вам можливості intellisense зробити це за вас, але це працює.
Дейв

Ви, сер, рятувальник життя @hmac
ericn

як стосується зовнішніх посилань?
desgraci

Нарешті я отримав правильне посилання для використання, клацнувши правою кнопкою миші назву методу та вибравши другий варіант «Копіювати посилання». Я не впевнений, що це має значення, але мій метод був статичним методом JVM всередині Об'єкта.
за межами театру

19

Ви можете написати свій код за допомогою Java і перетворити клас на Kotlin.

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

буде перетворено на

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

Я спробував цей метод у цій суті . Однак форматування посилання не відбулося.
Адам Гурвіц,

1
Вибачте за пізню відповідь. Здається, у вас неправильний формат документів. Наприклад, вам слід писати свої документи за допомогою / ** docs тут * /, а не просто "//", які ви, ймовірно, використовували у своєму файлі ContentRepository. Щоб перевірити, чи все працює належним чином, ви можете спробувати приклад, який я надав.
Артур Думчев

Я оновив формат в Gist вище @Artur Думчев. Ваш зразок на Java, тоді як мій - на Kotlin, тому я не впевнений у точному форматі. Дякую!
Адам Гурвіц,

Форматування не працює, і ми не можемо перейти до посилання в Kotlin, як у Java. @AdamHurwitz Ви змогли змусити це працювати?
SjDev

@SjNerd - Negatory
Адам Гурвіц,


10

Відповідь , що Артур дав хороший натяк в цілому, але результат не так. Принаймні IntelliJ IDEA не впливає на результат. Формат посилання на націнку, який використовується []()в основному тексті коментаря, але не стосується зовнішніх посилань у @seeтезі. Для них вам потрібен той самий синтаксис, що і в Java:

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

7

Я трохи боровся з цим із Android Studio 3.5.2 на Mac. Це спрацювало для мене:

/**
* [Your fully-qualified class name.function name]
*/

Якби я не використовував повноцінне ім'я, Kdoc скаржився б, що це невирішене посилання. Я не міг зрозуміти, як насправді використовувати саме посилання. Для цього потрібно натиснути і утримувати клавішу COMMAND (на Mac), і тоді посилання будуть активними.


7

Для посилання на метод використовуйте клас :

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

Використання змінної / параметра не працює :

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

2

Що стосується @codeслід використовувати синтаксис Markdown (причина KDoc є розширеною версією Markdown):

Щоб створити блок коду в Markdown, просто відступайте кожен рядок блоку принаймні на 4 пробіли або 1 вкладку.

/**
 * Some code sample:
 * 
 *    Set<String> s;
 *    System.out.println(s);
 */
class Scratch
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.