1+ package io.casper.convention.plugins
2+
3+ import io.casper.convention.tasks.DocCheckTask
4+ import io.casper.convention.model.DocCheckTaskType
5+ import io.casper.convention.util.DocConstants
6+ import org.gradle.api.Plugin
7+ import org.gradle.api.Project
8+ import org.gradle.api.Task
9+ import org.gradle.api.tasks.TaskProvider
10+ import org.gradle.kotlin.dsl.register
11+
12+ /* *
13+ * Casper 프로젝트의 KDoc 문서화 규칙을 정의하는 Gradle 플러그인입니다.
14+ */
15+ class DocumentationConventionPlugin : Plugin <Project > {
16+ override fun apply (project : Project ) {
17+ with (project) {
18+ // 현재 프로젝트에 태스크 등록
19+ registerDocTasks(this )
20+
21+ // 모든 서브프로젝트에도 태스크 등록
22+ subprojects {
23+ registerDocTasks(this )
24+ }
25+ }
26+ }
27+
28+
29+ private fun Project.registerDocTasks (project : Project ) {
30+ with (project) {
31+ val registeredTasks = mutableListOf<TaskProvider <out Task >>()
32+
33+ DocCheckTaskType .values().forEach { taskType ->
34+ val task = tasks.register<DocCheckTask >(taskType.taskName) {
35+ group = DocConstants .DOC_GROUP
36+ description = taskType.description
37+ codeElement.set(taskType.codeElement)
38+ }
39+ registeredTasks.add(task)
40+ }
41+
42+ // 모든 문서화 검사를 한 번에 실행하는 태스크
43+ tasks.register(" checkAllDocs" ) {
44+ group = DocConstants .CHECK_GROUP
45+ description = " 모든 코드 요소의 KDoc 주석 여부를 확인합니다"
46+
47+ // 등록된 모든 검사 태스크에 의존
48+ dependsOn(registeredTasks)
49+ }
50+
51+ // 빌드 검증 과정에 문서화 검사 포함
52+ tasks.named(" check" ) {
53+ dependsOn(" checkAllDocs" )
54+ }
55+ }
56+ }
57+ }
0 commit comments