Skip to content

Conversation

@zero0205
Copy link
Collaborator

@zero0205 zero0205 commented Feb 9, 2025

#️⃣ 연관된 이슈

#7

✨ 구현 기능 명세

  • sonar-scanner 설치 및 설정
  • SonarQube로 정적 코드 분석하여 발견된 이슈 수정

🎁 PR Point

sonar-scanner 설치

sonar-scanner는 코드를 분석하여 SonarQube server로 넘기기 위한 도구이다. 로컬의 코드를 분석하기 위해서는 필요하기 때문에 설치해줬다.

SonarQube로 정적 코드 분석하여 발견된 이슈 수정

내용이 길어서 Notion 정리 자료🔗 첨부

😭 어려웠던 점

함수 중첩도가 높은 문제를 해결하기 위해 방송 송출/시청 연결 관련 커스텀 훅들을 아예 뜯어서 재구성하는 것이 좀 어려웠던 것 같고, 나머지는 SonarQube 분석 결과 화면에서 원인과 해결 방법을 알려줘서 대부분 쉽게 해결할 수 있었다.

- HomePage, AuthPage, ProtectedRoute를 제외한 페이지에 lazy loading 적용
- lazy loading이 적용된 컴포넌트에 Suspense와 로딩 UI 추가
- lazy loading 지원을 위해 페이지 컴포넌트 export 방식 변경
- useRoom, useTransport, useProducer 훅을 하나의 훅으로 통합
- 높은 의존성과 낮은 재사용성 문제 해결
- 디버깅 용이성 개선
- SonarQube 이슈 4건 해결
 - 코드 중첩도(Nesting) 4건
- 불필요한 리렌더링 및 API 요청을 하지 않도록 useAPI 훅의 API 요청 로직 구조 개선
- API 요청에 필요한 핵심 파라미터만 받도록 수정(endpoint, options)
- useTransport, useConsumer 훅을 하나의 훅으로 통합
- useProduce와 useConsume에서 공통적으로 사용되는 함수는 shared/lib로 이동
- 컴포넌트 간 의존성 개선
- 디버깅 로깅 추가
- SonarQube 중첩도 이슈 해결
- Promise rejection 처리 방식 수정 (Error 객체 사용)
- label 내 텍스트를 태그로 감싸서 모호한 공백 처리 문제 해결
- 접근성 향상을 위해 'group' role을 시맨틱 HTML 요소(<fieldset>)로 대체
- 객체 중첩에는 optional chaining을 사용하도록 수정
- TODO 주석 제거
- useState의 상태와 setter 함수가 일관된 형식을 가지도록 수정
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

FE ♻️ Refactor 코드 리팩토링

Projects

None yet

Development

Successfully merging this pull request may close these issues.

♻️ [Refactor] 정적 코드 분석 도구(SonarQube) 추가

2 participants