프로젝트 파일 정리하기 - Team-HGD/SniffMEET GitHub Wiki

작업 내역

엑스코드에서 프로젝트 파일 경고가 자주 뜨기에, 이번에 프로젝트 파일을 한번 우선 정리했습니다.

프로젝트 파일 직접 수정하기

null 파일 제거

320043702CDC9A0D00D08B6D /* (null) in Sources */ = {isa = PBXBuildFile; };
320043722CDC9E5F00D08B6D /* (null) in Sources */ = {isa = PBXBuildFile; };
320043762CDCA18E00D08B6D /* (null) in Sources */ = {isa = PBXBuildFile; };
320043782CDCA49100D08B6D /* (null) in Sources */ = {isa = PBXBuildFile; };
3200437C2CDCA6F300D08B6D /* (null) in Sources */ = {isa = PBXBuildFile; };

이전에 있었던 구조 변경이나, 깃 충돌/머지 등 다양한 이유로 프로젝트 파일 안에 null 파일을 참조하는 라인이 많이 있었습니다.

null 파일의 참조를 제거하는건 안전하므로 모두 제거했습니다.

중복으로 잡혀있는 항목 제거하기

A2CF8D1C2D79B71F00FAB817 /* Release.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = A2CF8D1B2D79B71F00FAB817 /* Release.xcconfig */; };
A2CF8D1D2D79B71F00FAB817 /* Debug.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = A2CF8D1A2D79B71F00FAB817 /* Debug.xcconfig */; };
A2CF8D1E2D79B71F00FAB817 /* Release.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = A2CF8D1B2D79B71F00FAB817 /* Release.xcconfig */; };
A2CF8D1F2D79B71F00FAB817 /* Debug.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = A2CF8D1A2D79B71F00FAB817 /* Debug.xcconfig */; };
A2CF8D202D79B71F00FAB817 /* Release.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = A2CF8D1B2D79B71F00FAB817 /* Release.xcconfig */; };
A2CF8D212D79B71F00FAB817 /* Debug.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = A2CF8D1A2D79B71F00FAB817 /* Debug.xcconfig */; };

Release와 Debug 컨픽 파일의 경우 앱 타겟 뿐만 아니라 테스트에도 적용되는 컨픽 파일이기 때문에 Resource 외부에 있어야 합니다. 이를 몇번 이동시키면서 프로젝트 파일에 쓸모 없는 참조가 많이 생기게 되어 모두 제거했습니다.

빌드 페이즈에 중복된 파일 제거하기

A24CD92B2D362E8F00492339 /* NearByProfileDropUsecase.swift in Sources */,
99525F132D6E80FB00B6E17E /* SigninRouter.swift in Sources */,
A24CD92B2D362E8F00492339 /* NearByProfileDropUsecase.swift in Sources */,
(중략)
3200445E2CE5CA1B00D08B6D /* SaveUserInfoUsecase.swift in Sources */,
99525F102D6E80C300B6E17E /* SigninPresenter.swift in Sources */,
FD14C2752DD4739F00AC9ABB /* SignInEmailUsecase.swift in Sources */,
3200445E2CE5CA1B00D08B6D /* SaveUserInfoUsecase.swift in Sources */,

NearByProfileDropUsecase와 SaveUserInfoUsecase 이 두 파일이 빌드 페이즈에 중복으로 포함되어 있어서 제거했습니다.

설정 수정하기

iOS 빌드 버전이 18.0으로 되어있던 것을 15.0으로 변경했습니다. 기존 프로젝트에서 iOS 최소 요구 버전이 15임에도, 18 버전을 요구하는 테스트가 있었습니다.

프로젝트 전반적인 최소 요구 버전과, 각 타겟들의 최소 요구 버전을 15.0 으로 맞췄습니다.

IPHONEOS_DEPLOYMENT_TARGET = 15.0;

SceneTest 삭제

현재 SceneTest가 제대로 된 테스트 기능을 수행하지 못한다고 판단하여 삭제했습니다.

  1. 테스트가 실제 로직을 검증하지 못하고 있습니다.
  2. Spy가 메소드 호출만 검증하고 있습니다.
  3. Mock 객체가 내부 구현 없이 그냥 프로토콜을 컨펌만 합니다. 실제 테스트에서 의미있게 사용되고 있지 않습니다.
  4. 테스트 타겟이 빌드 페이즈 파일을 전부 다 포함하고 있습니다. 타겟 앱보다 더 많은 파일을 컴파일 하고 있습니다.

마지막으로, 테스트가 정확하게 수행되고 있지 않는데도, 내부 로직을 새로 작성했을 때 추가적인 코드 작성이 필요합니다. 프로젝트 안에서 구조가 조금 변했을 때, 또 이 테스트를 위한 새로운 파일을 작성해야 하는 부채를 추가시키고 있습니다. 새로 작성하는 것이 더 좋을 것 같아서 제거했습니다.

CI 워크플로우 수정

touch SniffMeet/SniffMeet/Resource/Release.xcconfig
echo "SERVER_URL" = ${{ secrets.SERVER_URL }} >> SniffMeet/SniffMeet/Resource/Release.xcconfig
echo "PUBLIC_KEY" = ${{ secrets.PUBLIC_KEY }} >> SniffMeet/SniffMeet/Resource/Release.xcconfig
echo "NOTIFICATION_SERVER" = ${{ secrets.NOTIFICATION_SERVER }} >> SniffMeet/SniffMeet/Resource/Release.xcconfig

Resource 내부에 Release.xcconfig 파일을 생성하는 부분을 제거했습니다. 이미 프로젝트 파일 바로 아래 디렉토리에 Release와 Debug 컨픽 파일을 생성하고 있기 때문에, 불필요한 부분입니다.

추가 사항

현재 프로젝트 내부에 중복 파일도 있습니다. 파일 해쉬가 달라서 함부로 건드리지 못하고 있는데, 이 부분은 어떻게 해결해야할지 이야기 하고 싶습니다.

ex) SaveUserInfoUsecase가 프로젝트에 2개 잡혀있는데 각각의 해쉬가 A와 B로 다른 상태, 하지만 어떤 부분에선 A 해쉬를, 다른 부분에선 B 해쉬를 사용하는 상황