ruff homepage https://beta.ruff.rs/docs/
ruff github https://github.com/astral-sh/ruff
Ruff๋ Rust๋ก ์์ฑ๋ ๊ณ ์ฑ๋ฅ Python Linter ์ ๋๋ค.
์ ์ด๋ฏธ์ง์ ๊ฐ์ด ๋ค๋ฅธ linter ๋๋น ๊ต์ฅํ ๊ณ ์ฑ๋ฅ์์ ๋ณด์ฌ์ค๋๋ค.
์์ ์ค ์ ์ฅํ ๋ ๋ง๋ค ์ฒดํฌํด๋ ๋ฌด๊ดํ ์ ๋์ ๋๋ค.
Linter๋ฅผ ์ฌ์ฉํด์ผํ ์ด์ ?
Linter๋ฅผ ์ฌ์ฉํ๋ฉด 1์ฐจ์ ์ผ๋ก ์ฝ๋ ์คํ์ผ์ ๊ธฐ๋ณธ์ ์ธ ๋ถ๋ถ์ ๋ํด ๊ฒ์ฆํ ์ ์์ต๋๋ค.
๋ฌธ๋ฒ ์คํ์ผ, ์ฝ๋ ๋ผ์ธ๋น ๋ฌธ์์, ํจ์ ๋ด if ๋ฌธ ๊ฐ์ ๋ฑ ๊ฒ์ฆ์ Linter์์ ํด์ฃผ๋ ์ฝ๋ ๋ฆฌ๋ทฐํ ๋ ๋ฆฌ๋ทฐ์ด๋ ๋ก์ง๋ถ๋ถ๋ง ์ ๊ฒฝ์ธ ์ ์๊ฒ ๋ฉ๋๋ค.
์ด์ ๊ฐ์ด ๋๊ตฌ๋ฅผ ํ์ฉํ์ฌ 1์ฐจ์ ์ธ ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ์งํํ ์ ์๋ค๋ฉด ํ๋ด์ ์์ฐ์ฑ๋ ์ฆ๊ฐํ ๊ฒ์ ๋๋ค.
๊ณ ๋ก ์์จ๋ ๋์ง๋ง ์ฐ๋ฉด ๋งค์ฐ ์ข์ ๊ฒ์ด Linter ์ ๋๋ค.
ํ๋ฐํ๊ฒ ์ฌ์ฉํ๋ ์คํ์์ค
Apache Airflow
FastAPI
Hugging Face
Pandas
SciPy
๋ฑ..
์ ๋ช ์คํ์์ค์์๋ ruff๋ฅผ ์ ๊ทน ํ์ฉ์ค์ ๋๋ค.
์ค์น ๋ฐ ๊ธฐ๋ณธ ์ฌ์ฉ
๊ธฐ๋ณธ์ ์ธ ์ค์น ๋ฐ ์ธํ ๋ฐฉ๋ฒ์ ๋ํด ์๋ ค๋๋ฆฌ๊ฒ ์ต๋๋ค.
pip install ruff
์ ๋ช ๋ น์ด๋ฅผ ํตํ์ฌ ์ค์นํฉ๋๋ค.
ruff .
ruff check .
python -m ruff .
python -m ruff check .
์ ๋ค๊ฐ์ง ๋ฐฉ๋ฒ ์ค ์๋ฌด ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ฌ ํ์ฌ ๊ฒฝ๋ก ๋ฐ ํ์ ์ ์ฒด ๊ฒฝ๋ก์ ๋ํด ์ฝ๋ ์ปจ๋ฒค์ ์ ๊ฒ์ฌํ ์ ์์ต๋๋ค.
๋๋ต ์์ ๊ฐ์ด ์ด๋ค ํ์ผ์ ์ด๋ ๋ผ์ธ ๋ช ๋ฒ์งธ ์นธ์ ์ฝ๋์ ์ด๋ค ์ ์ฝ์กฐ๊ฑด์ ๊ฑธ๋ฆฌ๋์ง ๋ณด์ฌ์ค๋๋ค.
ํ์ฌ๋ ํน์ ์ฝ๋์ ๋ผ์ธ์ด ๋๋ฌด ๊ธธ๋ค๋ ์๋ฌ๋ฅผ ๋จ๊ธฐ๊ณ ์์ต๋๋ค.
pyproject.toml ์ค์ ํ๊ธฐ
pyproject.toml์ PEP 518 ์์ ํ๋ก์ ํธ ๋น๋ ์์คํ ์ ๋ํ ์ค์ ์ ํ ์ ์๋๋ก ์ง์ ๋ ํ์ผ์ด๋ฉฐ Ruff ์์๋ ์ค์ ํ์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
[tool.ruff]
select = [
"E",
"F",
"PL",
]
Root ๊ฒฝ๋ก์ pyproject.toml์ ์ถ๊ฐํ ์ ๋ด์ฉ์ ์ถ๊ฐํด์ค๋๋ค.
select๋ ์ด๋ค ๋ฃฐ๋ค์ ์ ์ฉํ ์ง ์ ํํ๋ ์ต์ ์ ๋๋ค.
์์ ๊ฐ์ด ์ค์ ํ์ฌ ์ฝ๋๊ฐ ์ข ๋ ๋ง์ ์ ์ฝ์กฐ๊ฑด์ ๊ฑธ๋ฆฌ๊ฒ ๋์์ต๋๋ค.
์ต์ ์ ๋ํ ๋ด์ฉ์ https://beta.ruff.rs/docs/rules/ ์ ์์ธํ ๋์์์ต๋๋ค.
ํ์์ ๋ฐ๋ผ ํ๋ด์ ๋ฃฐ๋๋ก ์ฝ๋ ๋ผ์ธ์, ์ ์ฝ์กฐ๊ฑด ๋ฑ์ ์ค์ ํ์ฌ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
Ruff ํ์ฉ ๋ฐฉํฅ
ํ ๋จ์ ์์ ์ด๋ผ๋ฉด pyproject.toml ํ์ผ์ ํ์์ ์ฌ๋ ค ๋ฃฐ์ ๊ด๋ฆฌํ๋ฉด ํ ์ ์ฒด ์ฝ๋ ํ๋ฆฌํฐ๊ฐ ์ฌ๋ผ๊ฐ ๊ฒ์ ๋๋ค.
git์ ์ด๋ค๋ฉด pre-commit hook ์์ ์ปค๋ฐ์ Ruff๋ฅผ ์ํํ๋๋ก ํ์ฌ ํต๊ณผ๋๋ฉด ๋์ด๊ฐ๋๋ก ์ธํ ์ ํ๊ฑฐ๋,
PyCharm์ด๋ผ๋ฉด File Wathers ํ๋ฌ๊ทธ์ธ์ ํ์ฉํ์ฌ ์ ์ฅํ ๋ ๋ง๋ค ์ฒดํฌํด๋ ์ถฉ๋ถํ ์ฌ์ฉํ ๋ง ํ ๊ฒ ์ ๋๋ค.
Formatter์ธ Black์ ํจ๊ป Ruff๋ฅผ ์ฌ์ฉํ๋ฉด ์ฝ๋ ์ ๋ฆฌ ๋ฐ ํ๋ฆฌํฐ ์ ์ ์์ฝ๊ฒ ํ ์ ์์ ๊ฒ์ ๋๋ค.
'Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Ruff์์ ํน์ ๋ผ์ธ ๊ฒ์ฌ ์์ธ์ฒ๋ฆฌ ํ๊ธฐ (0) | 2023.09.09 |
---|---|
github action์ผ๋ก Jupyter book ์๋ ๋ฐฐํฌํ๊ธฐ (0) | 2023.05.06 |
python -m ์ต์ ์ผ๋ก ๋ชจ๋ ์คํํ๊ธฐ (0) | 2023.05.05 |
Windows ์์ Gradio ์นํ์ด์ง ์๋จ๋ ๋ฌธ์ (0) | 2022.08.31 |
๋๊ธ