'\" t .\" Man page generated from reStructuredText .\" by the Docutils 0.23 manpage writer. . . .nr rst2man-indent-level 0 . .de1 rstReportMargin \\$1 \\n[an-margin] level \\n[rst2man-indent-level] level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] - \\n[rst2man-indent0] \\n[rst2man-indent1] \\n[rst2man-indent2] .. .de1 INDENT .\" .rstReportMargin pre: . RS \\$1 . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] . nr rst2man-indent-level +1 .\" .rstReportMargin post: .. .de UNINDENT . RE .\" indent \\n[an-margin] .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] .nr rst2man-indent-level -1 .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. .TH "PYLINT" "1" "Aug 10, 2026" "4.0" "Pylint" .SH "نام (NAME)" pylint \- مستندات Pylint [تصویر] \%[تصویر] \%[تصویر: نسخه بسته PyPI] [تصویر] \%[تصویر: وضعیت مستندات] [تصویر] \%[تصویر] \%[تصویر] \%[تصویر: وضعیت pre-commit.ci] [تصویر] \%[تصویر: بهترین شیوه‌های CII] [تصویر] \%[تصویر: کارت امتیاز OpenSSF] [تصویر] \%[تصویر: Discord] [تصویر] \% .SH "پایلینت چیست؟ (WHAT IS PYLINT?)" .sp Pylint یک تحلیل‌گر ایستای کد \% برای Python 2 یا Python 3 است. آخرین نسخه از Python 3.10.0 و بالاتر پشتیبانی می‌کند. .sp Pylint کد شما را بدون اجرای واقعی آن تحلیل می‌کند. این ابزار خطاها را بررسی می‌کند، استانداردهای کدنویسی را اعمال می‌نماید، به دنبال بوی کد (code smells) \% می‌گردد و می‌تواند پیشنهادهایی دربارهٔ چگونگی بازآرایی (refactor) کد ارائه دهد. .SH "نصب (INSTALL)" .sp برای استفاده در خط فرمان، pylint به صورت زیر نصب می‌شود: .INDENT 0.0 .INDENT 3.5 .sp .EX pip install pylint .EE .UNINDENT .UNINDENT .sp یا اگر می‌خواهید املای واژگان را نیز با \fBenchant\fP بررسی کنید (ممکن است لازم باشد کتابخانه C مربوط به enchant را نصب کنید \%): .INDENT 0.0 .INDENT 3.5 .sp .EX pip install pylint[spelling] .EE .UNINDENT .UNINDENT .sp همچنین می‌توان آن را با بیشتر ویرایشگرها یا IDEها یکپارچه کرد. اطلاعات بیشتر را می‌توانید در مستندات \%\& بیابید..SH "چه چیزی PYLINT را متمایز می‌کند؟ (WHAT DIFFERENTIATES PYLINT?)" .sp ابزار Pylint به تعیین نوع (typing) شما اعتماد نمی‌کند و مقادیر واقعی گره‌ها را با استفاده از نمایش کد داخلی خود (astroid) استنتاج می‌کند (در وهله اول به این دلیل که وقتی pylint آغاز به کار کرد، هنوز نوع‌بندی در پایتون وجود نداشت). اگر کد شما به صورت \fBimport logging as argparse\fP باشد، Pylint می‌تواند بررسی کرده و متوجه شود که \fBargparse.error(...)\fP در واقع یک فراخوانی از logging است و نه فراخوانی argparse. این امر pylint را کندتر می‌کند، اما همچنین به آن اجازه می‌دهد در صورتی که کد شما به طور کامل تعیین نوع نشده باشد، مشکلات بیشتری را بیابد. .INDENT 0.0 .INDENT 3.5 [استنتاج] ویژگی کلیدی و تعیین‌کننده‌ای است که باعث می‌شود با وجود کُندی دردناکش، همچنان از [pylint] در پروژه‌مان استفاده کنیم. \- یک کاربر واقع‌بین pylint \%، 2022 .UNINDENT .UNINDENT .sp ابزار pylint که هراسی از کمی کندتر بودن نسبت به وضعیت فعلی‌اش ندارد، بسیار دقیق‌تر و جامع‌تر از سایر لینترها عمل می‌کند. بررسی‌های بیشتری در آن گنجانده شده است، از جمله برخی بررسی‌های سلیقه‌ای (opinionated) که به صورت پیش‌فرض غیرفعال هستند اما می‌توان با استفاده از پیکربندی آن‌ها را فعال کرد. .SH "نحوه استفاده از PYLINT (HOW TO USE PYLINT)" .sp ابزار Pylint باهوش‌تر از شما نیست: ممکن است درباره مواردی به شما هشدار دهد که آگاهانه انجام داده‌اید یا مواردی را بررسی کند که برایتان اهمیتی ندارند. در زمان به‌کارگیری، به‌ویژه در یک پروژه قدیمی (legacy) که pylint هرگز در آن اعمال نشده بود، بهتر است کار را با پرچم \fB\-\-errors\-only\fP آغاز کنید، سپس پیام‌های مربوط به قراردادها و بازسازی (refactor) را با \fB\-\-disable=C,R\fP غیرفعال نمایید و به تدریج همگام با تحول اولویت‌هایتان، پیام‌ها را بازبینی و مجدداً فعال کنید. .sp ابزار Pylint بسیار پیکربندی‌پذیر است و امکان نگارش پلاگین‌ها را برای افزودن بررسی‌های دلخواهتان (برای نمونه، برای کتابخانه‌های داخلی یا یک قاعده داخلی) فراهم می‌کند. Pylint همچنین دارای زیست‌بومی از پلاگین‌های موجود برای چارچوب‌های محبوب و کتابخانه‌های شخص ثالث است. .sp \fBنکته:\fP .INDENT 0.0 .INDENT 3.5 ابزار Pylint به صورت پیش‌فرض و بی‌درنگ از کتابخانه استاندارد پایتون پشتیبانی می‌کند. کتابخانه‌های شخص ثالث همیشه پشتیبانی نمی‌شوند، بنابراین ممکن است به یک پلاگین نیاز باشد. یک نقطه شروع مناسب \fBPyPI\fP است که اغلب با جستجوی \fBpylint \fP یک پلاگین ارائه می‌دهد. نمونه‌هایی از این دست پلاگین‌ها عبارتند از: pylint\-pydantic \%، pylint\-django \% و pylint\-sonarjson \%\&. اطلاعات بیشتر درباره پلاگین‌ها و نحوه بارگذاری آن‌ها را می‌توانید در plugins \%\& بیابید. .UNINDENT .UNINDENT .SH "لینترهای توصیه‌شده در کنار PYLINT (ADVISED LINTERS ALONGSIDE PYLINT)" .sp پروژه‌هایی که ممکن است بخواهید در کنار pylint استفاده کنید عبارتند از ruff \% (\fBبسیار\fP سریع، به همراه تصحیح خودکار داخلی و تعداد زیادی بررسی برگرفته از لینترهای محبوب، اما پیاده‌سازی‌شده در \fBrust\fP) یا flake8 \% (چارچوبی برای پیاده‌سازی بررسی‌های دلخواهتان در پایتون با استفاده مستقیم از \fBast\fP)، mypy \%، pyright \% / pylance یا pyre \% (بررسی‌های مربوط به تعیین نوع)، bandit \% (بررسی‌های متمرکز بر امنیت)، black \% و isort \% (قالب‌بندی خودکار)، autoflake \% (حذف خودکار واردسازی‌ها یا متغیرهای استفاده‌نشده)، pyupgrade \% (ارتقای خودکار به نحو جدیدتر پایتون) و pydocstringformatter \% (پیاده‌سازی خودکار pep257). .SH "ابزارهای اضافی موجود در PYLINT (ADDITIONAL TOOLS INCLUDED IN PYLINT)" .sp ابزار Pylint همراه با دو ابزار جانبی عرضه می‌شود: .INDENT 0.0 .IP \(bu 2 pyreverse \% (ابزاری مستقل که نمودارهای بسته و کلاس را تولید می‌کند.) .IP \(bu 2 symilar \% (ابزار شناسایی کدهای تکراری که درون pylint نیز ادغام شده است) .UNINDENT .SH "مشارکت (CONTRIBUTING)" .sp ما از تمامی اشکال مشارکت استقبال می‌کنیم؛ مانند به‌روزرسانی مستندات، کدهای جدید، بررسی تکراری نبودن گزارش‌ها (issues) یا اطلاع دادن به ما برای بستن آن‌ها، تأیید اینکه مشکلات همچنان وجود دارند، باز کردن گزارش مشکل به دلیل یافتن یک باگ یا درخواست یک قابلیت \% و غیره. هرگونه مشارکتی بسیار ارزشمند است! .sp لطفاً مرام‌نامه اخلاقی \% را رعایت کرده و اگر مایل به مشارکت کدی هستید، راهنماهای مشارکت‌کنندگان \% را مطالعه نمایید. .SH "نمایش استفاده شما (SHOW YOUR USAGE)" .sp شما می‌توانید این نشان (badge) را در فایل README خود قرار دهید تا دیگران بدانند پروژه شما از pylint استفاده می‌کند. .INDENT 0.0 .INDENT 3.5 [تصویر] \%.UNINDENT .UNINDENT .sp نحوه افزودن نشان به مستندات خود را در مستندات نشان \%\& بیاموزید. .SH "مجوز (LICENSE)" .sp ابزار pylint، به استثنای چند مورد ذکر شده در زیر، تحت GPLv2 \%\& منتشر می‌شود. .sp فایل‌های آیکون تحت پروانه CC BY\-SA 4.0 \% هستند: .INDENT 0.0 .IP \(bu 2 doc/logo.png \% .IP \(bu 2 doc/logo.svg \% .UNINDENT.SH "پشتیبانی (SUPPORT)" .sp لطفاً اطلاعات تماس را در \%\& بررسی کنید. .TS box center; l|l. T{ [تصویر: Tidelift] [تصویر] T} T{ پشتیبانی حرفه‌ای از pylint به‌عنوان بخشی از اشتراک Tidelift \%\& در دسترس است. Tidelift به تیم‌های توسعهٔ نرم‌افزار مرجعی یکپارچه برای خرید و نگهداری نرم‌افزارهایشان با تضمین‌های حرفه‌ای از سوی کارشناسانی که آن را به بهترین شکل می‌شناسند ارائه می‌دهد، در حالی که به‌طور یکپارچه با ابزارهای موجود سازگار است. T} .TE .SS "آموزش (Tutorial)" .sp این آموزش تماماً دربارهٔ مواجهه با استانداردهای کدنویسی، با دانش اندک یا بدون داشتن شناختی عمیق از برنامه‌نویسی یا خود استانداردهای کد است. این کار معادل نادیده گرفتن دفترچهٔ راهنما و پریدن مستقیم به میان کار است. .sp اعلان خط فرمان برای این مثال‌ها بدین صورت است: .INDENT 0.0 .INDENT 3.5 .sp .EX tutor Desktop$ .EE .UNINDENT .UNINDENT .SS "شروع به کار (Getting Started)" .sp اجرای Pylint با آرگومان‌های \fB\-\-help\fP دیدی کلی از آرگومان‌های موجود به شما می‌دهد. این کار را اکنون انجام دهید، مانند: .INDENT 0.0 .INDENT 3.5 .sp .EX pylint \-\-help .EE .UNINDENT .UNINDENT .sp برخی از گزینه‌هایی که در اینجا بر آن‌ها تمرکز خواهیم کرد عبارتند از: .INDENT 0.0 .INDENT 3.5 .sp .EX Commands: \-\-help\-msg= \-\-generate\-toml\-config Messages control: \-\-disable= Reports: \-\-reports= \-\-output\-format= .EE .UNINDENT .UNINDENT .sp اگر به جزئیات بیشتری نیاز دارید، می‌توانید پیام راهنمای حتی طولانی‌تری را درخواست کنید: .INDENT 0.0 .INDENT 3.5 .sp .EX pylint \-\-long\-help .EE .UNINDENT .UNINDENT .sp به بخش پایانی خروجی این راهنمای طولانی‌تر دقت کنید. این بخش به شما نشان می‌دهد که Pylint قرار است به چه مواردی \fBایراد بگیرد\fP: .INDENT 0.0 .INDENT 3.5 .sp .EX Output: Using the default text output, the message format is : MESSAGE_TYPE: LINE_NUM:[OBJECT:] MESSAGE There are 5 kind of message types : * (C) convention, for programming standard violation * (R) refactor, for bad code smell * (W) warning, for python specific problems * (E) error, for probable bugs in the code * (F) fatal, if an error occurred which prevented pylint from doing further processing. .EE .UNINDENT .UNINDENT .sp هنگامی که Pylint برای نخستین بار روی یک قطعه کد تازه اجرا می‌شود، یک شکایت رایج این است که بیش از حد \fBپرسروصدا\fP\& (noisy) است. پیکربندی پیش‌فرض هشدارهای زیادی را اعمال می‌کند. ما از برخی گزینه‌هایی که در بالا اشاره کردیم استفاده خواهیم کرد تا آن را کمی بیشتر با ترجیحات شما سازگار کنیم..SS "نخستین اجرای Pylint (Your First Pylint\(aqing)" .sp ما از یک اسکریپت پایه پایتون که ابزار black \% از قبل روی آن اعمال شده است، به‌عنوان محتوای نمونه برای آموزش خود استفاده خواهیم کرد. کد آغازی که به کار خواهیم برد \fBsimplecaesar.py\fP نام دارد و در اینجا به‌صورت کامل آورده شده است: .INDENT 0.0 .INDENT 3.5 .sp .EX #!/usr/bin/env python3 import string shift = 3 choice = input(\(dqwould you like to encode or decode?\(dq) word = input(\(dqPlease enter text\(dq) letters = string.ascii_letters + string.punctuation + string.digits encoded = \(dq\(dq if choice == \(dqencode\(dq: for letter in word: if letter == \(dq \(dq: encoded = encoded + \(dq \(dq else: x = letters.index(letter) + shift encoded = encoded + letters[x] if choice == \(dqdecode\(dq: for letter in word: if letter == \(dq \(dq: encoded = encoded + \(dq \(dq else: x = letters.index(letter) \- shift encoded = encoded + letters[x] print(encoded) .EE .UNINDENT .UNINDENT .sp بیایید شروع کنیم. اگر این دستور را اجرا کنیم: .INDENT 0.0 .INDENT 3.5 .sp .EX tutor Desktop$ pylint simplecaesar.py ************* Module simplecaesar simplecaesar.py:1:0: C0114: Missing module docstring (missing\-module\-docstring) simplecaesar.py:5:0: C0103: Constant name \(dqshift\(dq doesn\(aqt conform to UPPER_CASE naming style (invalid\-name) simplecaesar.py:8:0: C0103: Constant name \(dqletters\(dq doesn\(aqt conform to UPPER_CASE naming style (invalid\-name) simplecaesar.py:9:0: C0103: Constant name \(dqencoded\(dq doesn\(aqt conform to UPPER_CASE naming style (invalid\-name) simplecaesar.py:13:12: C0103: Constant name \(dqencoded\(dq doesn\(aqt conform to UPPER_CASE naming style (invalid\-name) simplecaesar.py:15:12: C0103: Constant name \(dqx\(dq doesn\(aqt conform to UPPER_CASE naming style (invalid\-name) simplecaesar.py:16:12: C0103: Constant name \(dqencoded\(dq doesn\(aqt conform to UPPER_CASE naming style (invalid\-name) simplecaesar.py:20:12: C0103: Constant name \(dqencoded\(dq doesn\(aqt conform to UPPER_CASE naming style (invalid\-name) simplecaesar.py:22:12: C0103: Constant name \(dqx\(dq doesn\(aqt conform to UPPER_CASE naming style (invalid\-name) simplecaesar.py:23:12: C0103: Constant name \(dqencoded\(dq doesn\(aqt conform to UPPER_CASE naming style (invalid\-name) \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- Your code has been rated at 4.74/10 .EE .UNINDENT .UNINDENT .sp می‌توانیم ببینیم که خط دوم چنین است: .INDENT 0.0 .INDENT 3.5 .sp .EX \(dqsimplecaesar.py:1:0: C0114: Missing module docstring (missing\-module\-docstring)\(dq .EE .UNINDENT .UNINDENT .sp این موضوع اساساً بدین معناست که سطر ۱ در ستون ۰ از قرارداد \fBC0114\fP\& عدول کرده است. بخش دیگری از اطلاعات، نماد پیام در میان پرانتزها، یعنی \fBmissing\-module\-docstring\fP\& است. .sp اگر بخواهیم کمی بیشتر در این باره مطالعه کنیم، می‌توانیم به خط فرمان بازگردیم و این دستور را امتحان کنیم: .INDENT 0.0 .INDENT 3.5 .sp .EX tutor Desktop$ pylint \-\-help\-msg=missing\-module\-docstring :missing\-module\-docstring (C0114): *Missing module docstring* Used when a module has no docstring.Empty modules do not require a docstring. This message belongs to the basic checker. .EE .UNINDENT .UNINDENT .sp این مورد کاملاً ساده و بدیهی بود، اما ممکن است با پیام‌های خطایی نیز روبرو شویم که با مفاهیم نظری کدِ مربوط به آن‌ها آشنایی نداشته باشیم..SS گام بعدی .sp حال که برخی از موارد پیکربندی را پشت سر گذاشتیم، بیایید ببینیم با هشدارهای باقی‌مانده چه کار می‌توانیم بکنیم. اگر یک docstring برای توصیف کاری که کد قرار است انجام دهد اضافه کنیم، کمک خواهد کرد. پیام‌های \fBinvalid\-name\fP وجود دارند که بعداً به آن‌ها خواهیم پرداخت. در اینجا کد به‌روزشده آمده است: .INDENT 0.0 .INDENT 3.5 .sp .EX #!/usr/bin/env python3 \(dq\(dq\(dqThis script prompts a user to enter a message to encode or decode using a classic Caesar shift substitution (3 letter shift)\(dq\(dq\(dq import string shift = 3 choice = input(\(dqwould you like to encode or decode?\(dq) word = input(\(dqPlease enter text\(dq) letters = string.ascii_letters + string.punctuation + string.digits encoded = \(dq\(dq if choice == \(dqencode\(dq: for letter in word: if letter == \(dq \(dq: encoded = encoded + \(dq \(dq else: x = letters.index(letter) + shift encoded = encoded + letters[x] if choice == \(dqdecode\(dq: for letter in word: if letter == \(dq \(dq: encoded = encoded + \(dq \(dq else: x = letters.index(letter) \- shift encoded = encoded + letters[x] print(encoded) .EE .UNINDENT .UNINDENT .sp در ادامه آنچه هنگام اجرای آن رخ می‌دهد آمده است: .INDENT 0.0 .INDENT 3.5 .sp .EX tutor Desktop$ pylint simplecaesar.py ************* Module simplecaesar simplecaesar.py:8:0: C0103: Constant name \(dqshift\(dq doesn\(aqt conform to UPPER_CASE naming style (invalid\-name) simplecaesar.py:11:0: C0103: Constant name \(dqletters\(dq doesn\(aqt conform to UPPER_CASE naming style (invalid\-name) simplecaesar.py:12:0: C0103: Constant name \(dqencoded\(dq doesn\(aqt conform to UPPER_CASE naming style (invalid\-name) simplecaesar.py:16:12: C0103: Constant name \(dqencoded\(dq doesn\(aqt conform to UPPER_CASE naming style (invalid\-name) simplecaesar.py:18:12: C0103: Constant name \(dqx\(dq doesn\(aqt conform to UPPER_CASE naming style (invalid\-name) simplecaesar.py:19:12: C0103: Constant name \(dqencoded\(dq doesn\(aqt conform to UPPER_CASE naming style (invalid\-name) simplecaesar.py:23:12: C0103: Constant name \(dqencoded\(dq doesn\(aqt conform to UPPER_CASE naming style (invalid\-name) simplecaesar.py:25:12: C0103: Constant name \(dqx\(dq doesn\(aqt conform to UPPER_CASE naming style (invalid\-name) simplecaesar.py:26:12: C0103: Constant name \(dqencoded\(dq doesn\(aqt conform to UPPER_CASE naming style (invalid\-name) \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- Your code has been rated at 5.26/10 (previous run: 4.74/10, +0.53) .EE .UNINDENT .UNINDENT .sp عالی است! Pylint به ما نشان داد که امتیاز کدمان از آخرین اجرا چقدر بهبود یافته است، و اکنون تنها پیام‌های \fBinvalid\-name\fP باقی مانده‌اند. .sp قراردادهای نسبتاً مشخصی پیرامون نام‌گذاری مواردی چون متغیرهای نمونه، توابع، کلاس‌ها و غیره وجود دارد. این قراردادها بر استفاده از حروف بزرگ (UPPERCASE) و کوچک (lowercase) و همچنین نویسه‌های جداکننده چند کلمه در نام تمرکز دارند. این مسئله برای بررسی از طریق عبارت باقاعده (regular expression) بسیار مناسب است، از این رو عبارت \fBshould match (([A\-Z_][A\-Z1\-9_]*)|(__.*__))$\fP\& مطرح می‌شود. .sp در این حالت Pylint به ما می‌گوید که این متغیرها ثابت (constant) به نظر می‌رسند و باید تماماً با حروف بزرگ باشند. این یک قرارداد داخلی است که از بدو پیدایش Pylint همراه آن بوده است. شما نیز می‌توانید قراردادهای نام‌گذاری داخلی خود را ایجاد کنید اما برای اهداف این راهنما، می‌خواهیم به استاندارد PEP 8 \% پایبند باشیم. در این مورد، متغیرهایی که تعریف کردیم باید از قرارداد حروف تماماً کوچک پیروی کنند. قاعده مناسب چیزی شبیه به این خواهد بود: \(dqshould match [a\-z_][a\-z0\-9_]{2,30}$\(dq. به حروف کوچک در عبارت باقاعده (a\-z در مقابل A\-Z) توجه کنید. .sp اگر این قاعده را با استفاده از گزینه \fB\-\-const\-rgx=\(aq[a\-z\e_][a\-z0\-9\e_]{2,30}$\(aq\fP اجرا کنیم، اکنون خروجی بسیار ساکت‌تر خواهد بود: .INDENT 0.0 .INDENT 3.5 .sp .EX tutor Desktop$ pylint simplecaesar.py \-\-const\-rgx=\(aq[a\-z\e_][a\-z0\-9\e_]{2,30}$\(aq ************* Module simplecaesar simplecaesar.py:18:12: C0103: Constant name \(dqx\(dq doesn\(aqt conform to \(aq[a\-z\e\e_][a\-z0\-9\e\e_]{2,30}$\(aq pattern (invalid\-name) simplecaesar.py:25:12: C0103: Constant name \(dqx\(dq doesn\(aqt conform to \(aq[a\-z\e\e_][a\-z0\-9\e\e_]{2,30}$\(aq pattern (invalid\-name) \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- Your code has been rated at 8.95/10 (previous run: 5.26/10, +3.68) .EE .UNINDENT .UNINDENT .sp می‌توانید درباره عبارات باقاعده در \% مطالعه کنید یا از وب‌سایتی مانند \%\& برای کمک گرفتن استفاده نمایید. .sp \fBنکته:\fP .INDENT 0.0 .INDENT 3.5 مشخص کردن مداوم این عبارت باقاعده در خط فرمان واقعاً دردسرساز خواهد بود، به‌ویژه اگر از گزینه‌های بسیار دیگری نیز استفاده کنیم. فایل پیکربندی دقیقاً برای همین منظور است. می‌توانیم Pylint را به گونه‌ای پیکربندی کنیم که گزینه‌هایمان را برای ما ذخیره کند تا مجبور نباشیم آن‌ها را در خط فرمان تعریف کنیم. استفاده از یک فایل پیکربندی روش مناسبی برای رسمی کردن قواعد شما و اشتراک‌گذاری سریع آن‌ها با دیگران است. اجرای \fBpylint \-\-generate\-toml\-config\fP یک بخش نمونه \fB\&.toml\fP با تمام گزینه‌های تنظیم‌شده و توضیح داده‌شده در کامنت‌ها ایجاد می‌کند. سپس می‌توان این بخش را به فایل \fBpyproject.toml\fP خود یا هر فایل \fB\&.toml\fP دیگری که با گزینه \fB\-\-rcfile\fP مشخص شده اضافه کرد. .UNINDENT .UNINDENT.SS "نصب (Installation)" .sp Pylint را می‌توان به روش‌های زیر نصب کرد: .INDENT 0.0 .IP \(bu 2 به عنوان یک ابزار خط فرمان \%<#\:installation> .IP \(bu 2 یکپارچه‌شده در ویرایشگر یا IDE شما \%<#\:ide-integration> .IP \(bu 2 به عنوان یک قلاب pre\-commit \%<#\:pre-commit-integration> .IP \(bu 2 برای چندین مفسر python در یکپارچه‌سازی مداوم (CI) شما \%<#\:continuous-integration> .UNINDENT .SS "نصب از خط فرمان (Command line installation)" .sp Pylint با استفاده از یک مدیر بسته قابل نصب است. مدیر بستهٔ شما نسخه‌ای سازگار با مفسر شما را پیدا خواهد کرد. ما \fBpip\fP را توصیه می‌کنیم: .INDENT 0.0 .INDENT 3.5 .sp .EX pip install pylint .EE .UNINDENT .UNINDENT .sp یا اگر می‌خواهید املا را نیز با \fBenchant\fP بررسی کنید (ممکن است به نصب کتابخانهٔ C مربوط به enchant نیاز داشته باشید \%): .INDENT 0.0 .INDENT 3.5 .sp .EX pip install pylint[spelling] .EE .UNINDENT .UNINDENT .sp جدیدترین نسخهٔ pylint از تمام مفسرهای Python که پایان عمرشان فرانرسیده است پشتیبانی می‌کند. .sp ما استفاده از آخرین مفسر را توصیه می‌کنیم زیرا به ماژول توکار \fBast\fP متکی هستیم که با هر مفسر جدید Python بهبود می‌یابد. به عنوان مثال، یک مفسر Python 3.6 نمی‌تواند نحو 3.8 را تحلیل کند (به ویژه به دلیل عملگر جدید walrus)، در حالی که یک مفسر 3.8 می‌تواند با Python 3.6 نیز کار کند. برای جزئیات بیشتر به بخش استفاده از pylint با چندین مفسر \%<#\:continuous-integration> مراجعه کنید. .sp \fBنکته:\fP .INDENT 0.0 .INDENT 3.5 شما همچنین می‌توانید از \fBconda\fP یا مدیر بستهٔ سیستم خود در سیستم‌عامل‌های مبتنی بر debian استفاده کنید. این مدیر بسته‌ها کمی عقب‌تر هستند چرا که توسط نهادی جداگانه با چرخهٔ انتشار کندتری نگهداری می‌شوند. .INDENT 0.0 .INDENT 3.5 .sp .EX conda install pylint .EE .UNINDENT .UNINDENT .INDENT 0.0 .INDENT 3.5 .sp .EX sudo apt\-get install pylint .EE .UNINDENT .UNINDENT .UNINDENT .UNINDENT .SS "یکپارچه‌سازی با ویرایشگر و IDE (Editor and IDE integration)" .sp Pylint را می‌توان در ویرایشگرها و IDEهای گوناگون ادغام کرد. در زیر می‌توانید راهنماهایی را برای برخی از متداول‌ترین آن‌ها پیدا کنید. .INDENT 0.0 .IP \(bu 2 Eclipse \% .IP \(bu 2 Emacs \% .IP \(bu 2 Eric IDE \% در منوی \fIProject > Check\fP، .IP \(bu 2 gedit \% (گزینه‌ای دیگر برای gedit \%) .IP \(bu 2 Flymake \%<#\:pylint-in-flymake> .IP \(bu 2 Jupyter Notebook \% .IP \(bu 2 Komodo \% .IP \(bu 2 Pycharm \% .IP \(bu 2 PyDev \% .IP \(bu 2 pyscripter \% در منوی \fITool \-> Tools\fP. .IP \(bu 2 Spyder \% در منوی \fIView \-> Panes \-> Static code analysis\fP .IP \(bu 2 Sublime Text \% .IP \(bu 2 TextMate \%<#\:pylint-in-textmate> .IP \(bu 2 Vim \% .IP \(bu 2 Visual Studio Code \% در منوی \fIPreferences \-> Settings\fP .IP \(bu 2 Visual Studio Code Pylint Extension \% .IP \(bu 2 Visual Studio \% در دستور \fIPython > Run PyLint\fP در منوی زمینه‌ای (context menu) یک پروژه. .IP \(bu 2 WingIDE \% .UNINDENT.SS استفاده از Pylint از طریق Flymake در Emacs .sp \fBهشدار:\fP .INDENT 0.0 .INDENT 3.5 ابزار epylint در نسخهٔ 2.16.0 منسوخ شد و برای حذف در نسخهٔ 3.0.0 در نظر گرفته شده است. تمام فایل‌های مرتبط با emacs و flymake حذف شدند و پشتیبانی از آن‌ها اکنون در یک مخزن خارجی انجام خواهد شد: \%\&. .UNINDENT .UNINDENT .SS یکپارچه‌سازی Pylint با TextMate .sp Pylint را به روش معمول نصب کنید: .INDENT 0.0 .INDENT 3.5 .sp .EX pip install pylint .EE .UNINDENT .UNINDENT .sp بستهٔ Python را برای TextMate نصب کنید \%: .INDENT 0.0 .IP 1. 3 مسیر \fITextMate\fP > \fIPreferences\fP را انتخاب کنید .IP 2. 3 برگهٔ \fIBundles\fP را انتخاب کنید .IP 3. 3 بستهٔ \fIPython\fP را در فهرست پیدا کرده و تیک بزنید .UNINDENT .sp اکنون باید آن را در \fIBundles\fP > \fIPython\fP مشاهده کنید\&. .sp در \fIPreferences\fP، برگهٔ \fIVariables\fP را انتخاب کنید. اگر متغیر \fBTM_PYCHECKER\fP از پیش در فهرست نیست، آن را با مقدار \fBpylint\fP اضافه کنید\&. .sp میان‌بر پیش‌فرض صفحه‌کلید برای اجرای بررسی‌کننده نحو (syntax checker) کلیدهای \fIControl\-Shift\-V\fP است \- یک فایل \fB\&.py\fP را در Textmate باز کرده و آن را آزمایش کنید. .sp باید خروجی را در یک پنجرهٔ جدید ببینید: .INDENT 0.0 .INDENT 3.5 PyCheckMate 1.2 – Pylint 1.4.4 .sp No config file found, using default configuration .UNINDENT .UNINDENT .sp آنگاه همه چیز روبه‌راه است و به احتمال زیاد Pylint نکاتی را دربارهٔ کد پایتون شما گوشزد کرده است (یا اگر کد شما از قبل با انتظارات آن مطابقت داشته باشد، با وضعیت \fB0\fP خارج خواهد شد). .sp اگر پیامی به این صورت دریافت کردید: .INDENT 0.0 .INDENT 3.5 Please install PyChecker, PyFlakes, Pylint, PEP 8 or flake8 for more extensive code checking. .UNINDENT .UNINDENT .sp این پیام یعنی Pylint پیدا نشد، که احتمالاً ناشی از مشکلی در مسیرهای دستور است \- TextMate باید در مسیرهای درستی به دنبال Pylint بگردد. .sp با استفاده از دستور \fBwhich\fP بررسی کنید که Pylint در کجا نصب شده است: .INDENT 0.0 .INDENT 3.5 .sp .EX $ which pylint /usr/local/bin/pylint .EE .UNINDENT .UNINDENT .sp خروجی به شما خواهد گفت که Pylint کجا قرار دارد؛ در این مورد، در \fB/usr/local/bin\fP\&. .INDENT 0.0 .IP 1. 3 مسیر \fITextMate\fP > \fIPreferences\fP را انتخاب کنید .IP 2. 3 برگهٔ \fIVariables\fP را انتخاب کنید .IP 3. 3 بررسی کنید که متغیر \fBPATH\fP وجود داشته باشد و شامل مسیر مناسب باشد (اگر مسیر Pylint همان‌طور که در بالا آمد \fB/usr/local/bin/pylint\fP باشد، متغیر باید شامل \fB/usr/local/bin\fP باشد). یک نمونهٔ واقعی در این مورد می‌تواند \fB$PATH:/opt/local/bin:/usr/local/bin:/usr/texbin\fP باشد که شامل مسیرهای دیگر نیز می‌شود. .UNINDENT .sp \&... و دوباره اجرای Pylint را امتحان کنید..SS یکپارچه‌سازی با Pre\-commit (Pre\-commit integration) .sp از \fBpylint\fP می‌توان به عنوان یک هوک pre\-commit \% استفاده کرد. با این حال ما استفاده از آن را توصیه نمی‌کنیم، چرا که pylint \-\- با توجه به سرعتش \-\- برای یک کار یکپارچه‌سازی پیوسته (CI) یا هوک \fBpre\-push\fP در git مناسب‌تر است، به‌ویژه اگر مخزن شما بزرگ باشد. .sp از آنجا که \fBpylint\fP برای عملکرد صحیح نیاز به وارد کردن (import) ماژول‌ها و وابستگی‌ها دارد، این هوک تنها با نصب محلی \fBpylint\fP (در محیط شما) کار می‌کند. این بدان معناست که نمی‌توان از آن به همراه \fBpre\-commit.ci\fP استفاده کرد و لازم است موارد زیر را به \fB\&.pre\-commit\-config.yaml\fP خود اضافه کنید: .INDENT 0.0 .INDENT 3.5 .sp .EX \&.. sourcecode:: yaml .EE .UNINDENT .UNINDENT .INDENT 0.0 .INDENT 3.5 .INDENT 0.0 .TP .B ci: skip: [pylint] .UNINDENT .UNINDENT .UNINDENT .sp محدودیت دیگر این است که pylint برای استنتاج بهینهٔ مقادیر واقعی ناشی از فراخوانی‌ها، باید تمام کد شما را به یک‌باره تحلیل کند. اگر تنها بخشی از فایل‌ها به آن داده شوند، ممکن است pylint نوع یک مقدار خاص را تشخیص ندهد و برای آن زیرمجموعه استنتاج ضعیف‌تری ارائه کند. از آنجا که pre\-commit فایل‌های ورودی را به منظور موازی‌سازی پردازش تکه‌بندی (slice) می‌کند، ممکن است نتیجه دچار افت کیفیت شود. همچنین در صورت تغییر مجموعهٔ فایل‌ها، نتیجه ممکن است به شکلی غیرمنتظره متفاوت باشد چرا که برش‌بندی جدید می‌تواند استنتاج را تغییر دهد. بنابراین در صورتی که درستی و قطعیت (تکرارپذیری) برای شما اهمیت بیشتری نسبت به موازی‌سازی دارد، گزینهٔ \fBrequire_serial\fP باید روی \fBtrue\fP تنظیم شود. .sp اگر \fBpylint\fP را به صورت محلی نصب کرده‌اید، می‌توانید آن را به شکل زیر به \fB\&.pre\-commit\-config.yaml\fP بیفزایید: .INDENT 0.0 .INDENT 3.5 .sp .EX \- repo: local hooks: \- id: pylint name: pylint entry: pylint language: system types: [python] require_serial: true args: [ \(dq\-rn\(dq, # Only display messages \(dq\-sn\(dq, # Don\(aqt display the score ] .EE .UNINDENT .UNINDENT .sp می‌توانید همان‌طور که در آموزش \%<#\:tutorial>\& شرح داده شده است، از \fBargs\fP برای ارسال آرگومان‌های خط فرمان استفاده کنید. یک هوک با آرگومان‌های بیشتر می‌تواند شبیه به این باشد: .INDENT 0.0 .INDENT 3.5 .sp .EX \- repo: local hooks: \- id: pylint name: pylint entry: pylint language: system types: [python] args: [ \(dq\-rn\(dq, # Only display messages \(dq\-sn\(dq, # Don\(aqt display the score \(dq\-\-rcfile=pylintrc\(dq, # Link to your config file \(dq\-\-load\-plugins=pylint.extensions.docparams\(dq, # Load an extension ] .EE .UNINDENT .UNINDENT.SS نصب با چندین مفسر .sp امکان تحلیل کدهای نوشته‌شده برای مفسرهای قدیمی‌تر یا چندگانه با استفاده از گزینهٔ \fBpy\-version\fP و تنظیم آن روی قدیمی‌ترین مفسر پشتیبانی‌شده توسط کد شما وجود دارد. برای نمونه، می‌توانید بررسی کنید که هیچ \fBf\-strings\fPی در کد Python 3.5 وجود نداشته باشد در حالی که از Python 3.8 به همراه یک نسخهٔ به‌روز از pylint استفاده می‌کنید، حتی اگر دورهٔ پشتیبانی رسمی (EOL) از Python 3.5 به پایان رسیده باشد و نسخهٔ pylint مورد استفاده شما با آن سازگار نباشد. .sp ما تضمین نمی‌کنیم که \fBpy\-version\fP تا ابد برای تمام مفسرهای منسوخ‌شدهٔ پایتون کار کند (برای نسخه‌های قبل از Python 3.5 احتمالاً کار نخواهد کرد). اگر نسخهٔ جدیدتر برای شما کار نمی‌کند، بهترین pylint در دسترس ممکن است نسخهٔ قدیمی‌تری باشد که با مفسر قدیمی شما کار می‌کند، اما فاقد رفع اشکالات و قابلیت‌های نسخه‌های بعدی خواهد بود. .SS نمایش نشان استفاده .sp می‌توانید این نشان (badge) را در فایل README خود قرار دهید تا دیگران بدانند پروژهٔ شما از pylint استفاده می‌کند. .INDENT 0.0 .INDENT 3.5 [تصویر] \% .UNINDENT .UNINDENT .sp استفاده از نشان در فایل README.md پروژه (یا هر فایل Markdown دیگر): .INDENT 0.0 .INDENT 3.5 .sp .EX [![linting: pylint](https://img.shields.io/badge/linting\-pylint\-yellowgreen)](https://github.com/pylint\-dev/pylint) .EE .UNINDENT .UNINDENT .sp استفاده از نشان در فایل README.rst پروژه (یا هر فایل rst دیگر): .INDENT 0.0 .INDENT 3.5 .sp .EX \&.. image:: https://img.shields.io/badge/linting\-pylint\-yellowgreen :target: https://github.com/pylint\-dev/pylint .EE .UNINDENT .UNINDENT .sp اگر از GitHub Actions استفاده می‌کنید و یکی از گردش‌های کاری CI شما با \(dqname: pylint\(dq آغاز می‌شود، می‌توانید از نشان‌های وضعیت گردش‌کار گیت‌هاب \% برای نمایش وضعیت لحظه‌ای گذراندن موفق pylint در pushهای ارسالی به شاخهٔ پیش‌فرض خود استفاده کنید. برای اطلاعات دقیق‌تر، مستندات را بررسی کنید. .SS ارتقای pylint .sp احتمالاً بهتر است نسخهٔ pylint را در محیط توسعهٔ خود تثبیت کنید تا بتوانید زمان ارتقای هشدارهای pylint را مدیریت نمایید. pylint از نسخه‌بندی معنایی (semver) پیروی می‌کند؛ اما ما نمی‌توانیم تضمین کنیم که خروجی برنامه در بین نسخه‌های مختلف کاملاً یکسان باقی بماند. معنای این امر این است که: .INDENT 0.0 .IP \(bu 2 در \fBانتشارهای وصله‌ای (patch release)\fP (\fB1.2.3\fP)، ما فقط هشدارهای مثبت کاذب (false positives) و خرابی‌ها (crashes) را رفع می‌کنیم. .UNINDENT .sp اگر نسخهٔ فرعی (minor) را ثابت نگه داشته و به یک نسخهٔ وصله‌ای جدید ارتقا دهید، می‌توانید انتظار پیام‌های کمتری را داشته باشید. با این وجود، فعال بودن \fBuseless\-suppression\fP به این معناست که پس از برطرف شدن یک مثبت کاذب که قبلاً آن را غیرفعال کرده بودید، ممکن است یک هشدار جدید \fBuseless\-suppression\fP دریافت کنید. همچنین، اگر کتابخانهٔ مورد استفاده شما ارتقا یافته باشد و رفتار آن نسبت به قبل بهتر یا بدتر تشخیص داده شود، ممکن است پیام‌های جدیدی نیز دریافت کنید. .INDENT 0.0 .IP \(bu 2 در \fBانتشارهای فرعی (minor releases)\fP (\fB1.2.0\fP)، بررسی‌های جدیدی اضافه می‌کنیم، برخی بررسی‌ها را حذف می‌کنیم، مفسرهای پایتون منسوخ‌شده را کنار می‌گذاریم، نسخه‌های اصلی یا فرعی astroid را ارتقا داده و منفی‌های کاذب (false negatives) را رفع می‌کنیم. .UNINDENT .sp در این حالت می‌توانید انتظار تغییرات بسیار بیشتری در خروجی داشته باشید که عمدهٔ آن مربوط به بررسی‌های جدید است. .INDENT 0.0 .IP \(bu 2 در \fBانتشارهای اصلی (major releases)\fP (\fB1.0.0\fP)، باقی بخش‌ها را تغییر می‌دهیم (گزینه‌های pylint، خروجی json، رابط برنامه‌نویسی توسعه و...)، در حالی که همچنان سعی می‌کنیم اختلالات به حداقل ممکن برسد. .UNINDENT .sp در این شرایط ممکن است لازم باشد دستوری را که اجرا می‌کنید یا افزونه و یکپارچه‌سازی ویرایشگر مورد استفادهٔ خود را تغییر دهید. .SS نحوه استفاده .SS اجرای Pylint .SS روی بسته‌های ماژول یا دایرکتوری‌ها .sp ابزار Pylint برای فراخوانی از خط فرمان طراحی شده است. نحوهٔ استفاده بدین صورت است: .INDENT 0.0 .INDENT 3.5 .sp .EX pylint [options] modules_or_packages .EE .UNINDENT .UNINDENT .sp به‌طور پیش‌فرض دستور \fBpylint\fP تنها فهرستی از ماژول‌ها و بسته‌های پایتون را می‌پذیرد. در نسخه‌های قبل از 2.15، تعیین دایرکتوری‌ای که یک بستهٔ صریح نباشد (حاوی \fB__init__.py\fP نباشد) به خطا منجر می‌شود: .INDENT 0.0 .INDENT 3.5 .sp .EX pylint mydir ************* Module mydir mydir/__init__.py:1:0: F0010: error while code parsing: Unable to load file mydir/__init__.py: [Errno 2] No such file or directory: \(aqmydir/__init__.py\(aq (parse\-error) .EE .UNINDENT .UNINDENT .sp بنابراین، در نسخه‌های قبل از 2.15 استفاده از گزینهٔ \fB\-\-recursive=y\fP امکان تحلیل ایستای بسته‌های فضای نام (namespace package) را فراهم می‌کند: .INDENT 0.0 .INDENT 3.5 .sp .EX pylint \-\-recursive=y mydir mymodule mypackage .EE .UNINDENT .UNINDENT .sp این گزینه باعث می‌شود \fBpylint\fP تلاش کند تمام ماژول‌ها (فایل‌های منتهی به پسوند \fB\&.py\fP) و تمام بسته‌های صریح (تمامی دایرکتوری‌های حاوی فایل \fB__init__.py\fP) را شناسایی کند. .sp ابزار Pylint این بسته یا ماژول را \fBوارد (import) نخواهد کرد\fP، اما برای تعیین مکان آن‌ها از ساختار درونی پایتون استفاده می‌کند و به همین دلیل مشمول همان قوانین و پیکربندی‌ها خواهد بود. شما باید به متغیر محیطی \fBPYTHONPATH\fP خود توجه داشته باشید، زیرا تحلیل نسخهٔ نصب‌شدهٔ یک ماژول به جای نسخهٔ در حال توسعهٔ آن یک خطای رایج است..SS روی فایل‌ها (On files) .sp همچنین تحلیل فایل‌های Python، با چند محدودیت، امکان‌پذیر است. برای سهولت کار، در صورتی که بتوان با استفاده از python path نام ماژول را از روی مسیر فایل تشخیص داد، می‌توانید نام فایل را به آن بدهید. چند مثال: .sp دستور \fBpylint mymodule.py\fP باید همیشه کار کند، چرا که دایرکتوری کاری فعلی به‌طور خودکار به ابتدای python path اضافه می‌شود .sp دستور \fBpylint directory/mymodule.py\fP کار خواهد کرد اگر: \fBdirectory\fP یک بستهٔ Python باشد (یعنی شامل یک فایل \fB__init__.py\fP باشد)، یک بستهٔ فضای‌نام ضمنی (implicit namespace package) باشد، یا اگر \fBdirectory\fP در python path قرار داشته باشد. .SS با بسته‌های فضای‌نام ضمنی (With implicit namespace packages) .sp اگر سورس‌های تحلیل‌شده از بسته‌های فضای‌نام ضمنی (PEP 420) استفاده می‌کنند، ریشه(های) سورس باید با استفاده از گزینهٔ \fB\-\-source\-roots\fP مشخص شوند. در غیر این صورت، نام بسته‌ها به اشتباه تشخیص داده می‌شود، زیرا بسته‌های فضای‌نام ضمنی فاقد فایل \fB__init__.py\fP\& هستند. .SS پشتیبانی از تطبیق الگو (Globbing support) .sp همچنین امکان مشخص کردن دایرکتوری‌ها و فایل‌ها با استفاده از الگوهای تطبیق (globbing patterns) وجود دارد: .INDENT 0.0 .INDENT 3.5 .sp .EX pylint [options] packages/*/src .EE .UNINDENT .UNINDENT .SS گزینه‌های خط فرمان (Command line options) .sp پیش از هر چیز، دو گزینهٔ پایه (اما کاربردی) وجود دارد. .INDENT 0.0 .TP .B \-\-version نمایش شمارهٔ نسخهٔ برنامه و خروج .TP .B \-h\fP,\fB \-\-help نمایش راهنما دربارهٔ گزینه‌های خط فرمان .UNINDENT .sp ابزار Pylint بر پایهٔ چندین بررسی‌کننده (checker) معماری شده است. شما می‌توانید یک بررسی‌کنندهٔ خاص یا برخی از پیام‌ها یا دسته‌های پیام آن را با مشخص کردن \fB\-\-disable=\fP\& غیرفعال کنید. اگر می‌خواهید تنها برخی از بررسی‌کننده‌ها یا برخی از نمادهای پیام را فعال کنید، ابتدا از \fB\-\-disable=all\fP و سپس از \fB\-\-enable=\fP استفاده کنید که در آن \fB\fP فهرستی از نام‌های بررسی‌کننده و نمادهای پیام جداشده با کاما است. برای شرح بررسی‌کننده‌های ارائه‌شده همراه با قابلیت‌هایشان، فهرست ویژگی‌های موجود را ببینید. گزینه‌های \fB\-\-disable\fP و \fB\-\-enable\fP را می‌توان با فهرست‌های جداشده با کاما شامل ترکیبی از بررسی‌کننده‌ها، شناسه‌های پیام و دسته‌ها مانند \fB\-d C,W,no\-error,design\fP به کار برد .sp غیرفعال کردن همهٔ پیام‌ها با \fB\-\-disable=all\fP\& امکان‌پذیر است. این کار برای فعال کردن تنها چند بررسی‌کننده یا چند پیام، با ابتدا غیرفعال کردن همه‌چیز و سپس فعال‌سازی دوبارهٔ تنها مواردی که نیاز دارید، کاربردی است. .sp هر بررسی‌کننده گزینه‌های خاصی دارد که می‌توانند یک مقدار yes/no، یک عدد صحیح، یک عبارت باقاعدهٔ Python، یا فهرستی از مقادیر جداشده با کاما (که عموماً برای بازنویسی یک عبارت باقاعده در شرایط خاص استفاده می‌شوند) دریافت کنند. برای فهرست کامل گزینه‌ها، از \fB\-\-help\fP استفاده کنید .sp مشخص کردن تمام گزینه‌های مناسب برای پیکربندی و استانداردهای کدنویسی شما می‌تواند خسته‌کننده باشد؛ بنابراین می‌توان از یک فایل پیکربندی برای تعیین مقادیر پیش‌فرض استفاده کرد. می‌توانید یک فایل پیکربندی را در خط فرمان با استفاده از گزینهٔ \fB\-\-rcfile\fP مشخص کنید. در غیر این صورت، Pylint به ترتیب زیر به دنبال فایل پیکربندی می‌گردد و از اولین موردی که بیابد استفاده می‌کند: .INDENT 0.0 .IP 1. 4 فایل \fBpylintrc\fP در دایرکتوری کاری فعلی .IP 2. 4 فایل \fBpylintrc.toml\fP در دایرکتوری کاری فعلی، به شرطی که دست‌کم یک بخش \fBtool.pylint.\fP داشته باشد. .IP 3. 4 فایل \fB\&.pylintrc\fP در دایرکتوری کاری فعلی .IP 4. 4 فایل \fB\&.pylintrc.toml\fP در دایرکتوری کاری فعلی، به شرطی که دست‌کم یک بخش \fBtool.pylint.\fP داشته باشد. .IP 5. 4 فایل \fBpyproject.toml\fP در دایرکتوری کاری فعلی، به شرطی که دست‌کم یک بخش \fBtool.pylint.\fP داشته باشد. در \fBpyproject.toml\fP باید نام بخش‌ها با پیشوند \fBtool.pylint.\fP آغاز شود، برای نمونه \fB[tool.pylint.\(aqMESSAGES CONTROL\(aq]\fP\&. آن‌ها همچنین می‌توانند از طریق خط فرمان ارسال شوند. .IP 6. 4 فایل \fBsetup.cfg\fP در دایرکتوری کاری فعلی، به شرطی که دست‌کم یک بخش \fBpylint.\fP داشته باشد .IP 7. 4 فایل \fBtox.ini\fP در دایرکتوری کاری فعلی، به شرطی که دست‌کم یک بخش \fBpylint.\fP داشته باشد .IP 8. 4 ابزار Pylint برای یافتن فایل \fBpyproject.toml\fP سلسله‌مراتب دایرکتوری‌ها را به سمت بالا جستجو می‌کند، مگر آن‌که فایل پیدا شود، یا یک دایرکتوری \fB\&.git\fP/\fB\&.hg\fP یافت شود، یا به ریشهٔ سیستم‌فایل رسیده باشد. .IP 9. 4 اگر دایرکتوری کاری فعلی در یک بستهٔ Python باشد، Pylint سلسله‌مراتب بسته‌های Python را به سمت بالا تا زمانی که یک فایل \fBpylintrc\fP بیابد جستجو می‌کند. این به شما امکان می‌دهد استانداردهای کدنویسی را بر پایهٔ هر ماژول مشخص کنید. البته، در صورتی یک دایرکتوری یک بستهٔ Python محسوب می‌شود که شامل یک فایل \fB__init__.py\fP باشد. .IP 10. 4 فایل مشخص‌شده توسط متغیر محیطی \fBPYLINTRC\fP .IP 11. 4 اگر یک دایرکتوری خانگی دارید که \fB/root\fP نیست: .INDENT 4.0 .IP 1. 3 فایل \fB\&.pylintrc\fP در دایرکتوری خانگی شما .IP 2. 3 فایل \fB\&.config/pylintrc\fP در دایرکتوری خانگی شما .UNINDENT .IP 12. 4 \fB/etc/pylintrc\fP .UNINDENT .sp گزینهٔ \fB\-\-generate\-toml\-config\fP یک فایل پیکربندی همراه با توضیحات را بر اساس پیکربندی فعلی در خروجی استاندارد تولید کرده و خارج می‌شود. این شامل موارد زیر است: .INDENT 0.0 .IP \(bu 2 هر فایل پیکربندی پیدا شده همان‌گونه که در بالا توضیح داده شد .IP \(bu 2 گزینه‌هایی که قبل از \fB\-\-generate\-toml\-config\fP در خط فرمان Pylint آمده‌اند .UNINDENT .sp البته شما همچنین می‌توانید با مقادیر پیش‌فرض شروع کرده و پیکربندی را به‌صورت دستی تنظیم کنید. .sp سایر گزینه‌های سراسری کاربردی عبارتند از: .INDENT 0.0 .TP .BI \-\-ignore\fB= فایل‌ها یا دایرکتوری‌هایی که باید نادیده گرفته شوند. آن‌ها باید نام پایه (base name) باشند، نه مسیر کامل. .TP .BI \-\-output\-format\fB= انتخاب قالب خروجی (text، json، custom). .TP .BI \-\-msg\-template\fB=