.\" Generated by scdoc 1.11.4 .\" Complete documentation for this program is not available as a GNU info page .ie \n(.g .ds Aq \(aq .el .ds Aq ' .nh .ad l .\" Begin generated content: .TH "alint" "5" "2025-12-02" "Parch Linux" "راهنمای ابزارها" .PP .SH "نام (NAME)" .PP alint \- برچسب‌ها و تگ‌های لینتینگ (linting) .PP .SH "توضیحات (DESCRIPTION)" .PP یک برچسب (label) و یک تگ (tag) دو ویژگی اختصاص‌داده‌شده به هر آزمون در alint هستند؛ برچسب از مجموعه‌ای از کلمات تشکیل شده که با خط تیره از هم جدا شده‌اند و هدف آن انتقال ایده کلی از عملکرد آزمون است\&. تگ رشته‌ای است متشکل از AL که به‌دنبال آن یک عدد صحیح می‌آید؛ این تگ‌ها با ایجاد آزمون‌های جدید به ترتیب صعودی اختصاص می‌یابند اما تگ‌های قدیمی هرگز دوباره استفاده نمی‌شوند\&. .PP آزمون‌ها را می‌توان با تنظیم متغیر محیطی متشکل از SKIP_ به‌علاوه نام برچسب با حروف بزرگ (که خط تیره‌های آن با زیرخط جایگزین شده‌اند)، یا با تنظیم متغیر محیطی متشکل از SKIP_ به‌علاوه نام تگ، نادیده گرفت (skip کرد)\&. .PP .SH "میزان شدت (Severity)" .PP میزان شدت به هر تگ اختصاص داده می‌شود و نشان می‌دهد نقضِ پیداشده چقدر جدی است: .PP .SS "جدی (Serious - S)" .PP در طول ساخت یا هنگام تحویل بسته به کاربران باعث بروز مشکل خواهد شد\&. باید بلافاصله برطرف شود\&. .PP .SS "مهم (Important - I)" .PP ممکن است در شرایط خاص در طول ساخت یا هنگام تحویل بسته به کاربران مشکل ایجاد کند\&. باید به‌زودی برطرف شود\&. .PP .SS "جزئی (Minor - M)" .PP مستقیماً باعث ایجاد مشکل در طول ساخت یا هنگام تحویل بسته به کاربران نخواهد شد\&. در زمان مناسب باید برطرف شود\&. .PP این دسته همچنین شامل مشکلات شیوه‌نامه‌ای است که در پروندهٔ CODINGSTYLE.\&md مشخص شده‌اند\&. .PP .SS "شیوه‌نامه (STYLE - T)" .PP هیچ مشکلی ایجاد نخواهد کرد و صرفاً موارد خاص شیوه‌نامه‌ای مربوط به یک توسعه‌دهنده یا مشارکت‌کنندهٔ خاص است\&. متغیر \fIAPKBUILD_STYLE\fR می‌تواند روی مقدار خاصی تنظیم شود تا زیرمجموعه‌ای از بررسی‌هایی که آن توسعه‌دهنده یا کاربر خاص استفاده می‌کند فعال گردد\&. .PP هنگامی که یک بررسی به این دسته تعلق دارد، این صفحه راهنما همچنین اطلاعاتی درباره اینکه کدام توسعه‌دهندگان از یک بررسی سبک خاص استفاده می‌کنند ارائه می‌دهد؛ زیرا گاهی اوقات ممکن است توسعه‌دهندگان بخواهند بررسی یکسانی روی شیوه نگارش خودشان انجام شود\&. .PP مقادیر معتبر فعلی عبارتند از: .PP .PD 0 .IP \(bu 4 leo (بررسی شیوه‌نامه برای leo) .PD .PP .SH "میزان قطعیت (Certainty)" .PP میزان قطعیت به هر تگ اختصاص داده می‌شود و نشان می‌دهد که یک آزمون تا چه حد مطمئن است که نقضِ پیداشده مثبت کاذب (false positive) نیست\&. .PP .SS "قطعی (Certain - C)" .PP آزمون اطمینان دارد که این مورد مثبت کاذب نیست\&. .PP .SS "احتمالی (Possible - P)" .PP آزمون اطمینان قطعی ندارد که این مورد مثبت کاذب نباشد، اما احتمال بالایی وجود دارد که مثبت کاذب نباشد\&. .PP .SH "جدول (TABLE)" .PP در ادامه جدولی از تمامی تگ‌ها، به‌همراه برچسب، شدت، قطعیت، لینتر (کدام باینری آن را بررسی می‌کند) و برطرف‌کننده (اینکه آیا apkbuild-fixer می‌تواند آن را خودکار رفع کند یا خیر) آورده شده است\&. .PP .TS allbox;l c c c c c l c c c c c l c c c c c l c c c c c l c c c c c l c c c c c l c c c c c l c c c c c l c c c c c l c c c c c l c c c c c l c c c c c l c c c c c l c c c c c l c c c c c l c c c c c l c c c c c l c c c c c l c c c c c l c c c c c l c c c c c l c c c c c l c c c c c l c c c c c l c c c c c l c c c c c l c c c c c l c c c c c l c c c c c l c c c c c l c c c c c l c c c c c l c c c c c l c c c c c l c c c c c l c c c c c l c c c c c l c c c c c l c c c c c l c c c c c l c c c c c l c c c c c l c c c c c l c c c c c l c c c c c l c c c c c l c c c c c l c c c c c l c c c c c l c c c c c l c c c c c l c c c c c l c c c c c l c c c c c l c c c c c l c c c c c. T{ \fBtag\fR T} T{ \fIlabel\fR T} T{ \fIseverity\fR T} T{ \fIcertainty\fR T} T{ \fIlinter\fR T} T{ \fIfixer\fR T} T{ \fBAL1\fR T} T{ default-builddir-value T} T{ Minor T} T{ Certain T} T{ apkbuild-lint T} T{ YES T} T{ \fBAL2\fR T} T{ unnecessary-return-1 T} T{ Minor T} T{ Certain T} T{ apkbuild-lint T} T{ YES T} T{ \fBAL3\fR T} T{ pkgname-quoted T} T{ Minor T} T{ Certain T} T{ apkbuild-lint T} T{ NO T} T{ \fBAL4\fR T} T{ pkgver-quoted T} T{ Minor T} T{ Certain T} T{ apkbuild-lint T} T{ NO T} T{ \fBAL5\fR T} T{ empty-variable T} T{ Minor T} T{ Certain T} T{ apkbuild-lint T} T{ YES T} T{ \fBAL6\fR T} T{ custom-variable T} T{ Important T} T{ Certain T} T{ apkbuild-lint T} T{ NO T} T{ \fBAL7\fR T} T{ indent-tabs T} T{ Important T} T{ Certain T} T{ apkbuild-lint T} T{ NO T} T{ \fBAL8\fR T} T{ trailing-whitespace T} T{ Important T} T{ Certain T} T{ apkbuild-lint T} T{ YES T} T{ \fBAL9\fR T} T{ function-keyword T} T{ Serious T} T{ Certain T} T{ apkbuild-lint T} T{ NO T} T{ \fBAL10\fR T} T{ space-before-function-parenthesis T} T{ Minor T} T{ Certain T} T{ apkbuild-lint T} T{ YES T} T{ \fBAL11\fR T} T{ space-after-function-parenthesis T} T{ Minor T} T{ Certain T} T{ apkbuild-lint T} T{ YES T} T{ \fBAL12\fR T} T{ newline-opening-brace T} T{ Minor T} T{ Certain T} T{ apkbuild-lint T} T{ NO T} T{ \fBAL13\fR T} T{ superfluous-cd-builddir T} T{ Minor T} T{ Possible T} T{ apkbuild-lint T} T{ YES T} T{ \fBAL14\fR T} T{ pkgname-has-uppercase T} T{ Serious T} T{ Certain T} T{ apkbuild-lint T} T{ NO T} T{ \fBAL15\fR T} T{ pkgver-has-pkgrel T} T{ Serious T} T{ Certain T} T{ apkbuild-lint T} T{ NO T} T{ \fBAL16\fR T} T{ upper-repo-depends T} T{ Serious T} T{ Certain T} T{ aports-lint T} T{ N/A T} T{ \fBAL17\fR T} T{ duplicate-depends T} T{ Minor T} T{ Certain T} T{ aports-lint T} T{ N/A T} T{ \fBAL18\fR T} T{ upper-repo-makedepends T} T{ Serious T} T{ Certain T} T{ aports-lint T} T{ N/A T} T{ \fBAL19\fR T} T{ duplicate-makedepends T} T{ Minor T} T{ Certain T} T{ aports-lint T} T{ N/A T} T{ \fBAL20\fR T} T{ upper-repo-makedepends T} T{ Serious T} T{ Certain T} T{ aports-lint T} T{ N/A T} T{ \fBAL21\fR T} T{ duplicate-makedepends T} T{ Minor T} T{ Certain T} T{ aports-lint T} T{ N/A T} T{ \fBAL22\fR T} T{ duplicate-package T} T{ Serious T} T{ Certain T} T{ aports-lint T} T{ N/A T} T{ \fBAL23\fR T} T{ pkgname-dirname-mismatch T} T{ Important T} T{ Certain T} T{ aports-lint T} T{ N/A T} T{ \fBAL24\fR T} T{ depends-makedepends-checkdepends-overlap T} T{ Important T} T{ Certain T} T{ aports-lint T} T{ N/A T} T{ \fBAL25\fR T} T{ backticks-usage T} T{ Serious T} T{ Possible T} T{ apkbuild-lint T} T{ NO T} T{ \fBAL26\fR T} T{ _builddir-is-set T} T{ Serious T} T{ Certain T} T{ apkbuild-lint T} T{ NO T} T{ \fBAL28\fR T} T{ literal-integer-is-quoted T} T{ Minor T} T{ Certain T} T{ apkbuild-lint T} T{ NO T} T{ \fBAL29\fR T} T{ pkgname-used-in-source T} T{ Minor T} T{ Certain T} T{ apkbuild-lint T} T{ YES T} T{ \fBAL30\fR T} T{ double-underscore-in-variable T} T{ Minor T} T{ Certain T} T{ apkbuild-lint T} T{ NO T} T{ \fBAL31\fR T} T{ variable-capitalized T} T{ Minor T} T{ Certain T} T{ apkbuild-lint T} T{ NO T} T{ \fBAL32\fR T} T{ braced-variable T} T{ Minor T} T{ Certain T} T{ apkbuild-lint T} T{ YES T} T{ \fBAL33\fR T} T{ unexpected-shebang-line T} T{ Important T} T{ Certain T} T{ initd-lint T} T{ N/A T} T{ \fBAL34\fR T} T{ custom-start-stop-function T} T{ Important T} T{ Certain T} T{ initd-lint T} T{ N/A T} T{ \fBAL35\fR T} T{ cpan-variable T} T{ Minor T} T{ Certain T} T{ apkbuild-lint T} T{ NO T} T{ \fBAL36\fR T} T{ overwrite-xflags T} T{ Serious T} T{ Certain T} T{ apkbuild-lint T} T{ NO T} T{ \fBAL37\fR T} T{ secfixes-missing-colon T} T{ Serious T} T{ Certain T} T{ secfixes-check T} T{ N/A T} T{ \fBAL38\fR T} T{ pkgver-pkgrel-missing-colon T} T{ Serious T} T{ Certain T} T{ secfixes-check T} T{ N/A T} T{ \fBAL39\fR T} T{ pkgver-pkgrel-invalid-pkgver T} T{ Serious T} T{ Certain T} T{ secfixes-check T} T{ N/A T} T{ \fBAL40\fR T} T{ pkgver-pkgrel-invalid-pkgrel T} T{ Serious T} T{ Certain T} T{ secfixes-check T} T{ N/A T} T{ \fBAL41\fR T} T{ security-identifier-missing-hyphen T} T{ Serious T} T{ Certain T} T{ secfixes-check T} T{ N/A T} T{ \fBAL47\fR T} T{ security-identifier-wrong-indent T} T{ Serious T} T{ Certain T} T{ secfixes-check T} T{ N/A T} T{ \fBAL48\fR T} T{ pkgver-pkgrel-wrong-indent T} T{ Serious T} T{ Certain T} T{ secfixes-check T} T{ N/A T} T{ \fBAL49\fR T} T{ invalid-option T} T{ Minor T} T{ Certain T} T{ apkbuild-lint T} T{ YES T} T{ \fBAL50\fR T} T{ cve-identifier-formatted-incorrectly T} T{ Minor T} T{ Certain T} T{ secfixes-check T} T{ N/A T} T{ \fBAL51\fR T} T{ gnutls-sa-identifier-formatted-incorrectly T} T{ Minor T} T{ Certain T} T{ secfixes-check T} T{ N/A T} T{ \fBAL52\fR T} T{ unknown-security-identifier T} T{ Minor T} T{ Certain T} T{ secfixes-check T} T{ N/A T} T{ \fBAL53\fR T} T{ xsa-identifier-formatted-incorrectly T} T{ Minor T} T{ Certain T} T{ secfixes-check T} T{ N/A T} T{ \fBAL54\fR T} T{ missing-default-prepare T} T{ Serious T} T{ Certain T} T{ apkbuild-lint T} T{ NO T} T{ \fBAL56\fR T} T{ missing-patch-description T} T{ Minor T} T{ Certain T} T{ aports-lint T} T{ N/A T} T{ \fBAL57\fR T} T{ invalid-arch T} T{ Serious T} T{ Certain T} T{ apkbuild-lint T} T{ YES T} T{ \fBAL58\fR T} T{ deprecated-packages T} T{ Serious T} T{ Certain T} T{ aports-lint T} T{ N/A T} T{ \fBAL59\fR T} T{ duplicate-identifier-value T} T{ Serious T} T{ Certain T} T{ secfixes-check T} T{ N/A T} T{ \fBAL61\fR T} T{ bad-version T} T{ Important T} T{ Certain T} T{ apkbuild-lint T} T{ NO T} T{ \fBAL62\fR T} T{ volatile-source T} T{ Serious T} T{ Certain T} T{ apkbuild-lint T} T{ NO T} T{ \fBAL63\fR T} T{ ghsl-identifier-formatted-incorrectly T} T{ Minor T} T{ Certain T} T{ secfixes-check T} T{ NO T} .TE .sp 1 .SH "برچسب‌ها و تگ‌ها (LABELS TAGS - aports-lint)" .PP برچسب‌ها و تگ‌های زیر توسط برنامهٔ \fBaports-lint\fR استفاده می‌شوند\&. .PP .SS "duplicate-package [AL22]" .PP بسته‌ای که اضافه می‌شود از قبل در مخزن دیگری وجود دارد\&. تداخل را به یکی از روش‌های زیر حل کنید: .PP .PD 0 .IP \(bu 4 اگر بسته در بالاترین مخزن تغییرات جدیدتری دارد، آن‌ها را ادغام کنید\&. .IP \(bu 4 سپس بسته را در مخزن بالاتر حذف کنید\&. .PD .PP بسته‌های تکراری در مخزن یکدیگر را می‌پوشانند (shadow می‌کنند) و نسخه‌ای که شماره نسخه بالاتری دارد برنده خواهد شد؛ این امر همچنین می‌تواند باعث شود برنامه‌ها در برابر نسخه اشتباهی از یک بسته کامپایل شوند\&. به‌عنوان مثال: اگر \fBmain/foo-1-r0\fR و \fBtesting/foo-2-r0\fR وجود داشته باشند و \fBmain/bar\fR به نسخه ۲ که به \fBfoo>=2-r0\fR نیاز دارد به‌روزرسانی شود، این فرایند با شکست مواجه خواهد شد زیرا فقط \fBmain/foo-1-r0\fR را پیدا می‌کند و نه \fBtesting/foo-2-r0\fR را\&. .PP شدت: جدی (Serious)، قطعیت: قطعی (Certain) .PP .SS "upper-repo-depends [AL16]" .PP بسته به بسته‌ای در یک مخزن بالاتر وابسته است\&. بسته باید به مخزن بالاتر منتقل شود یا وابستگی به مخزنی که بسته در آن قرار دارد منتقل گردد\&. .PP بسته‌ها نمی‌توانند به بسته‌ای در یک مخزن بالاتر وابسته باشند\&. بسته‌های موجود در main نمی‌توانند به بسته‌های موجود در سایر مخازن وابسته باشند\&. بسته‌های موجود در community فقط می‌توانند به main و خودشان وابسته باشند\&. بسته‌های موجود در testing فقط می‌توانند به main، community و خودشان وابسته باشند\&. بسته‌های موجود در unmaintained می‌توانند به بسته‌های هر مخزنی به‌جز non-free وابسته باشند\&. .PP شدت: جدی (Serious)، قطعیت: قطعی (Certain) .PP .SS "duplicate-depends [AL17]" .PP پروندهٔ APKBUILD دارای depends تکراری است\&. یکی از آن‌ها باید حذف شود\&. .PP تعریف وابستگی‌های تکراری زائد است\&. .PP شدت: جزئی (Minor)، قطعیت: قطعی (Certain) .PP .SS "upper-repo-makedepends [AL18]" .PP بسته برای ساخت به بسته‌ای در یک مخزن بالاتر وابسته است (makedepends)\&. بسته باید به مخزن بالاتر منتقل شود یا وابستگی به مخزنی که بسته در آن قرار دارد منتقل گردد\&. .PP بسته‌ها نمی‌توانند برای ساخت به بسته‌ای در مخزن بالاتر وابستگی داشته باشند (makedepend)\&. بسته‌های موجود در main نمی‌توانند به بسته‌های سایر مخازن makedepend داشته باشند\&. بسته‌های موجود در community فقط می‌توانند به main و خودشان وابسته باشند\&. بسته‌های موجود در testing فقط می‌توانند به main، community و خودشان makedepend داشته باشند\&. بسته‌های موجود در unmaintained می‌توانند به بسته‌های هر مخزنی به‌جز non-free وابستگی ساخت داشته باشند\&. .PP شدت: جدی (Serious)، قطعیت: قطعی (Certain) .PP .SS "duplicate-makedepends [AL19]" .PP پروندهٔ APKBUILD دارای makedepends تکراری است\&. یکی از آن‌ها باید حذف شود\&. .PP تعریف وابستگی‌های تکراری زائد است\&. .PP شدت: جزئی (Minor)، قطعیت: قطعی (Certain) .PP .SS "upper-repo-checkdepends [AL20]" .PP بسته برای بررسی/آزمون به بسته‌ای در یک مخزن بالاتر وابسته است (checkdepends)\&. بسته باید به مخزن بالاتر منتقل شود یا وابستگی به مخزنی که بسته در آن قرار دارد منتقل گردد\&. .PP بسته‌ها نمی‌توانند به بسته‌ای در یک مخزن بالاتر checkdepend داشته باشند\&. بسته‌های موجود در main نمی‌توانند به بسته‌های سایر مخازن checkdepend داشته باشند\&. بسته‌های موجود در community فقط می‌توانند به main و خودشان checkdepend داشته باشند\&. بسته‌های موجود در testing فقط می‌توانند به main، community و خودشان checkdepend داشته باشند\&. بسته‌های موجود در unmaintained می‌توانند به بسته‌های هر مخزنی به‌جز non-free وابستگی بررسی داشته باشند\&. .PP شدت: جدی (Serious)، قطعیت: قطعی (Certain) .PP .SS "duplicate-checkdepends [AL21]" .PP پروندهٔ APKBUILD دارای checkdepends تکراری است\&. یکی از آن‌ها باید حذف شود\&. .PP تعریف وابستگی‌های تکراری زائد است\&. .PP شدت: جزئی (Minor)، قطعیت: قطعی (Certain) .PP .SS "pkgname-dirname-mismatch [AL23]" .PP متغیر pkgname در پروندهٔ APKBUILD دارای مقدار \fBfoo\fR است اما دایرکتوری‌ای که APKBUILD در آن قرار دارد \fBfoo\fR نام‌گذاری نشده است\&. .PP شدت: مهم (Important)، قطعیت: قطعی (Certain) .PP .SS "depends-makedepends-checkdepends-overlap [AL24]" .PP یک بسته در ۲ یا ۳ نوع از ۳ نوع وابستگی زیر حضور دارد: depends، makedepends و checkdepends\&. همه آن‌ها در طول فرایند ایجاد بسته نصب می‌شوند، لطفاً نام بسته را فقط یک بار در پایین‌ترین مکان مشترک مشخص کنید\&. .PP شدت: مهم (Important)، قطعیت: قطعی (Certain) .PP .SS "deprecated-packages [AL58]" .PP بسته‌ای در depends، makedepends یا checkdepends وجود دارد که منسوخ‌شده (deprecated) تلقی می‌شود\&. .PP بسته‌های منسوخ‌شده به‌صورت درون‌برنامه‌ای در aports-lint مشخص شده‌اند و امکان افزودن بسته‌های سفارشی از طریق متغیر CUSTOM_DEPRECATED_PACKAGES وجود دارد\&. این بسته‌ها دیگر برای استفاده مناسب تشخیص داده نمی‌شوند و باید بلافاصله حذف شوند\&. .PP شدت: جدی (Serious)، قطعیت: قطعی (Certain) .PP .SS "missing-patch-description [AL56]" .PP وصله‌ای که در `$sources` مشخص شده فاقد توضیحات است\&. این توضیحات دست‌کم باید دلیل ضروری بودن وصله را شرح دهد\&. .PP شدت: جزئی (Minor)، قطعیت: قطعی (Certain) .PP .SH "برچسب‌ها و تگ‌ها (LABELS TAGS - apkbuild-lint)" .PP برچسب‌ها و تگ‌های زیر توسط برنامهٔ \fBapkbuild-lint\fR استفاده می‌شوند\&. .PP .SS "default-builddir-value [AL1]" .PP مقدار builddir با مقدار پیش‌فرض \fB$srcdir/$pkgname-$pkgver\fR مطابقت دارد\&. اعلان \fBbuilddir\fR می‌تواند حذف شود\&. .PP از نسخهٔ 2.29.0 ابزار \fBabuild\fR این مقدار به‌طور خودکار تنظیم می‌شود\&. .PP برخی بسته‌ها از این قاعده مستثنی هستند زیرا در طول راه‌اندازی اولیه (bootstrap) توسط abuild ساخته می‌شوند و از این رو با نام بسته به‌همراه پسوند bootstrap- ساخته می‌شوند\&. .PP می‌توان بسته‌های بیشتری را با ارسال یک فهرست جداشده با فاصله در متغیر CUSTOM_BOOTSTRAP_PACKAGES به استثناها اضافه کرد\&. .PP شدت: جزئی (Minor)، قطعیت: قطعی (Certain) .PP .SS "unnecessary-return-1 [AL2]" .PP پروندهٔ APKBUILD دارای عبارات \fB|| return 1\fR است\&. آن‌ها را می‌توان با اطمینان حذف کرد\&. .PP از نسخهٔ 2.15.0 ابزار \fBabuild\fR فرایند ساخت با \fBset -e\fR اجرا می‌شود که عملاً به هر دستور یک \fB|| return 1\fR اضافه می‌کند\&. .PP شدت: جزئی (Minor)، قطعیت: قطعی (Certain) .PP .SS "pkgname-quoted [AL3]" .PP متغیر \fBpkgname\fR در APKBUILD درون کوتیشن قرار گرفته است\&. این متغیر نباید درون کوتیشن باشد\&. .PP شدت: جزئی (Minor)، قطعیت: قطعی (Certain) .PP .SS "pkgver-quoted [AL4]" .PP متغیر \fBpkgver\fR در APKBUILD درون کوتیشن قرار گرفته است\&. این متغیر نباید درون کوتیشن باشد\&. .PP شدت: جزئی (Minor)، قطعیت: قطعی (Certain) .PP .SS "empty-variable [AL5]" .PP پروندهٔ APKBUILD دارای متغیرهایی با مقادیر خالی است، آن‌ها را می‌توان با اطمینان حذف کرد\&. .PP متغیرهای خالی را می‌توان حذف کرد تا APKBUILD کوچک‌تر و خواناتر شود\&. .PP شدت: جزئی (Minor)، قطعیت: قطعی (Certain) .PP .SS "custom-variable [AL6]" .PP پروندهٔ APKBUILD دارای متغیرهای سفارشی است که با زیرخط پیشوندگذاری نشده‌اند\&. متغیرها را با زیرخط پیشوندگذاری کنید\&. .PP متغیرهایی که بر رفتار \fBabuild\fR تأثیری ندارند باید با یک زیرخط پیشوندگذاری شوند تا نگه‌دارندگان و مشارکت‌کنندگان بتوانند به‌راحتی اهمیت آن‌ها را تشخیص دهند\&. .PP شدت: مهم (Important)، قطعیت: قطعی (Certain) .PP .SS "indent-tabs [AL7]" .PP پروندهٔ APKBUILD به‌جای تب از فاصله برای دندانه‌گذاری استفاده می‌کند\&. فاصله‌ها را با تب جایگزین کنید\&. .PP پرونده‌های APKBUILD برای دندانه‌گذاری از نویسهٔ تب (\et) استفاده می‌کنند نه فاصله\&. .PP شدت: مهم (Important)، قطعیت: قطعی (Certain) .PP .SS "trailing-whitespace [AL8]" .PP پروندهٔ APKBUILD دارای فاصله‌های خالی در انتهای خطوط است\&. آن‌ها را حذف کنید\&. .PP فاصله‌های خالی انتهایی زائد هستند\&. .PP شدت: مهم (Important)، قطعیت: قطعی (Certain) .PP .SS "backticks-usage [AL25]" .PP پروندهٔ APKBUILD برای اجرای یک دستور پوسته از بک‌تیک استفاده می‌کند؛ به‌جای آن از `$()` استفاده کنید\&. .PP شدت: جدی (Serious)، قطعیت: احتمالی (Possible) .PP .SS "function-keyword [AL9]" .PP پروندهٔ APKBUILD از کلمه کلیدی function برای اعلان تابع استفاده می‌کند\&. به‌جای آن از \fBfunction()\fR استفاده کنید\&. .PP کلمه کلیدی function یک ویژگی اختصاصی بش (bashism) است\&. ابزار \fBabuild\fR از پوستهٔ سازگار با استاندارد POSIX به‌همراه کلمه کلیدی \fBlocal\fR استفاده می‌کند\&. .PP شدت: جدی (Serious)، قطعیت: قطعی (Certain) .PP .SS "space-before-function-parenthesis [AL10]" .PP پروندهٔ APKBUILD دارای یک نویسهٔ فاصله بین نام تابع و پرانتزهای مشخص‌کنندهٔ تابع است\&. این فاصلهٔ زائد را حذف کنید\&. .PP شدت: جزئی (Minor)، قطعیت: قطعی (Certain) .PP .SS "space-after-function-parenthesis [AL11]" .PP پروندهٔ APKBUILD بعد از پرانتزهای تابع فاصله‌ای ندارد یا بیش از یک فاصله دارد\&. بعد از پرانتزهای تابع تنها از یک فاصله استفاده کنید\&. .PP شدت: جزئی (Minor)، قطعیت: قطعی (Certain) .PP .SS "newline-opening-brace [AL12]" .PP پروندهٔ APKBUILD قبل از آکولاد باز تابع، یک خط جدید دارد\&. آکولاد باز را در همان خط اعلان و با یک فاصله پس از پرانتزهای تابع قرار دهید\&. .PP شدت: جزئی (Minor)، قطعیت: قطعی (Certain) .PP .SS "superfluous-cd-builddir [AL13]" .PP پروندهٔ APKBUILD دارای دستورات \fBcd "$builddir"\fR اضافی است\&. آن‌ها را حذف کنید\&. .PP از نسخهٔ 3.3.0 ابزار \fBabuild\fR، توابع \fBprepare\fR، \fBbuild\fR، \fBcheck\fR و \fBpackage\fR به‌طور خودکار دایرکتوری کاری خود را روی مقدار \fBbuilddir\fR تنظیم می‌کنند\&. همچنین ممکن است دو دستور \fBcd "$builddir"\fR پشت سر هم وجود داشته باشند\&. .PP شدت: جزئی (Minor)، قطعیت: احتمالی (Possible) .PP .SS "pkgname-has-uppercase [AL14]" .PP متغیر pkgname دارای حروف بزرگ است؛ pkgname فقط باید شامل حروف کوچک باشد\&. .PP می‌توان نام بسته‌های بیشتری را با ارسال یک فهرست جداشده با فاصله در متغیر CUSTOM_UPPERCASE_PKGNAMES به استثناها اضافه کرد\&. .PP شدت: جدی (Serious)، قطعیت: قطعی (Certain) .PP .SS "pkgver-has-pkgrel [AL15]" .PP متغیر pkgver دارای \fB-r\fR به‌همراه یک عدد است؛ این ساختار برای شماره انتشار بسته که توسط متغیر \fBpkgrel\fR تعریف می‌شود رزرو شده است\&. .PP شدت: جدی (Serious)، قطعیت: قطعی (Certain) .PP .SS "_builddir-is-set [AL26]" .PP متغیر _builddir به‌جای builddir تنظیم شده است، که متغیری قدیمی مربوط به قبل از تعریف ساختار builddir در abuild است\&. .PP شدت: جدی (Serious)، قطعیت: قطعی (Certain) .PP .SS "literal-integer-is-quoted [AL28]" .PP اعلان متغیری که فقط شامل اعداد صحیح است نباید درون کوتیشن قرار گیرد\&. .PP شدت: جزئی (Minor)، قطعیت: قطعی (Certain) .PP .SS "pkgname-used-in-source [AL29]" .PP عبارت «$pkgname» در نشانی منبع (source url) استفاده شده است\&. این کار pkgname را به‌شدت به نام بالادست وابسته می‌کند، که تغییر نام بسته‌ها یا ایجاد انواع سفارشی از بسته‌ها را دشوارتر می‌سازد\&. .PP به‌جای آن، نام بالادست را به‌طور کامل بنویسید\&. این مورد فقط برای خود URL صدق می‌کند، نه پیشوند نام بایگانی محلی\&. .PP شدت: جزئی (Minor)، قطعیت: قطعی (Certain) .PP .SS "double-underscore-in-variable [AL30]" .PP استفاده از دو زیرخط متوالی در نام متغیرها ممنوع است؛ برای متغیرهایی که توسط abuild استفاده نمی‌شوند همیشه از یک زیرخط استفاده کنید\&. .PP شدت: جزئی (Minor)، قطعیت: قطعی (Certain) .PP .SS "variable-capitalized [AL31]" .PP نام متغیرها نباید هیچ حرف بزرگی داشته باشد\&. .PP شدت: جزئی (Minor)، قطعیت: قطعی (Certain) .PP .SS "braced-variable [AL32]" .PP متغیر دارای آکولاد در اطراف خود است در حالی که نیازی به آن نیست؛ آکولادها را حذف کنید\&. .PP شدت: جزئی (Minor)، قطعیت: احتمالی (Possible) .PP .SS "cpan-variable [AL35]" .PP متغیرهای `cpandepends`، `cpanmakedepends` و `cpancheckdepends` توسط برنامهٔ apkbuild-cpan ایجاد شده بودند اما اکنون منسوخ شده‌اند و محتوای آن‌ها باید در متغیرهای مربوطه ادغام شود\&. .PP شدت: جزئی (Minor)، قطعیت: قطعی (Certain) .PP .SS "overwrite-xflags [AL36]" .PP متغیرهای `CFLAGS`، `GOFLAGS`، `CPPFLAGS`، `CXXFLAGS` و `FFLAGS` را رونویسی (overwrite) نکنید\&. این پرچم‌ها معمولاً در خارج از APKBUILD تعریف می‌شوند و نباید رونویسی شوند زیرا حاوی پرچم‌های مهمی هستند که نباید نادیده گرفته شوند\&. در عوض، متغیر را گسترش دهید\&. برای مثال: `CFLAGS="$CFLAGS ..."` .PP همچنین می‌توان پرچم‌ها را با استفاده از جایگزینی متغیر تغییر داد\&. برای مثال: `CFLAGS="${CFLAGS/-Dflag}"` .PP با شناسایی متغیرهای بیشتری که نباید رونویسی شوند، این فهرست ممکن است گسترش یابد\&. .PP شدت: جدی (Serious)، قطعیت: قطعی (Certain) .PP .SS "invalid-option [AL49]" .PP گزینه‌ای در متغیر options= مقداری دارد که توسط abuild استفاده نمی‌شود؛ گرچه به‌احتمال زیاد مشکلی ایجاد نخواهد کرد اما حذف آن رفتار بهتری است\&. .PP متغیر VALID_CUSTOM_OPTIONS می‌تواند برای مشخص کردن سایر گزینه‌های قابل‌قبول استفاده شود و فهرستی جداشده با فاصله را دریافت می‌کند\&. .PP شدت: جزئی (Minor)، قطعیت: قطعی (Certain) .PP .SS "missing-default-prepare [AL54]" .PP تابع prepare() تعریف شده است اما فراخوانی default_prepare (که تمام وصله‌ها را در source= اعمال می‌کند) وجود ندارد\&. لطفاً default_prepare را در محل مناسب در بدنهٔ تابع prepare() قرار دهید\&. .PP شدت: جدی (Serious)، قطعیت: قطعی (Certain) .PP .SS "invalid-arch [AL57]" .PP متغیر 'arch' در APKBUILD دارای مقدار نامعتبری است؛ تنها مقادیر مجاز نام معماری‌های استفاده‌شده توسط توزیع و رشته‌های 'noarch' و 'all' هستند\&. .PP معماری‌های مجاز از /usr/share/abuild/functions.\&sh دریافت می‌شوند زیرا آن‌ها تنها مواردی هستند که توسط abuild معتبر شناخته می‌شوند؛ اگر معماری‌های دیگری دارید، ادامه را مطالعه کنید\&. .PP متغیر CUSTOM_VALID_ARCHES می‌تواند برای مشخص کردن سایر معماری‌های معتبر استفاده شود و فهرستی جداشده با فاصله را دریافت می‌کند\&. .PP شدت: جدی (Serious)، قطعیت: قطعی (Certain) .PP .SS "bad-version [AL61]" .PP متغیر pkgver با یک عبارت باقاعده (regex) برای نسخه‌های نامطلوب مطابقت دارد؛ این بدان معنی است که pkgver نسخه‌ای نامناسب مانند شاخهٔ آزمایشی/تجربی است\&. .PP متغیر CUSTOM_BAD_VERSIONS می‌تواند برای افزودن ترکیب‌های بیشتر از pkgname@regexes... (جداشده با فاصله) استفاده شود\&. .PP شدت: مهم (Important)، قطعیت: قطعی (Certain) .PP .SS "volatile-source [AL62]" .PP نشانی منبع (URL) داده‌شده ناپایدار است و به دلیل عوامل غیرمنتظره چک‌سام (checksum) آن تغییر خواهد کرد\&. .PP رایج‌ترین نمونه، درخواست‌های pull request گیت‌هاب یا merge request گیت‌لب هستند که با ارسال کامیت‌های جدید توسط نویسنده تغییر می‌کنند؛ نمونهٔ دیگر کامیت‌های مستقیم گیت‌هاب است که با تغییر نسخهٔ گیت در زیرساخت گیت‌هاب ممکن است تغییر یابند\&. .PP شدت: جدی (Serious)، قطعیت: قطعی (Certain) .PP .SH "برچسب‌ها و تگ‌ها (LABELS TAGS - initd-lint)" .PP .SS "unexpected-shebang-line [AL33]" .PP پرونده‌های سرویس OpenRC برای کارکرد صحیح باید از `#!/sbin/openrc-run` استفاده کنند\&. برای جزئیات بیشتر به نشانی https://github.\&com/OpenRC/openrc/blob/master/service-script-guide.\&md#syntax-of-service-scripts مراجعه کنید\&. .PP شدت: مهم (Important)، قطعیت: قطعی (Certain) .PP .SS "custom-start-stop-function [AL34]" .PP نوشتن توابع سفارشی start / stop برای پرونده‌های سرویس توصیه نمی‌شود\&. در بیشتر موارد، تعریف `command`، `command_args` و `pidfile` کافی است\&. برای اطلاعات بیشتر به نشانی https://github.\&com/OpenRC/openrc/blob/master/service-script-guide.\&md#dont-write-your-own-startstop-functions مراجعه کنید\&. .PP شدت: مهم (Important)، قطعیت: قطعی (Certain) .PP .SH "برچسب‌ها و تگ‌ها (LABELS TAGS - secfixes-check)" .PP .SS "secfixes-missing-colon [AL37]" .PP سربرگ secfixes در انتهای خود فاقد دونقطه (:) است\&. .PP شدت: جدی (Serious)، قطعیت: قطعی (Certain) .PP .SS "pkgver-pkgrel-missing-colon [AL38]" .PP سربرگ pkgver-pkgrel در انتهای خود فاقد دونقطه (:) است\&. .PP شدت: جدی (Serious)، قطعیت: قطعی (Certain) .PP .SS "pkgver-pkgrel-invalid-pkgver [AL39]" .PP سربرگ pkgver-pkgrel دارای pkgver نامعتبر است\&. .PP شدت: جدی (Serious)، قطعیت: قطعی (Certain) .PP .SS "pkgver-pkgrel-invalid-pkgrel [AL40]" .PP سربرگ pkgver-pkgrel دارای pkgrel نامعتبر است\&. .PP شدت: جدی (Serious)، قطعیت: قطعی (Certain) .PP .SS "security-identifier-missing-hyphen [AL41]" .PP شناسهٔ امنیتی فاقد خط تیره در ابتدا است\&. .PP شدت: جدی (Serious)، قطعیت: قطعی (Certain) .PP .SS "security-identifier-wrong-indent [AL47]" .PP شناسهٔ CVE دارای فاصله‌های خالی ابتدایی نامناسب (خیلی زیاد یا خیلی کم) است؛ باید دقیقاً ۵ فاصلهٔ خالی بین علامت توضیح (comment) و خط تیره نگاشت وجود داشته باشد\&. .PP شدت: جدی (Serious)، قطعیت: قطعی (Certain) .PP .SS "pkgver-pkgrel-wrong-indent [AL48]" .PP سربرگ pkgver-pkgrel دارای فاصله‌های خالی ابتدایی نامناسب (خیلی زیاد یا خیلی کم) است؛ باید دقیقاً ۳ فاصلهٔ خالی بین علامت توضیح و خط تیره نگاشت وجود داشته باشد\&. .PP شدت: جدی (Serious)، قطعیت: قطعی (Certain) .PP .SS "cve-identifier-formatted-incorrectly [AL50]" .PP شناسهٔ CVE قالب‌بندی صحیحی ندارد؛ لطفاً برای بررسی علت، خروجی خطا را بررسی کنید\&. .PP شدت: جزئی (Minor)، قطعیت: قطعی (Certain) .PP .SS "gnutls-sa-identifier-formatted-incorrectly [AL51]" .PP شناسهٔ GNUTLS-SA قالب‌بندی صحیحی ندارد؛ لطفاً برای بررسی علت، خروجی خطا را بررسی کنید\&. .PP شدت: جزئی (Minor)، قطعیت: قطعی (Certain) .PP .SS "unknown-security-identifier [AL52]" .PP یک شناسهٔ ناشناخته ارسال شده است؛ اگر این یک شناسهٔ معتبر است، لطفاً با توسعه‌دهندگان تماس بگیرید تا پشتیبانی از آن اضافه شود\&. .PP شدت: جزئی (Minor)، قطعیت: قطعی (Certain) .PP .SS "xsa-identifier-formatted-incorrectly [AL53]" .PP شناسهٔ XSA قالب‌بندی صحیحی ندارد؛ لطفاً برای بررسی علت، خروجی خطا را بررسی کنید\&. .PP شدت: جزئی (Minor)، قطعیت: قطعی (Certain) .PP .SS "duplicate-identifier-value [AL59]" .PP مقادیر تکراری برای شناسه‌های شناخته‌شده وجود دارد\&. اگرچه این موضوع در زمان ساخت مشکلی ایجاد نمی‌کند، اما ممکن است برای کاربرانی که به secdb برای اطلاع از رفع نقص‌ها اتکا می‌کنند، هشدارهای مثبت کاذب ایجاد کند\&. .PP شدت: جدی (Serious)، قطعیت: قطعی (Certain) .PP .SS "ghsl-identifier-formatted-incorrectly [AL63]" .PP شناسهٔ GHSL قالب‌بندی صحیحی ندارد؛ لطفاً برای بررسی علت، خروجی خطا را بررسی کنید\&. .PP شدت: جزئی (Minor)، قطعیت: قطعی (Certain)