본문 바로가기
C.W.K.
Stream
Lesson 08 of 13 · published

Linting

~10 min · lint, ruff, eslint

Level 0견습생
0 XP0/101 lessons0/10 achievements
0/120 XP to next level120 XP to go0% complete

린트는 빠르고 저렴한 품질 관문이야

코드를 실행하지 않아도 잡아낼 수 있는 구조적인 문제들을 린트가 해결해 줘. 쓰지 않는 임포트, 정의되지 않은 변수, 의심스러운 패턴, 스타일 위반, 그리고 변경 가능한 기본 인자나 중첩된 삼항 연산자 같은 단순한 버그의 징후까지 모두 찾아내지. 가장 비용이 적게 드는 CI 단계니까 제일 먼저 돌려야 해.

추천 도구

  • Python: ruff (Astral)가 flake8, isort, pylint의 대부분을 대체하고 black 포매팅까지 대신해. 예전 도구들보다 100배 빠르다고.
  • JavaScript / TypeScript: 새로운 Rust 기본값인 biome 아니면 eslint + prettier 조합을 써. Biome이 더 빠르고 통합되어 있지만, eslint는 더 오래된 플러그인 생태계를 갖추고 있어.
  • Go: golangci-lint가 수십 개의 린터를 묶어서 제공해.
  • Rust: clippy가 내장되어 있어.
  • YAML: yamllint를 쓰고, GitHub Actions YAML 전용으로는 actionlint를 써.
  • Shell: shellcheck를 쓰면 돼.

푸시하기 전에 로컬에서 pre-커밋 훅으로 실행해 봐. CI는 그저 안전망일 뿐, 첫 번째 방어선이 아니야.

Code

다중 도구 린트 작업·yaml
  lint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: astral-sh/setup-uv@v3
      - run: uv run ruff check .
      - run: uv run ruff format --check .
      - name: Lint workflow YAML
        uses: docker://rhysd/actionlint:latest
        with:
          args: -color
      - name: Lint shell scripts
        run: |
          sudo apt-get install -y shellcheck
          find scripts/ -name '*.sh' -exec shellcheck {} +

External links

Exercise

CI 워크플로에 actionlint를 추가해. 기존 워크플로 파일에서 돌려봐. 뭔가 찾아내면 같은 PR에서 바로 고쳐. 그 버그는 결국 터지게 될 테니까.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.