| CARGO-FIX(1) | General Commands Manual | CARGO-FIX(1) |
نام (NAME)
cargo-fix - اصلاح خودکار هشدارهای کامپایلر در کد منبع Rust
خلاصه دستور (SYNOPSIS)
cargo fix [گزینهها]
توضیحات (DESCRIPTION)
این زیردستور Cargo بهطور خودکار پیشنهادات rustc ناشی از هشدارهای تشخیصی را دریافت کرده و آنها را روی کد منبع شما اعمال میکند. هدف این ابزار، خودکارسازی کارهایی است که خود rustc از قبل میداند چگونه روش اصلاح آنها را به شما بگوید!
اجرای cargo fix در پشت صحنه دستور cargo-check(1) را اجرا میکند. هرگونه هشدار قابل اعمال روی کریت شما بهصورت خودکار برطرف میشود (در صورت امکان) و تمام هشدارهای باقیمانده پس از اتمام فرآیند بررسی نمایش داده خواهند شد. برای نمونه، اگر میخواهید تمام اصلاحات را روی بسته فعلی اعمال کنید، میتوانید دستور زیر را اجرا نمایید:
cargo fix
که رفتاری مشابه cargo check --all-targets دارد.
دستور cargo fix تنها قادر به اصلاح کدهایی است که معمولاً با cargo check کامپایل میشوند. اگر کدی بهطور شرطی با ویژگیهای اختیاری (features) فعال شده باشد، لازم است آن ویژگیها را فعال کنید تا آن کد مورد تحلیل قرار گیرد:
cargo fix --features foo
بهطور مشابه، برای سایر عبارتهای cfg مانند کدهای مختص به یک پلتفرم خاص، باید گزینه --target را ارسال کنید تا کد برای آن هدف مشخص اصلاح شود.
cargo fix --target x86_64-pc-windows-gnu
در صورت بروز هرگونه مشکل در cargo fix یا داشتن هرگونه سوال یا درخواست ویژگی جدید، لطفاً در آدرس https://github.com/rust-lang/cargo یک گزارش مشکل (issue) ثبت کنید.
مهاجرت نسخه زبانی (Edition migration)
زیردستور cargo fix همچنین میتواند برای مهاجرت یک بسته از یک نسخه زبانی (edition) https://doc.rust-lang.org/edition-guide/editions/transitioning-an-existing-project-to-a-new-edition.html به نسخه بعدی استفاده شود. روال کلی به این صورت است:
و امیدواریم کار تمام باشد! فقط به یاد داشته باشید که طبق هشدارهای ذکر شده در بالا، cargo fix نمیتواند کدهای مربوط به ویژگیهای غیرفعال یا عبارتهای cfg را بهروزرسانی کند. همچنین در برخی موارد نادر، کامپایلر قادر به مهاجرت خودکار تمام کد به نسخه جدید نیست و این امر ممکن است پس از ساخت پروژه با نسخه جدید، نیازمند اعمال تغییرات دستی باشد.
گزینهها (OPTIONS)
گزینههای اصلاح (Fix options)
--broken-code
--edition
--edition-idioms
--allow-no-vcs
--allow-dirty
--allow-staged
انتخاب بسته (Package Selection)
بهطور پیشفرض، زمانی که هیچ گزینه انتخابی برای بستهها مشخص نشده باشد، بستههای انتخابشده به فایل مانیفست بستگی دارند (بر اساس پوشه کاری فعلی در صورتی که --manifest-path داده نشده باشد). اگر مانیفست، ریشه یک فضای کاری (workspace) باشد، اعضای پیشفرض فضای کاری انتخاب میشوند؛ در غیر این صورت فقط بسته تعریفشده توسط مانیفست انتخاب خواهد شد.
اعضای پیشفرض یک فضای کاری را میتوان بهطور صریح با کلید workspace.default-members در مانیفست ریشه تعیین کرد. اگر این کلید تنظیم نشده باشد، یک فضای کاری مجازی شامل تمام اعضای فضای کاری خواهد بود (معادل ارسال --workspace) و یک فضای کاری غیرمجازی فقط خود کریت ریشه را در بر خواهد گرفت.
-p spec…, --package spec…
--workspace
--all
--exclude SPEC…
انتخاب هدف (Target Selection)
هنگامی که هیچ گزینه انتخابی برای هدف مشخص نشده باشد، cargo fix تمام هدفها را اصلاح میکند (فلگ --all-targets بهصورت ضمنی اعمال میشود). باینریهایی که نیازمند ویژگیهایی (required-features) هستند که موجود نیستند، نادیده گرفته میشوند.
ارسال فلگهای انتخاب هدف، فقط هدفهای مشخصشده را اصلاح میکند.
توجه داشته باشید که فلگهای --bin، --example، --test و --bench نیز از الگوهای رایج گلوب یونیکس مانند *، ? و [] پشتیبانی میکنند. با این حال، برای جلوگیری از بسط تصادفی الگوهای گلوب توسط پوسته پیش از پردازش توسط Cargo، باید دور هر الگوی گلوب از نقلقول تکی یا دوتایی استفاده کنید.
--lib
--bin name…
--bins
--example name…
--examples
--test name…
--tests
--bench name…
--benches
--all-targets
انتخاب ویژگی (Feature Selection)
فلگهای ویژگی به شما امکان میدهند کنترل کنید کدام ویژگیها فعال شوند. در صورت عدم تعیین گزینههای ویژگی، ویژگی default برای هر بسته انتخابشده فعال میشود.
برای جزئیات بیشتر به مستندات ویژگیها https://doc.rust-lang.org/cargo/reference/features.html#command-line-feature-options مراجعه کنید.
-F features, --features features
--all-features
--no-default-features
گزینههای کامپایل (Compilation Options)
--target triple
مقادیر ممکن:
این مورد را میتوان با مقدار پیکربندی build.target https://doc.rust-lang.org/cargo/reference/config.html نیز مشخص کرد.
توجه داشته باشید که مشخص کردن این فلگ باعث میشود Cargo در حالت متفاوتی اجرا شود که در آن مصنوعات هدف در یک پوشه جداگانه قرار میگیرند. برای جزئیات بیشتر به مستندات حافظه موقت ساخت (build cache) https://doc.rust-lang.org/cargo/reference/build-cache.html مراجعه کنید.
-r, --release
--profile name
بهعنوان یک حالت خاص، مشخص کردن نمایه test همچنین بررسی در حالت آزمایشی را فعال میکند که بررسی آزمونها و گزینه cfg با نام test را فعال خواهد کرد. برای جزئیات بیشتر به آزمونهای rustc https://doc.rust-lang.org/rustc/tests/index.html مراجعه کنید.
برای جزئیات بیشتر درباره نمایهها به مرجع https://doc.rust-lang.org/cargo/reference/profiles.html مراجعه کنید.
--timings
در پایان فرآیند ساخت، فایلی به نام cargo-timing.html در پوشه target/cargo-timings نوشته خواهد شد. در صورتی که بخواهید به اجرای قبلی نگاهی بیندازید، یک گزارش اضافی همراه با برچسب زمان در نام فایل نیز ذخیره میشود. این گزارشها فقط برای استفاده انسان مناسب هستند و دادههای زمانبندی ماشینخوان ارائه نمیدهند.
گزینههای خروجی (Output Options)
--target-dir directory
گزینههای نمایش (Display Options)
-v, --verbose
-q, --quiet
--color when
همچنین میتواند با مقدار پیکربندی term.color https://doc.rust-lang.org/cargo/reference/config.html مشخص شود.
--message-format fmt
گزینههای مانیفست (Manifest Options)
--manifest-path path
--ignore-rust-version
--locked
میتوان از آن در محیطهایی که نیاز به ساختهای قطعی و قطعیگرا (deterministic) دارند، مانند خطوط لوله CI استفاده کرد.
--offline
توجه داشته باشید که این ممکن است به تفکیک وابستگی متفاوتی نسبت به حالت آنلاین منجر شود. Cargo خود را به کریتهایی محدود میکند که بهصورت محلی دانلود شدهاند، حتی اگر نسخه جدیدتری همانطور که در نسخه محلی ایندکس نشان داده شده وجود داشته باشد. برای دانلود وابستگیها قبل از آفلاین شدن، دستور cargo-fetch(1) را ببینید.
همچنین میتواند با مقدار پیکربندی net.offline https://doc.rust-lang.org/cargo/reference/config.html مشخص شود.
--frozen
گزینههای عمومی (Common Options)
+toolchain
--config KEY=VALUE یا PATH
-C PATH
این گزینه فقط در کانال nightly https://doc.rust-lang.org/book/appendix-07-nightly-rust.html در دسترس است و برای فعالسازی به فلگ -Z unstable-options نیاز دارد (به #10098 https://github.com/rust-lang/cargo/issues/10098 مراجعه کنید).
-h, --help
-Z flag
گزینههای متفرقه (Miscellaneous Options)
-j N, --jobs N
--keep-going
برای نمونه، اگر بسته فعلی به وابستگیهای fails و works وابسته باشد که یکی از آنها در ساخت شکست میخورد، دستور cargo fix -j1 ممکن است وابستگی موفق را بسازد یا نسازد (بسته به اینکه Cargo کدام یک از دو ساخت را برای اجرا در ابتدا انتخاب کرده باشد)، در حالی که cargo fix -j1 --keep-going قطعاً هر دو ساخت را اجرا خواهد کرد، حتی اگر موردی که اول اجرا شده شکست بخورد.
محیط (ENVIRONMENT)
برای جزئیات درباره متغیرهای محیطی که Cargo میخواند، به مرجع https://doc.rust-lang.org/cargo/reference/environment-variables.html مراجعه کنید.
وضعیت خروج (EXIT STATUS)
مثالها (EXAMPLES)
cargo fix
cargo fix --edition
cargo fix --edition-idioms