آنالیز کد با pylint پایتون

امیرحسین بیگدلو July 2023

در این ویدیو با pylint پایتون آشنا خواهید شد. Pylint یک ابزار تحلیل کد استاتیک برای زبان برنامه نویسی پایتون است. خطاها، اشکالات و مسائل مربوط به سبک کد شما را بررسی می کند و می تواند به شما در بهبود کیفیت کلی و خوانایی کدتان کمک کند. Pylint بسیار قابل تنظیم است و می تواند با انواع IDE ها و ویرایشگرهای متن ادغام شود. همچنین این قابلیت را دارد که به طور خودکار برخی از مشکلاتی را که پیدا می کند برطرف کند. Pylint ابزار ارزشمندی برای هر توسعه‌دهنده پایتون است که به دنبال بهبود کیفیت کدهای خود و تشخیص خطاهای احتمالی قبل از تبدیل شدن به یک مشکل است.

دوره پیشنهادی: دوره آموزش پایتون

# نصب pylint

Pylint را می توان با استفاده از pip، نصب کننده پکیج برای پایتون، نصب کرد. برای نصب Pylint، یک خط فرمان یا ترمینال را باز کنید و دستور زیر را اجرا کنید:

pip install pylint

پس از نصب Pylint، می توانید نسخه نصب شده را با دستور زیر بررسی کنید:

pylint --version

اگر دستور بالا به درستی اجرا شود، به این معنی است که pylint به درستی نصب شده است.

دوره پیشنهادی: دوره آموزش عبارات باقاعده در پایتون

# کانفیگ pylint

Pylint دارای طیف گسترده ای از گزینه های پیکربندی است که به شما امکان می دهد رفتار آن را سفارشی کنید. می‌توانید Pylint را با استفاده از یک فایل پیکربندی، گزینه‌های خط فرمان یا متغیرهای محیطی پیکربندی کنید.

 

1. استفاده از فایل پیکربندی: Pylint به دنبال یک فایل پیکربندی به نام pylintrc. در دایرکتوری فعلی و سپس در دایرکتوری home می‌گردد. شما می توانید این فایل را ایجاد کنید و گزینه هایی را که می خواهید استفاده کنید را مشخص کنید. فایل باید دارای یک گزینه در هر خط در قالب: option=value باشد.

 

2. استفاده از گزینه های خط فرمان: همچنین می توانید هنگام اجرای Pylint گزینه هایی را در خط فرمان مشخص کنید. به عنوان مثال، برای فعال کردن پیام missing-docstring می‌توانید از دستور زیر استفاده کنید:

pylint --enable=missing-docstring file.py

 

3. استفاده از متغیرهای محیطی: برخی از گزینه ها را می توان به عنوان متغیرهای محیطی نیز تنظیم کرد. به عنوان مثال، برای تنظیم گزینه max-line-length روی 120، می توانید از دستور زیر استفاده کنید:

export PYLINT_MAX_LINE_LENGTH=120

همچنین می توانید از ترکیبی از این روش ها برای پیکربندی Pylint استفاده کنید. گزینه های مشخص شده در خط فرمان یا به عنوان متغیرهای محیطی، گزینه های مشخص شده در فایل پیکربندی را لغو می کنند.

به شدت توصیه می شود گزینه ها را بررسی کنید و pylint را مطابق با نیاز خود پیکربندی کنید. همچنین لازم به ذکر است که می‌توانید از پلاگین‌های pylint برای گسترش عملکرد pylint استفاده کنید.

pylint --generate-rcfile > .pylintrc

دستور بالا یک فایل pylintrc. با تمام گزینه های موجود ایجاد می کند و می توانید این فایل را برای فعال/غیرفعال کردن یا پیکربندی گزینه ها بر اساس نیاز خود ویرایش کنید.

دوره پیشنهادی: دوره آموزش سلری پایتون

# اجرا کردن pylint روی فایل پایتونی

پس از نصب و پیکربندی Pylint، می‌توانید از آن برای بررسی خطاها، باگ‌ها و مشکلات استایل یک فایل پایتون استفاده کنید. برای اجرای Pylint روی یک فایل پایتون، کافی است یک خط فرمان یا ترمینال را باز کنید و به دایرکتوری حاوی فایل بروید. سپس دستور زیر را اجرا کنید:

pylint file.py

همچنین، می‌توانید از دستور زیر برای بررسی همه فایل‌های پایتون در دایرکتوری فعلی استفاده کنید:

pylint *.py

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

pylint file1.py file2.py directory/

Pylint گزارشی ایجاد می کند که تمام مشکلاتی را که در فایل پیدا کرده است، از جمله پیام های خطا، پیام های هشدار و پیام های اطلاعاتی فهرست می کند. این گزارش همچنین شامل خلاصه‌ای است که بر اساس تعداد مسائل یافت شده، امتیاز کلی را به فایل می‌دهد.

ویدیو پیشنهادی: آموزش monkey patch در پایتون

# درک خروجی pylint

وقتی Pylint اجرا می‌شود، گزارشی تولید می‌کند که تمام مشکلاتی را که در فایل پیدا کرده، از جمله پیام‌های خطا، پیام‌های هشدار و پیام‌های اطلاعاتی فهرست می‌کند. این گزارش همچنین شامل خلاصه‌ای است که بر اساس تعداد مسائل یافت شده، امتیاز کلی را به فایل می‌دهد.

این گزارش در بخش های مختلف سازماندهی شده است که هر بخش مربوط به دسته بندی خاصی از مسائل است. بخش ها عبارتند از:

1. ارزیابی کلی: این بخش شامل یک امتیاز کلی برای فایل، بر اساس تعداد مسائل یافت شده است. امتیاز عددی بین 10- تا 10 است که نمرات بالاتر نشان دهنده کیفیت کد بهتر است.

2. قراردادها: این بخش حاوی پیام هایی در مورد قراردادهای کدگذاری، مانند قراردادهای نامگذاری، تورفتگی و فضای خالی است.

3. ریفکتور: این بخش حاوی پیام‌هایی در مورد کدهایی است که می‌توانند برای کارآمدتر یا خوانایی‌تر مجدداً اصلاح شوند.

4. هشدار: این بخش حاوی پیام هایی در مورد مشکلات احتمالی است، مانند استفاده از کد منسوخ شده یا استفاده از متغیرهایی که تعریف نشده اند.

5. خطا: این بخش حاوی پیام هایی در مورد خطاهای واقعی است، مانند خطاهای نحوی یا استفاده از متغیرهای تعریف نشده.

6. متفرقه: این بخش حاوی پیام هایی است که در هیچ یک از دسته بندی های دیگر قرار نمی گیرند.

 

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

این گزارش همچنین شامل خلاصه ای از تعداد پیام ها برای هر دسته و برای هر نماد است.

Pylint یک ابزار است و خروجی همیشه درست نیست. توصیه می شود قبل از ایجاد هر گونه تغییری، خروجی را مرور کرده و زمینه مسائل را درک کنید.

ویدیو پیشنهادی: مدیریت حافظه و ماژول gc در پایتون

# سفارشی کردن قوانین pylint

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

خوشبختانه، Pylint به شما این امکان را می دهد که قوانین خود را برای مطابقت بهتر با نیازهای خود سفارشی کنید. چندین راه برای سفارشی کردن قوانین Pylint وجود دارد:

 

1. استفاده از فایل پیکربندی: Pylint می‌تواند یک فایل پیکربندی را بخواند که مشخص می‌کند کدام قوانین فعال یا غیرفعال شود و همچنین تنظیمات دیگر. فایل های پیکربندی را می توان با استفاده از گزینه –rcfile هنگام اجرای Pylint مشخص کرد.

2. استفاده از گزینه های خط فرمان: می توانید از گزینه های خط فرمان برای فعال یا غیرفعال کردن قوانین خاص یا تغییر تنظیمات دیگر استفاده کنید. به عنوان مثال، می‌توانید از گزینه –disable برای غیرفعال کردن قوانین خاص یا –enable برای فعال کردن قوانین خاص استفاده کنید.

3. استفاده از کامنت درون خطی: می توانید از کامنت درون خطی در کد خود برای فعال یا غیرفعال کردن قوانین خاص برای بخش خاصی از کد استفاده کنید. به عنوان مثال، می توانید از نظر زیر برای غیرفعال کردن یک قانون خاص برای خط بعدی کد استفاده کنید:

# pylint: disable=rule-name

4. ایجاد بررسی‌کننده سفارشی: اگر قوانین داخلی مطابق با نیازهای شما نیست، می توانید بررسی کننده‌های سفارشی خود را ایجاد کنید. بررسی کننده‌های سفارشی را می توان به عنوان یک کلاس پایتون ایجاد کرد که از کلاس pylint.checkers.BaseChecker به ارث برد و روش های خاصی را برای بررسی مسائل خاص پیاده سازی می کند.

هنگامی که قوانین Pylint را سفارشی می کنید، باید با بهترین شیوه های کدنویسی آشنا شوید. همچنین، باید با قوانین خاصی که سفارشی می کنید آشنا باشید و پیامدهای غیرفعال کردن یا تغییر آن قوانین را درک کنید.

دوره پیشنهادی: دوره آموزش asyncio در پایتون

# مقایسه pylint و IDE

Pycharm و Visual Studio Code هر دو محیط توسعه یکپارچه محبوب (IDE) برای توسعه Python هستند و هر دو با پشتیبانی داخلی از linting ارائه می شوند. لینتینگ در این IDE ها شبیه به استفاده از Pylint است، اما برخی تفاوت های کلیدی وجود دارد که باید در نظر گرفته شود.

 

1. ابزار داخلی در مقابل ابزار خارجی: Pylint یک ابزار خارجی است که باید به طور جداگانه نصب شود، در حالی که linting در Pycharm و Visual Studio Code داخلی است. این بدان معنی است که برای استفاده از linting در این IDE ها نیازی به نصب هیچ چیز اضافی ندارید.

2. سفارشی سازی: Pylint امکان سفارشی سازی بیشتری را نسبت به ابزارها داخلی در Pycharm و Visual Studio Code می دهد. به عنوان مثال، Pylint به شما امکان می دهد بررسی کننده های سفارشی ایجاد کنید، در حالی که این امکان با ابزار داخلی در این IDE ها وجود ندارد.

3. یکپارچه سازی: Pylint را می توان با ابزارهای دیگر مانند سیستم های یکپارچه سازی پیوسته ادغام کرد، در حالی که lint داخلی در Pycharm و ویژوال استودیو مستقیماً با IDE ادغام می شود.

4. پیکربندی: پیکربندی Pylint از طریق گزینه های خط فرمان یا با ایجاد یک فایل پیکربندی انجام می شود. پیکربندی PyCharm و Visual Studio Code از طریق تنظیمات یا ترجیحات IDE انجام می شود.

5. پیام های خطا و هشدار: Pylint و ابزار داخلی در Pycharm و Visual Studio Code از فرمت های مختلفی برای پیام های خطا و هشدار استفاده می کنند. این می تواند جابجایی بین استفاده از Pylint و ابزار داخلی در این IDE ها را دشوار کند.

 

به طور خلاصه، Pylint یک ابزار قدرتمند است که می‌تواند در ارتباط با Pycharm و Visual Studio Code استفاده شود، اما پشتیبانی داخلی در این IDE‌ها می‌تواند راحت‌تر باشد. این در نهایت به نیازهای خاص پروژه شما و میزان سفارشی سازی شما بستگی دارد.

ویدیوهای مشابه



ویدیو آموزش middleware در جنگو
امیرحسین بیگدلو

ارسال نظر


محمد

8 ماه قبل پاسخ به نظر

یه پیشنهاد داشتم
میتونید واسه ویدئو های تک قسمتی و مقالات یه گزینه به اسم خوانده شده پیاده کنین که وقتی اونو می‌بینیم تیکشو بزنیم و بتونیم بر این اساس مرتب کنیم

ارسال نظر



امیرحسین بیگدلو

8 ماه قبل

سلام
پیشنهادتون رد میشه :|


قبلی

8 ماه قبل

:/


حمید

2 ماه قبل

موافقان دستها بالا

۱۰۰۰۰۰۰۰۰۰۰ رای مثبت دیگر تا پیگیری در صحن مجلس

محمد

8 ماه قبل پاسخ به نظر

سلام استاد ببخشید این آپشن pep8 توی پایچارم که میگه کجای کد تمیز نیست توی vscode چجوری و کجا هستش ؟

ارسال نظر



امیرحسین بیگدلو

8 ماه قبل

سلام
نمیدونم، من vscode استفاده نمیکنم.

Hessam

9 ماه قبل پاسخ به نظر

سلام استاد لطفا درباره ماژول click هم یه ویدیو قرار بده

ارسال نظر



امیر

9 ماه قبل پاسخ به نظر

سلام یه ویدیو هم راجب clean code بزارین

ارسال نظر



محمدرضا

9 ماه قبل پاسخ به نظر

سلام
ببخشید یه ویدیو بود که برای دپلوی کردن در فندوق بود, حذفش کردید ؟
میخواستم سوالم رو زیر اون بپرسم - ولی پیدا نکردمش پس اینجا میپرسم

اینی که میگن چنتا instance از اپلیکیشنمون میاریم بالا وقتی تعداد درخواست ها میره بالا, دقیقا یعنی چی ؟
مثلا تو لیارا چطور میشه همچین کاری کرد ؟
اینکار فقط مربوط به خود اپلیکیشن جنگویی میشه یا برای دیتابیس و rabbitmq و اینا هم به همین شکله ؟

ممکنه یه ویدیو بسازید براش ؟ یکم بحثش گنگه که یعنی چی چنتا instance از اپلیکیشن میارن بالا

تشکر

ارسال نظر



امیرحسین بیگدلو

9 ماه قبل

سلام
بله، اون ویدیو حذف شده.
توی اینترنت در رابطه با مفهوم کلاستر (cluster) جستجو کنید.

SAMAN021

9 ماه قبل پاسخ به نظر

سلام. عالی بود فقط برای اطلاعات بیشتر و عمیق شدن تو این مبحث منابع خوبی می تونید معرفی کنید؟؟

ارسال نظر



امیرحسین بیگدلو

9 ماه قبل

سلام
میتونید مستندات pylint رو مطالعه کنید

soreka

9 ماه قبل پاسخ به نظر

سلام
لطفا یک آموزش تک قسمتی هم در خصوص ContextVar در پایتون بذارید.
امروز میگشتم دیدم هیچ سایت فارسی زبانی بهش اشاره نکرده

ارسال نظر



شهاب

9 ماه قبل پاسخ به نظر

مرسی عزیزم
عالی بود
اون ruff که گفتی - توی automation test تو CI/CD میتونیم استفاده کنیم ؟ یا باید یجور دیگه استفاده کنیم ؟

ارسال نظر



مونگارد