2016-03-03 32 views
9

In Javadoc Java, esiste un modo per ereditare la documentazione di un metodo in una sottoclasse utilizzando {@inheritDoc} tag.Come ereditare la documentazione di KDoc?

C'è un modo per fare lo stesso nel KDoc di Kotlin?

In sostanza, quello che mi piacerebbe fare è la seguente:

abstract class Base { 
    /** 
    * Some KDoc documentation here. 
    */ 
    abstract fun foo() 
} 

class Derived: Base() { 
    /** 
    * Here is all the documentation from Base#foo's KDoc inherited. 
    * 
    * And here goes something more in addition. 
    */ 
    override fun foo() { /* ... */ } 
} 
+0

fa '{} @inheritDoc' non funziona? Hai provato? – CaseyB

+0

@CaseyB, sì, l'ho fatto, e né IntelliJ né dokka lo capiscono, lo mostrano solo come testo. – hotkey

+2

Non riesco a trovare nulla che documenti la mia scoperta, ma da quello che posso dire a Kotlin Doc eredita la documentazione quando si esegue l'override di una funzione se non è specificata alcuna documentazione sull'override. Ora quello che mi chiedo è come "estendere"/"includere" la documentazione di base ... – mfulton26

risposta

10

Dokka sempre copie della documentazione da un organo di base a un ereditato uno se il membro ereditato non ha la propria documentazione. Non c'è modo di combinare la documentazione dei membri di base con il testo aggiuntivo fornito nel membro ereditato.

(Dokka non supporta il tag @inheritdoc Javadoc perché questo porta inevitabilmente alla proliferazione di commenti composto da soli /** @inheritdoc */ che trovo super-inutile e ridondante.)

+4

Eppure per qualche ragione quando premo 'Ctrl + Q' su una funzione ereditata senza documentazione, non ne mostra alcuno, tuttavia la funzione base lo ha specificato e quando I' Ctrl + B' ad esso e premo 'Ctrl + Q' su una funzione di base, viene mostrata la documentazione. Forse questo è un bug di ide-plugin. – dimsuz

+1

@ yole Quando tocchi il collegamento rapido alla documentazione su un metodo sottoposto a override da una classe/interfaccia java, non vedo la documentazione mentre la classe base/l'interfaccia ha qualche documentazione. Questo è davvero scomodo. C'è un problema aperto su questo? –