ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

๐Ÿงฉ [Setup Log] ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” VSCode ํ™•์žฅ ๊ธฐ๋Šฅ: GitHub Copilot & Ruff

์ฝ”๋”ฉ์„ ์ข€ ๋” ํšจ์œจ์ ์œผ๋กœ ํ•ด๋ณด๊ณ  ์‹ถ์–ด์„œ ์ด๊ฒƒ์ €๊ฒƒ ์ฐพ์•„๋ณด๋‹ค๊ฐ€, ๊ฒฐ๊ตญ Visual Studio Code(VSCode)์— ์ •์ฐฉํ•˜๊ฒŒ ๋๋‹ค.
๊ทธ๋Ÿฐ๋ฐ ์ •๋ง ๋†€๋ผ์šด ๊ฑด, ์ด ์—๋””ํ„ฐ ์ž์ฒด๊ฐ€ ์•„๋‹ˆ๋ผ ๊ทธ ์œ„์— ์–น๋Š” ‘ํ™•์žฅ ๊ธฐ๋Šฅ’์ด์—ˆ๋‹ค.
์˜ค๋Š˜์€ ๋‚ด๊ฐ€ ์ง์ ‘ ์จ๋ณด๊ณ  ๋งŒ์กฑํ–ˆ๋˜ VSCode ํ™•์žฅ ๊ธฐ๋Šฅ ๋‘ ๊ฐ€์ง€๋ฅผ ์†Œ๊ฐœํ•˜๊ณ , ์„ค์น˜ ๋ฐฉ๋ฒ•๋ถ€ํ„ฐ ํ™œ์šฉ ํŒ๊นŒ์ง€ ์ •๋ฆฌํ•ด๋ณด๋ ค ํ•œ๋‹ค.


โœ… VSCode ํ™•์žฅ ๊ธฐ๋Šฅ ์„ค์น˜ ๋ฐฉ๋ฒ•

  1. ์‚ฌ์ด๋“œ๋ฐ”์—์„œ ํ™•์žฅ(Extensions) ํƒญ ํด๋ฆญ
  2. ๊ฒ€์ƒ‰์ฐฝ์— ์›ํ•˜๋Š” ํ™•์žฅ ๊ธฐ๋Šฅ ์ž…๋ ฅ
  3. [Install] ๋ฒ„ํŠผ ํด๋ฆญ

๐Ÿ“ธ ์•„๋ž˜ ์ด๋ฏธ์ง€๋Š” ํ™•์žฅ ๊ธฐ๋Šฅ ๊ฒ€์ƒ‰ ๋ฐ ์„ค์น˜ ํ™”๋ฉด ์˜ˆ์‹œ์ด๋‹ค.


๐Ÿ“ฆ ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ํ™•์žฅ ๊ธฐ๋Šฅ

1. GitHub Copilot

AI๊ฐ€ ์ž๋™์œผ๋กœ ์ฝ”๋“œ ์™„์„ฑ, ์ฃผ์„ ๊ธฐ๋ฐ˜ ์ฝ”๋“œ ์ƒ์„ฑ๊นŒ์ง€ ์ง€์›ํ•œ๋‹ค.
๋ฐ˜์ฏค ํŽ˜์–ด ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋А๋‚Œ. ์ƒ๊ฐ๋ณด๋‹ค ๋˜‘๋˜‘ํ•˜๋‹ค.

  • ChatGPT์™€ ๋‹ค๋ฅธ ์ : VSCode ๋‚ด๋ถ€์—์„œ ๋ฐ”๋กœ ๋ฐ˜์‘ํ•จ
  • ์ถ”์ฒœ ์ด์œ : “๊ทธ๊ฑธ ์™œ ๋‚ด๊ฐ€ ์ง์ ‘ ํƒ€์ดํ•‘ํ•ด์•ผ ํ•ด?” ์‹ถ์„ ๋•Œ ๋”ฑ

๐Ÿ–ผ Copilot์„ ๊ฒ€์ƒ‰ ํ•œ ํ›„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

์ฝ”ํŒŒ์ผ๋Ÿฟ๊ณผ ํŽ˜์–ด ์ฝ”๋”ฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค !

์ž‘์„ฑํ•˜๊ณ  ์‹ถ์€ ์ฝ”๋“œ๋ฅผ ์ฃผ์„์œผ๋กœ ์ž‘์„ฑํ•˜๋ฉด ์•Œ์•„์„œ ๋‚ด์šฉ๋“ค์„ ์ž‘์„ฑํ•ด์ค€๋‹ค.

 

๐ŸŽž ์•„๋ž˜ GIF๋Š” ์ฃผ์„์„ ์ž‘์„ฑํ•œ ํ›„ Copilot์ด ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์‹ค์ œ ์‹œ์—ฐ ์žฅ๋ฉด์ด๋‹ค.


2. Ruff

ํŒŒ์ด์ฌ ๋ฆฐํ„ฐ ๊ฒธ ํฌ๋งคํ„ฐ. ๋น ๋ฅด๊ณ , ๋„ˆ๋ฌด ๋น ๋ฅด๊ณ , ์ง„์งœ ๋น ๋ฅด๋‹ค.

  • ๊ธฐ์กด flake8, black, isort์˜ ๊ธฐ๋Šฅ์„ ํ†ตํ•ฉ
  • ์„ค์ •๋„ ๊ฐ„๋‹จํ•˜๊ณ  CLI ์—ฐ๋™๋„ ์ž˜ ๋จ
  • VSCode์—์„œ ๋ฐ”๋กœ ์˜ค๋ฅ˜ ์žก๊ณ  ์ •๋ฆฌํ•ด์ฃผ๋Š” ๊ฒŒ ์ฒด๊ฐ๋จ

๐Ÿ’ก ์‚ฌ์šฉ ํŒ: pyproject.toml์— ์„ค์ •ํ•˜๋ฉด ์ €์žฅํ•  ๋•Œ ์ž๋™ ํฌ๋งท๋„ ๊ฐ€๋Šฅ!

 

Ruff ์„ธํŒ…

settings.json ํŒŒ์ผ์„ ์—ด๊ณ  ๋‚ด๋ถ€์— ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

  • mac: command + shift + p: setting.json
  • window: ctrl + shift + p: setting.json
{
  "python.formatting.provider": "black",
  "editor.formatOnSave": true,
  "editor.codeActionsOnSave": {
    "source.organizeImports": true,
    "source.fixAll": true
  },
  "ruff.enable": true,
  "ruff.formatOnSave": true
}

 

๐ŸŽž ์•„๋ž˜ GIF๋Š” Ruff๋ฅผ ์„ธํŒ…ํ•˜๋Š” ๊ณผ์ •์ด๋‹ค settings.json์„ ์‹คํ–‰ ํ›„ ์œ„ ๋‚ด์šฉ์„ ๋ณต์‚ฌํ•ด์„œ ๋ถ™์—ฌ๋„ฃ์œผ๋ฉด ๋œ๋‹ค.

 

๐Ÿ–ผ ruff ๋ผ๊ณ  ๊ฒ€์ƒ‰ํ•˜๊ณ  ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ์„ ๋ฐ›์œผ๋ฉด ๋œ๋‹ค.

 

๐ŸŽž ๋งˆ์ง€๋ง‰ GIF๋Š” ์ €์žฅํ•  ๋•Œ ์ž๋™์œผ๋กœ ๋ฆฐํŠธ ๋ฐ ํฌ๋งท์ด ์‹คํ–‰๋˜๋Š” ๋ชจ์Šต์ด๋‹ค.


๐Ÿงช ๋งˆ๋ฌด๋ฆฌ

์˜ค๋Š˜ ์†Œ๊ฐœํ•œ ๋‘ ๊ฐ€์ง€ ํ™•์žฅ ๊ธฐ๋Šฅ์€ ์‹ค์ œ๋กœ ๋‚ด ์ž‘์—… ํ๋ฆ„์„ ๋ˆˆ์— ๋„๊ฒŒ ์ค„์—ฌ์คฌ๊ณ ,

ํ˜น์‹œ ๊ฐœ๋ฐœ ์†๋„๋ฅผ ์กฐ๊ธˆ์ด๋ผ๋„ ์˜ฌ๋ฆฌ๊ณ  ์‹ถ๋‹ค๋ฉด,
์ด ๋‘ ๊ฐ€์ง€ ํ™•์žฅ ๊ธฐ๋Šฅ๋ถ€ํ„ฐ ์จ๋ณด๋Š” ๊ฑธ ์ถ”์ฒœํ•œ๋‹ค.