이 글은 기존 운영했던 WordPress 블로그인 PyxisPub: Development Life (pyxispub.uzuki.live) 에서 가져온 글 입니다. 모든 글을 가져오지는 않으며, 작성 시점과 현재 시점에는 차이가 많이 존재합니다.
작성 시점: 2017-11-09
Dokka 는 Java의 JavaDoc와 동일한 기능을 수행하는 문서 엔진이며 Java의 JavaDoc 문법과 Kotlin 의 KDoc 문법을 완벽히 지원, html 이나 markdown 등의 포맷으로 생성할 수 있게 해준다.
여기서는 안드로이드 프로젝트에서 어떤 방식으로 문서를 생성하는지 정리하려고 한다.
dependencies {
classpath 'com.android.tools.build:gradle:3.0.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath "org.jetbrains.dokka:dokka-android-gradle-plugin:0.9.15"
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
apply plugin: 'org.jetbrains.dokka-android'
com.android.library 와 kotlin-android 의 밑에 적으면 된다.
dokka {
moduleName = 'RichUtils'
outputFormat = 'html'
outputDirectory = "$projectDir/docs"
sourceDirs = files('src/main/java')
skipEmptyPackages = true
linkMapping {
dir = "src/main/java"
url = "https://github.com/WindSekirun/RichUtilsKt/tree/master/RichUtils/src/main/java"
suffix = "#L"
}
}
현재 RichUtils 에서 사용하고 있는 Dokka 설정 코드이다.
각각 설명해보면,
그 외 다른 옵션들도 있다.
Windows
gradlew dokka
Mac / Linux
./gradlew dokka
/**
* A group of *members*.
*
* This class has no useful logic; it's just a documentation example.
*
* @param T the type of a member in this group.
* @property name the name of this group.
* @constructor Creates an empty group.
*/
class Group<T>(val name: String) {
/**
* Adds a [member] to this group.
* @return the new size of the group.
*/
fun add(member: T): Int { ... }
}
출처: https://kotlinlang.org/docs/reference/kotlin-doc.html#kdoc-syntax
주의점으로는 JavaDoc 와 달리 deprecated 가 없는데, 대신 @Deprecated 어노테이션을 사용하면 된다.
특이점으로는 내부 마크업을 일반 마크다운 문법을 사용한다.
invoke [action] every JSONObject
특정 요소 (메서드, 클래스, 속성, 파라미터) 에 링크할 때는 위와 같이 작성한다. invoke [Action][action] every JSONObject
다른 라벨을 붙이고 싶을 때 앞에 붙여준다.
단, javaDoc 와 다르게 한정자에는 컴포넌트를 분리하기 위해 . 를 항상 작성해야 된다.
Use [kotlin.reflect.KClass.properties] to enumerate the properties of the class.
dokka 로 작성된 웹 페이지 예제는 RichUtils web document 에서 볼 수 있다.