detekt + reviewdog으로 정적 코드 분석 자동화하기
detekt와 reviewdog을 GitHub Actions에 연결해 PR마다 정적 코드 분석과 리뷰 코멘트 생성을 자동화하는 방법을 다뤘습니다. 멀티모듈 결과 병합, 경고 노출 방식, 실패 조건 설정까지 함께 설명했습니다.

detekt와 reviewdog을 GitHub Actions에 연결해 PR마다 정적 코드 분석과 리뷰 코멘트 생성을 자동화하는 방법을 다뤘습니다. 멀티모듈 결과 병합, 경고 노출 방식, 실패 조건 설정까지 함께 설명했습니다.
detekt에 custom rule을 추가해 팀 컨벤션을 자동 검증하는 방법을 설명합니다. `println()` 금지 rule 예시와 테스트, 적용 설정까지 단계별로 다뤘습니다.
SonarQube Cloud의 불안정성과 custom rule 한계 때문에 detekt와 reviewdog으로 전환했습니다.\n도입 전에는 팀 컨벤션 정리와 기존 경고 코드 정리가 먼저 필요했습니다.
ViewModel의 1회성 이벤트 전파에 쓰던 EventFlow를 Channel로 바꾸는 방법을 정리했습니다. 구독자 부재와 재수집 상황을 고려해 receiveAsFlow()와 Channel.BUFFERED 사용 이유도 설명했습니다.

PR 생성 시 png/jpg 이미지를 GitHub Actions와 TinyPNG로 자동 압축하도록 구성하는 방법을 소개했습니다. 수작업 이미지 최적화를 줄여 개발 흐름을 효율화하는 사례입니다.

헤이딜러 QA팀의 주간 배포 환경에서의 업무 프로세스를 단계별로 소개했습니다. 탐색적 테스트와 자동화, 점진 배포, 회고를 통해 품질과 속도를 함께 관리했습니다.

Release PR에서 커밋의 Jira 이슈를 찾아 fix versions를 자동 추가하는 GitHub Action을 소개했습니다. 수동 버전 관리 부담을 줄이고, 실패 이슈는 출력값과 댓글로 확인할 수 있습니다.

헤이딜러 제품팀이 팝업과 모달의 닫기 가능 기준을 UX 관점에서 정리했습니다. 응답 필수 여부에 따라 Strong/Weak를 구분하고 X버튼 노출 기준도 제시했습니다.

스켈레톤 로딩의 개념과 스피너와의 차이를 정리하고, 어떤 화면에 쓰면 좋은지 헤이딜러의 기준을 공유했습니다. 로딩이 짧게 느껴져야 하고 레이아웃 변화가 적은 화면에 적합하다고 설명했습니다.

헤이딜러 UX 스터디는 닫기와 뒤로가기를 화면 깊이가 아니라 맥락으로 구분하는 기준을 정리했습니다. 모달은 닫기, 이전 페이지 흐름은 뒤로가기를 쓰는 방식으로 일관성을 맞췄습니다.

헤이딜러 제품팀이 UI/UX의 अस्प한 기준을 스터디로 정리하고 문서화한 이야기를 소개했습니다. 반복되는 화면 규칙 고민을 공론화해 일관된 제품 경험을 만들었습니다.

Jetpack Compose에서 텍스트 길이에 따라 아이콘 위치를 유연하게 정렬하는 방법을 소개했습니다. TextLayoutResult와 커스텀 Alignment로 하드코딩 없이 대응했습니다.

안드로이드 WebView의 파일 입력을 onShowFileChooser()로 직접 구현하는 방법을 설명했습니다. 파일 선택 결과 전달과 URI 권한 처리, 복수 파일 선택 대응까지 다뤘습니다.