Repository navigation
docs: 해석되지 않는 KDoc FQN 링크 15건 정정 — 전수 스캔으로 찾은 #1775 밖 잔재 #1783
Description
작업 유형
documentation — 문서
주 담당 모듈
afternote — 애프터노트
개요
문제
#1775 를 처리하다 presentation.author.detail 만 보고 있었는데, 같은 부류(해석되지 않는 KDoc FQN 링크)가 저장소 전역에 더 있었다. 원인이 여럿이라 grep 한 번으로는 안 걸린다.
KDoc 의 [com.foo.Bar] 는 해석에 실패해도 컴파일 에러가 아니다. 컴파일·ktlint·Konsist 어느 게이트도 이 부류를 보지 못한다. 실제 손실은 IDE 문서 팝업에서 Ctrl+클릭이 죽는 것이고, 이 저장소는 Dokka 를 쓰지 않으므로 생성 문서 쪽 영향은 없다.
어떻게 셌나 — 파일명 grep 이 아니라 전수 검증
문자열 grep 으로는 「무엇이 틀렸는지」를 알 수 없어서, 모든 .kt 의 KDoc 주석에서 [com.afternote.*] 링크를 뽑고 각 FQN 을 실제 선언과 대조하는 스캐너를 짰다. 판정 규칙은 이렇다.
- FQN 의 가장 긴 접두 중 실재하는 패키지를 찾는다 (전체가 패키지면 패키지 링크로 유효 처리)
- 그 다음 세그먼트가 해당 패키지의 top-level 선언인지 본다
- 아니면 끊긴 것 — 같은 이름의 선언이 어느 패키지에 있는지도 같이 뽑는다
origin/develop (4ebc65f) 1105 파일 · 197 패키지 기준 30건. 스캐너를 두 번 고쳤는데 둘 다 오탐 방향이었다 — 확장 함수(fun NavGraphBuilder.receivedAfternoteNavGraph)에서 수신자 타입을 심볼로 오인한 것 1건, FQN 전체가 패키지인 링크([com.afternote.feature.afternote.domain])를 못 알아본 것 1건.
30건의 내역과 분담
| 갈래 | 건수 | 처리 |
|---|---|---|
presentation.author.detail — #1092 평탄화 잔재 |
13 | #1776 에서 처리 중 |
presentation.author.* — 같은 평탄화의 editor·navigation 잔여 |
7 | 이 이슈 |
feature.receiver.presentation.detail — #1461 이관 잔재 |
2 | 이 이슈 |
| 그 밖의 패키지 경로 오류 | 6 | 이 이슈 |
| 담당이 다른 모듈 | 2 | 별도 인계 |
이 이슈의 대상은 15건이다.
갈래 1 — author.* 평탄화 잔여 7건
#1092(커밋 2fd2bf1c)는 author/ 를 통째로 걷어냈는데 #1776 이 잡은 author.detail 말고 author.editor·author.navigation 도 남아 있었다.
| 파일 | 줄 | 고칠 대상 |
|---|---|---|
app/src/androidTest/.../ProcessingMethodListAndroidTest.kt |
25 | → presentation.editor.processing.ProcessingMethodListState |
.../presentation/AfternoteHostViewModel.kt |
16 | → presentation.editor.AfternoteEditorViewModel |
.../presentation/editor/memorial/MemorialPlaylistEntry.kt |
35 | → presentation.editor.AfternoteEditorViewModel |
.../presentation/editor/SaveAfternoteMemorialMedia.kt |
14 | → presentation.editor.memorial.MemorialVideoUpload |
.../presentation/editor/model/EditorFormPrefill.kt |
11 | → presentation.editor.state.AfternoteEditorState.applyFormPrefill |
.../presentation/editor/AfternoteEditorViewModel.kt |
155 | → presentation.editor.state.AfternoteEditorState |
.../presentation/receiver/navigation/ReceivedAfternoteRoute.kt |
8 | → presentation.navigation.model.AfternoteRoute |
갈래 2 — feature.receiver.presentation.detail 2건
ReceivedAfternoteDetailViewModel 은 #1461 로 afternote 모듈로 옮겨졌는데 링크는 옛 모듈 경로를 가리킨다. feature/receiver/presentation 에는 detail 패키지가 아예 없다. 실제 선언은 feature/afternote/.../receiver/detail/ReceivedAfternoteDetailViewModel.kt:35.
.../afternote/presentation/receiver/playlist/ReceiverMemorialPlaylistViewModel.kt:51.../receiver/presentation/senderdetail/SenderDetailViewModel.kt:59
갈래 3 — 그 밖의 경로 오류 6건
| 파일 | 줄 | 틀린 링크 | 실제 |
|---|---|---|---|
core/network/.../dto/delivery/DeliveryConditionDto.kt |
10 | core.network.dto.DeliveryConditionTypeDto |
...dto.delivery. (같은 패키지) |
core/model/.../delivery/DeliveryConditionModels.kt |
7 | core.model.user.DeliveryConditionType |
...model.delivery. (같은 패키지) |
core/data/src/test/.../DeliveryConditionMapperTest.kt |
20 | core.data.mapper.user.UserMapperTest |
선언 자체가 없다 |
.../presentation/home/HomeHeaderSection.kt |
38 | shared.body.infinite.InfiniteListBody |
shared.component.InfiniteListBody |
.../receiver/detail/ReceivedAfternoteDetailRoute.kt |
22 | receiver.navigation.model.ReceivedAfternoteRoute.ListRoute |
receiver.navigation. (model 세그먼트가 없다) |
.../receiver/detail/ReceivedDetailContentUiModel.kt |
72 | shared.detail.song.MemorialPlaylist |
shared.detail.MemorialPlaylist |
UserMapperTest 만 성격이 다르다 — core.data.mapper.user 에는 UserMapper.kt 만 있고 그 테스트는 저장소 어디에도 없다. 경로 정정이 아니라 없는 대상을 가리키는 링크를 걷어내는 건이고, 그 KDoc 문장("DTO/Domain 의 동일 이름 상수를 valueOf 로 독립 조회해 매퍼 결과와 대조")은 링크 없이도 그 자체로 완결적이다.
완료 조건
- 위 15건이 전수 스캐너에서 0건
- 참조하는 쪽과 같은 패키지면 FQN 을 걷고 짧은
[SymbolName]으로 -
:feature:afternote:presentation:compileDebugUnitTestKotlin·:core:*·ktlintCheck초록 -
app모듈 androidTest 는 컴파일까지 (compileDebugAndroidTestKotlin)
참고
- 동작 변경 0 — KDoc 주석 텍스트만 바뀐다.
- 담당이 달라 이 이슈에서 뺀 2건은 별도 인계한다:
feature/mindrecord/.../navigation/MindRecordNavActions.kt:7과 수신자 홈feature/receiver/.../home/ReceiverHomeViewModel.kt:57. 둘 다Sadturtleman담당 모듈의 프로덕션 파일이다. - 같은 파일을 만지는 열린 PR 이 있어 형제 충돌 가능성이 있다 — fix(afternote): 발신 흐름의 무음 실패에 복구 수단과 진행 상태를 결선한다 (#705) #1608·feat(afternote): 에디터에 임시저장 저장과 이어쓰기 프리필을 붙인다 (#808) #1768(
editor/AfternoteEditorViewModel.kt), fix(afternote): 필터 조회가 실패해도 카테고리 행을 남겨 「전체」로 돌아오게 한다 (#1634) #1640·feat(afternote): 임시저장 조회와 저장 payload를 분리한다 (#1762) #1763(home/HomeHeaderSection.kt), fix(receiver): 받은 기록함 발신자 카드를 재기동 뒤에도 남긴다 (#599) #1652(senderdetail/SenderDetailViewModel.kt), docs(afternote): 평탄화 이후 끊긴 KDoc 참조를 고친다 (#1775) #1776(ReceivedDetailContentUiModel.kt의 다른 줄). 전부 KDoc 한 줄짜리 hunk 라 겹치는 줄은 없다.
Activity