<aside>

</aside>

챕터 소개 🚀

좋은 코드는 단순히 '동작하는' 코드가 아니라, '읽기 쉽고', '일관성 있으며', '잠재적 오류가 없는' 코드입니다. 🧐 오늘은 우리 코드를 예술 작품처럼 다듬어 줄 두 명의 장인, RuffBlack을 소개합니다! 이 도구들을 pyproject.toml로 통합 관리하고, Poe the Poet 태스크로 만들어 코드 품질 관리를 자동화하는 방법을 배워볼게요.


챕터 목표 🎯


이번 챕터에서 사용되는 전체 코드 및 프로젝트 구조 📂

이번에도 코드 파일 변경은 없으며, pyproject.toml 파일이 대대적으로 업데이트됩니다.

pyproject.toml (추가/변경되는 부분)

# ... [project] 섹션 등은 생략 ...

[tool.poetry.group.dev.dependencies]
pytest = "^8.2.2"
httpx = "^0.27.0"
pytest-asyncio = "^0.23.7"
poethepoet = "^0.35.0"  # <-- poe the poet 추가! (버전 정정)
ruff = "^0.6.0"         # <-- 누락 보완: ruff 추가
black = "^24.0.0"       # <-- 누락 보완: black 추가

# ...

[tool.poe.tasks]
serve = "fastapi dev src/todo_api/main.py"
test = "pytest -q"
lint = "ruff check ."  # <-- lint 태스크 추가!
format = "black ."     # <-- format 태스크 추가!

# Black을 위한 설정
[tool.black]
line-length = 88
target-version = ["py310"]

# Ruff를 위한 설정
[tool.ruff]
line-length = 88
target-version = "py310"

[tool.ruff.lint]
# E(pycodestyle 에러), F(Pyflakes), I(isort), UP(pyupgrade), B(flake8-bugbear) 등 규칙 활성화
select = ["E", "F", "I", "UP", "B"]
ignore = [] # 특별히 무시할 규칙은 없음


강의 내용 📖

코드 품질 관리, 왜 필요할까요?

혼자 개발하는 작은 프로젝트라면 모를까, 여러 사람이 함께 만드는 프로젝트에서는 모두가 비슷한 스타일로 코드를 작성하는 '코드 컨벤션'이 아주 중요합니다. 코드 컨벤션이 잘 지켜지면 가독성이 높아지고, 유지보수가 쉬워지며, 잠재적인 버그를 미리 발견할 수도 있어요!


장인 소개: 린터(Ruff)와 포맷터(Black)