TroubleShooting

[SwiftLint] closure [weak self] trigger rule 추가

Phililip
728x90

안녕하세요.

 

개발할 때 escaping closure에서 [weak self]를 빼먹는 경우가 종종 있지 않나요??

 

이런 것도 SwiftLint가 검사해 줬으면 참 좋겠다... 라고 생각을 했는데 SwiftLint 0.54.0 기준으로 아직까진 그런 규칙은 없더라구요ㅠㅠ

 

완벽하진 않지만 SwiftLint 커스텀 룰을 활용해서 closure에서 [weak self]를 사용하지 않았을 때 에러를 반환하는 방법을 찾았어요.

 

yml 파일에 아래처럼 커스텀 룰을 정의하면, closure에서 [weak self]가 없으면 에러를 반환합니다.

 

 

단, 검사가 가능한 상황이 한정적이에요ㅠㅠ 아래 2가지 조건 모두 해당되는 경우에만 trigger 됩니다.

[closure [weak self] trigger 조건]

(1) 파라미터가 있는 closure만 trigger 가능
    - 만일, 파라미터가 없는 closure라면 closure 내부에서 self를 capture 해도 trigger 안됨.

(2) closure가 시작되고 나서 바로 self를 capture 해야 함.
    - 만일, closure 시작하자마자 self.xxx 대신 다른 코드가 들어간다면 trigger 안됨.

 

완벽하진 않지만, 나름 잘 사용할 것 같아서 공유해봅니다ㅎㅎ

 

# 참고

 

SwiftLint — Advanced

We all talk to follow Swift Style & Conventions, and we have an impactful tool available for us — SwiftLint. I’ll not talk about more here…

rakeshchander.medium.com

 


이번 글은 여기서 마무리.

 

 

 

반응형