0

Flake8 چی هست و چرا باید استفاده کرد؟

 
_mmkh_
_mmkh_
کاربر تازه وارد
تاریخ عضویت : بهمن 1396 
تعداد پست ها : 134
محل سکونت : همدان

Flake8 چی هست و چرا باید استفاده کرد؟
شنبه 7 بهمن 1396  3:05 PM

Flake8 چی هست و چرا باید استفاده کرد؟

ابزارهای زیادی هست که با استفاده از اونها ما تبدیل بشیم به یک برنامه نویس بهتر. ابزارهایی که در استفاده های روزمره به کمک زیادی میکنه، که یکی از اون ابزار linting هست که تقریبا همه زبان های برنامه نویسی برای خودشون یکی دارند.

دقیقا linting یعنی چه؟

به برنامه ای که کد ما رو آنالیز میکنه و خطاهای احتمالی رو پیدا میکنه، Linting نامیده میشه.

اولین برنامه ای که این کار رو کرد Lint بود و توی زبان C کار میکرد.

آیا Linting جزو واجبات هست؟

خب تقریبا میشه گفت آره، استفاده از اونا باعث میشه که

  • می تونیم syntax error، بد بون شکل ظاهری، غلط املایی ها و غیره رو بفهمیم
  • صرفه جویی در وقت
  • باعث میشه بازبینی کدهامون (review) راحت تر باشه برای هم تیمی هامون (بخاطر یک شکل بودن کدها)
  • سادگی استفاده
  • سادگی در راه اندازی اولیه
حالا flake8 چی هست؟

خب یکی از ابزارهای linting در پایتون هست و توی کاروانرو ما از اون استفاده میکنیم.

نصب flake8 و روش استفاده

برای نصب کافیه با توجه به ورژن پایتونی که دارید نصب رو انجام بدید

1python<version> -m pip install flake8

برای استفاده از اون هم کافیه فقط توی ترمینالتون دستور زیر رو وارد کنید

123flake8 path/to/code/to/check.py
# or
flake8 path/to/code/

یکی از امکانات خیلی باحال تر flake8 اینه که شما میتونید فقط یک خطای خاص رو توی یک فایل یا فولدر بررسی کنید.

فرض کنید که میخواهیم بررسی کنیم که آیا خط طولانی توی یک فولدر وجود داره یا نه

1flake8 — select E501 path/to/your_project/
تنظیمات flake8 برای ادیتورها:
  • VIM
  • SublimeText
  • PyCharm
  • Atom
ترکیب flake8 و git

فرض کنید که پروژه ای دارید فایل های زیادی داره و وقت و حوصله ویرایش فایلهای قدیمی رو ندارید ولی تصمیم دارید از این ابزار برای فایل های جدید استفاده کنید و یا شاید شما دوست داشته باشید که flake8 رو به Continuous integration اضافه کنید و از این به بعد همه باید از این ابزار استفاده کنند.

123456789101112131415#!/usr/bin/env bash
changed_files=$(git diff --diff-filter=ACM --name-only  origin/master | grep -E '\.py$' | grep -v 'migrations/')
echo "$changed_files"
echo ""
if [[ "$changed_files" = "" ]]; then
    exit 0
fi

echo "$changed_files" | xargs flake8 --ignore=E711 --statistics --count

rc=$?
if [[ "$rc" != 0 ]]; then
    echo "FLAKE8 check failed, commit denied"
    exit "$rc"
fi

این کد کاری که انجام میده اینه که اول که فایل های جدید یا تغییر پیدا کرده رو از گیت میگیره و linting رو روی اونا انجام میده و اگه خطا داشته باشه نمایش میده.
شما کافیه این دستور shell رو هر بار قبل از کامیت کردن یا قبل از deploy کردن کدتون اجرا کنید.

تشکرات از این پست
دسترسی سریع به انجمن ها