Hamid Reza Bakhtaki
Hamid Reza Bakhtaki
خواندن ۴ دقیقه·۳ سال پیش

نکاتی درباره پایتون لینتر

Python_linter
Python_linter

لینتر چیست و چه کمکی در برنامه نویسی میکند ؟

لینت در لغت به معنی پرزگیری میباشد و در برنامه نویسی به فرایند بررسی قواعد ظاهری برنامه نویسی گفته میشود . قواعد دستوری به وسیله مفسر زبان برنامه نویسی کنترل میگردد و در صورت وجود اشکال توسط مفسر زبان شناسایی میگردد. اما در خصوص ایرادات ظاهری کد نویسی احتیاج به وجود ابزارهای دیگری میباشد تا در این خصوص به برنامه نویسان مخصوصا در پروژه های بزرگ که تعداد زیادی برنامه نویس به طور همزمان بر روي پروژه کار میکنند کمک نماید.

چرا لینت مهم است و باید از آن استفاده کنیم؟

  • یک دلیل ساده: لینتینگ به جلوگیری از اشکال در برنامه شما کمک می کند. به عبارت دیگر:
  • با کمک به نوشتن کد بهتر (بررسی استانداردهای کدنویسی) شما را به یک توسعه دهنده بهتر تبدیل می کند.
  • به جلوگیری از مواردی مانند خطاهای نحوی، غلط املایی، قالب بندی بد، استایل نادرست و غیره کمک می کند.
  • در وقت شما به عنوان یک توسعه دهنده صرفه جویی می کند
  • اگر در تیم کار می کنید، در وقت افرادی که کد شما را بررسی می کنند صرفه جویی می کند (نیازی به بی اعتمادی برای اشکالات تایپی و قالب بندی نیست)

لینتیگ در پایتون :

قبلا از توضیح لینتیگ در پایتون لازمه با مفهوم PEP در پایتون اشنا باشیم :

در حقیقت PEP یا Python Enhancement Proposals به مستنداتی اطلاق میگردد که جهت ارائه اطلاعات به جامعه پایتون، یا توصیف یک ویژگی جدید برای پایتون یا فرآیندها یا محیط آن استفاده میشود. PEP باید مشخصات فنی مختصری از ویژگی ها و منطق برای یک قسمت خاص ارائه دهد. هر کدام از انها با یک شماره خاص مشخص میگردد:

برای مطالعه بیشتر میتوانید PEP1 که نحوه ایجاد و تایید PEP در پایتون میباشد را از لینک زیر ملاحظه کنید :

https://www.python.org/dev/peps/pep-0001/#:~:text=PEP%20stands%20for%20Python%20Enhancement,a%20rationale%20for%20the%20feature.

در پایتون PEP8 و PEP257 در خصوص رعایت اصول کد نویسی صحیح در پایتون چارچوب هایی را مشخص میکنند و عموما ابزارها لینت از این مستندات حهت بررسی قواعد نگارشی کد استفاده میکنند :در این خصوص در PEP8 موارد مربوط به نامگذاری توابع و متغیرها و کلاس ها و هم چنین روال فراخوانی کتابخانه ها پرداخته و در PEP257 نحوه استاندارد سازی docstring در پایتون را تشریح میکند .

موارد مهم در PEP8 :

  • از 4 فاصله در هر سطح تورفتگی استفاده کنید. توصیه شده از space بجای tab در تو رفتگی ها استفاده کنید.
  • تمام خطوط را به حداکثر 79 کاراکتر محدود کنید.برای بلوک‌های طولانی متن با محدودیت‌های ساختاری کمتر (رشته‌های اسناد یا نظرات)، طول خط باید به ۷۲ کاراکتر محدود شود.
  • برای جداسازی کلاس ها از یکدیگر ۲ خط فاصله در نظر بگیرد و برای جدا سازی متدهای یک کلاس از یکدیگر از یک خط فاصله در میان انها استفاده کنید.
  • حتما از کد UTF-8 در کدنویسی استفاده کنید.
  • کتابخانه های مختلف را در سطرهای جداگانه فراخوانی کنید. و هم چنین الویت فراخوانی به ترتیب زیر را حتما رعایت کنید :

۱- کتابخانه های عمومی پایتون

۲-کتابخانه های نصب شده

۳- کتابخانه های توسعه داده شده برای خود برنامه

برای مطالعه بیشتر میتوانید از لینک زیر جهت دسترسی به PEP8 استفاده کنید :

https://www.python.org/dev/peps/pep-0008/

موارد مربوط به Docstring در پایتون:

در خصوص نحوه صحیح ایجاد docstring در پایتن نیز میتوانید به PEP257 به ادرس زیر رجوع کنید:

https://www.python.org/dev/peps/pep-0257/


ابزارهای معروف لینتیگ در پایتون :

  • Flake8
  • Pylint
  • Pyflakes
  • Pychecker
  • Mypy
  • Pylama

شما میتونید با نصب و تنظیم هر کدام از ابزارهای فوق هنگام نوشتن کد پایتون از صحیح و استاندارد بودن کد خود اطمینان حاصل کنید . این ابزارها با تحلیل مداوم کد شما همواره نسبت به بررسی قواعد نگارشی اقدام میکنند و در صورت وجود تفاوت ان را به شما اطلاع میدهند.

در انتها نحوه راه اندازی و تنظیم یکی از ابزارها به عنوان نمونه نشان داده شده که برای بقیه موارد نیز مشابه میباشد .

نصب و استفاده از FLAKE8 :

نصب اسان :

python -m pip install flake8

نصب در پایتون ۲ :

python2.7 install flake8

نصب در پایتون ۳ :

python3 install flake8

چک کردن یک فایل خاص با flake8 :

flake8 /path_to_your_code/file_name.py

چک کردن مسیر پروژه :

flake /path_to_your_project

چک کردن در خصوص یک کد خطا مشخص :

flake8 -select W54 /path_to_project

عدم بررسی یک کد خطا مشخص :

flake8 -ignore W54 /path_to_your_project

هم چنین شما میتونید بر روی IDE هم افزونه های مربوط به لینتیگ رو نصب کنید و به طور همزمان با کد نویسی نسبت به رفع خطاها شناسایی شده اقدام کنید. نحوه راه اندازی flake8 برای IDE های مختلف رو از لینک های پایین میتونید مشاهده کنید :

نحوه نصب روی ATOM :

https://atom.io/packages/flake8


نحوه نصب vscode:

https://code.visualstudio.com/docs/python/linting

نحوه تنظیم رو pycharm :

https://stackoverflow.com/questions/48066322/descriptive-flake8-errors-in-pycharm

هم چنین اگر احتیاج به مستندات کامل در خصوص نحوه کار با این ماژول داشتید میتونید از فایل زیر هم استفاده کنید :

https://buildmedia.readthedocs.org/media/pdf/flake8/latest/flake8.pdf

و در اخر لینک سورس پروژه در رو هم از گیت هاب میتونید ببنید :

https://github.com/pycqa/flake8/blob/main/docs/source/internal/contributing.rst



linterpython linterpythonflake8lint
شاید از این پست‌ها خوشتان بیاید