pre-commit
-
mypy로 파이썬 프로젝트 5개에 타입 에러 0 만들기 — 단계적 도입과 Hook 강제IT 2026. 4. 28. 23:00
ruff는 깔았는데, 왜 또 타입 체크인가며칠 전 프로젝트 10여 개에 ruff 린트를 돌려 경고 0을 만들었다. 쓰지 않는 import, 오타, 중복 키 — 테스트 통과와 무관하게 조용히 썩고 있던 것들이 드러났다. 그래도 한 가지는 여전히 남아 있었다.타입은 검증되지 않고 있었다. 타입 힌트는 힌트일 뿐, 실제로 맞게 썼는지는 아무도 안 본다. 런타임에서 터지기 전까지는.먼저 현황부터 — baseline mypy12개 Python 프로젝트 전체에 mypy --ignore-missing-imports .를 돌렸다. 결과는 프로젝트별로 의존성과 동적 패턴에 따라 크게 갈렸다.난이도특징대략의 프로젝트 수용이타입힌트 50% 이상 + 의존성 단순(aiohttp 정도)4~5개중간getattr/importlib ..
-
ruff로 10개 프로젝트 린트 통과시키기 — 246 → 0, 그리고 실제 버그 2건 발견IT 2026. 4. 28. 21:00
왜 갑자기 린트인가개인 프로젝트가 10개까지 늘었다. Python 코드만 180여 개 파일. 각각은 테스트 통과를 확인하며 개발했지만, 프로젝트를 공개 저장소로 옮길 생각을 하면서 한 가지 불안이 생겼다. "내가 쓰지도 않는 import가 도대체 몇 개 남아 있을까?"테스트는 동작을 검증한다. 하지만 린트는 눈으로 확인하지 않은 결함을 잡아낸다. 쓰지 않는 import, 오타가 만든 미정의 참조, 동일 dict에 실수로 두 번 넣은 키. 테스트는 이런 것들이 실행 경로에 없으면 조용히 통과시킨다. 그리고 공개 저장소에 올라간 순간, 남들 눈에 먼저 띈다.그래서 린트를 돌렸다. 도구 고르기부터 hook으로 재발 방지하는 것까지, 하루짜리 작업의 기록이다.도구 선택 — 왜 ruff였나Python 린터는 선택..