[#457] Xcode 프로젝트 그룹 구조를 디렉토리 기준으로 정리한다#466
Conversation
DevLogCore의 Sources를 파일 시스템 동기화 루트로 전환하고 SwiftLint 설정 파일을 타깃 멤버십 예외로 처리.
DevLogDomain의 Sources와 Tests를 파일 시스템 동기화 루트로 전환하고 레이어명 루트 그룹 제거.
DevLogData의 Sources와 Tests를 파일 시스템 동기화 루트로 전환하고 프로젝트 표시 그룹 기준 통일.
DevLogInfra의 Sources와 Tests를 파일 시스템 동기화 루트로 전환하고 프로젝트 표시 그룹 기준 통일.
DevLogPersistence의 Sources와 Tests를 파일 시스템 동기화 루트로 전환하고 레이어명 루트 그룹 제거.
DevLogPresentation의 Sources와 Tests를 파일 시스템 동기화 루트로 전환하고 레이어명 루트 그룹 제거.
DevLogWidgetCore의 Sources와 Tests를 파일 시스템 동기화 루트로 전환하고 위젯 코어 프로젝트 표시 그룹 기준 통일.
There was a problem hiding this comment.
Code Review
이번 PR은 Xcode 16의 PBXFileSystemSynchronizedRootGroup 기능을 도입하여 여러 모듈의 프로젝트 구조를 파일 시스템 동기화 방식으로 전환합니다. 이를 통해 수동으로 관리되던 파일 참조와 그룹 섹션이 대폭 정리되었습니다. 리뷰 피드백에서는 DevLogCore 프로젝트와 달리 DevLogData, DevLogDomain 등 다른 프로젝트들에서 동기화 그룹 도입 후에도 참조되지 않는 기존의 하위 그룹 및 파일 참조 데이터가 여전히 남아 있음을 지적했습니다. 프로젝트 파일의 비대화를 방지하고 일관성을 유지하기 위해 불필요한 레거시 데이터를 삭제하는 개선 작업이 필요합니다.
| 5A15B28E791BA16F53BAF94E /* Sources */ = { | ||
| isa = PBXFileSystemSynchronizedRootGroup; | ||
| exceptions = ( | ||
| 5A15B28E791BA16F53BAF94F /* Exceptions for "Sources" folder in "DevLogData" target */, | ||
| ); | ||
| name = DevLogData; | ||
| path = Sources; | ||
| sourceTree = "<group>"; | ||
| }; |
There was a problem hiding this comment.
Xcode 16의 PBXFileSystemSynchronizedRootGroup을 도입하면서 기존의 PBXGroup을 동기화 그룹으로 전환하셨습니다. 하지만 DevLogCore 프로젝트와 달리, 이 프로젝트에서는 기존에 정의되어 있던 하위 그룹들(Common, DTO, Mapper 등)과 개별 파일 참조(PBXFileReference, PBXBuildFile)들이 프로젝트 파일 내에 그대로 남아 있습니다.
동기화 그룹을 사용하면 Xcode가 파일 시스템을 기반으로 구조를 자동 관리하므로, 더 이상 참조되지 않는 기존의 PBXGroup 섹션 내 하위 그룹들과 PBXFileReference, PBXBuildFile 섹션의 데이터들을 삭제하여 프로젝트 파일의 불필요한 비대화를 막고 일관성을 유지하는 것이 좋습니다. 이 현상은 DevLogDomain, DevLogInfra, DevLogPersistence, DevLogPresentation, DevLogWidgetCore 프로젝트들에서도 공통적으로 발견됩니다.
파일 시스템 동기화 그룹 전환 후 남은 미참조 그룹, 파일 참조, 빌드 파일 객체 제거.
🔗 연관된 이슈
🎯 의도
레이어별 Xcode 프로젝트의 표시 그룹과 실제 디렉토리 구조 불일치 해소
📝 작업 내용
📌 요약
.xcodeproj의Sources,Tests를 파일 시스템 동기화 루트 그룹으로 전환Sources,Tests,Frameworks,Projects,Products기준으로 정리🔍 상세
DevLogCore의Sources를PBXFileSystemSynchronizedRootGroup으로 전환DevLogDomain,DevLogData,DevLogInfra,DevLogPersistence,DevLogPresentation,DevLogWidgetCore의Sources,Tests를PBXFileSystemSynchronizedRootGroup으로 전환.swiftlint.yml파일을 타깃 멤버십 예외로 등록PBXSourcesBuildPhase참조를 동기화 루트 기반 구성으로 정리📸 영상 / 이미지 (Optional)