우찬쓰 개발블로그

Strange compile error of Pull Request Sonar 본문

안드로이드/안드로이드 개발

Strange compile error of Pull Request Sonar

이우찬 2024. 3. 25. 21:06
반응형

Pull Request 에 Sonar 를 붙여서 새로운 코드의 Test Coverage가 60%가 넘지않으면 fail이 뜨도록 하는 Sonar 설정을 깃헙에 붙여서 쓰고있었다.

 

잘 쓰고 있던 와중에, 이상한 현상이 하나 발견되었는데,

 

내 로컬에서는 분명이 문제없게 돌아가는 테스트코드가 Pull Request Sonar를 깃 액션으로 돌리면, 특정 테스트코드의 ViewModel 생성부에 constructor에  Repository하나를 넣지않았다고 계속 컴파일 에러를 뱉는 것이었다.

 

그래서 pullRequest.yml에 빌드옵션도 넣어보고 캐시도 날려보고 별짓을 다했다.

 

거쳤던 사고회로

1. 깃 러너캐시가 꼬였나?

2. 내 로컬의 캐시가 꼬여서 안되야할 코드가 돌아갔나?(? 사실 돌아보면 말도안됨)

3. 소나 설정을 잘못했나?

 

등등..

 

Feat. 그러다가 알게된 명령어

--no-build-cache 를 ./gradlew에 붙여서 돌려주면 캐시 없애고 돌릴 수 있음

 

아무튼 결론은 내가 댕멍청했던 건데,

Pull Request를 올리는 시점에 그 뷰모델에 대한 Repository가 추가된 수정 커밋이 develop 브랜치에 머지되었다는 것을 놓친것이다.

그래서 upstream develop에 rebase를 하고 테스트코드를 수정해서 Pull Request를 돌렸으면 문제가 없을 내용인데, 그 commit 하나에 대해 리베이스 하지 않는게 문제였다.

 

그림으로 보면 이런 그림이다.

 

브랜치 상태

 

upstream develop branch에 있는 commit 하나가 그 뷰모델에 대한 repository 추가 주입이 생기게된 커밋이고, 내 feature branch의 test codes는 그 변경사항에 대해 적용이 안된 코드였던 것이다.

 

그래서 local 에서 돌렸을때는 전혀 문제가 없었던 것이고 upstream develop에 대한 Pull Request를 올렸을때는 테스트코드가 컴파일 에러를 뱉던 것.

 

지금 생각해보면 너무도 당연한건데, 그리고 당연히 이렇게 소나에서 잡아줘야 제대로 소나의 역할을 해주는건데, 너무 소나의 역할을 과소평가 했다.

 

하나 배워갑니다 소나님..

소나님

 

소나봇님의 코멘트

 

반응형
Comments