| <h2 id="cargo_fix_name">NAME</h2> |
| <div class="sectionbody"> |
| <p>cargo-fix - Automatically fix lint warnings reported by rustc</p> |
| </div> |
| <div class="sect1"> |
| <h2 id="cargo_fix_synopsis">SYNOPSIS</h2> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p><code>cargo fix [<em>OPTIONS</em>]</code></p> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="cargo_fix_description">DESCRIPTION</h2> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>This Cargo subcommand will automatically take rustc’s suggestions from |
| diagnostics like warnings and apply them to your source code. This is intended |
| to help automate tasks that rustc itself already knows how to tell you to fix! |
| The <code>cargo fix</code> subcommand is also being developed for the Rust 2018 edition |
| to provide code the ability to easily opt-in to the new edition without having |
| to worry about any breakage.</p> |
| </div> |
| <div class="paragraph"> |
| <p>Executing <code>cargo fix</code> will under the hood execute <a href="commands/cargo-check.html">cargo-check(1)</a>. Any warnings |
| applicable to your crate will be automatically fixed (if possible) and all |
| remaining warnings will be displayed when the check process is finished. For |
| example if you’d like to prepare for the 2018 edition, you can do so by |
| executing:</p> |
| </div> |
| <div class="literalblock"> |
| <div class="content"> |
| <pre>cargo fix --edition</pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>which behaves the same as <code>cargo check --all-targets</code>. Similarly if you’d like |
| to fix code for different platforms you can do:</p> |
| </div> |
| <div class="literalblock"> |
| <div class="content"> |
| <pre>cargo fix --edition --target x86_64-pc-windows-gnu</pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>or if your crate has optional features:</p> |
| </div> |
| <div class="literalblock"> |
| <div class="content"> |
| <pre>cargo fix --edition --no-default-features --features foo</pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>If you encounter any problems with <code>cargo fix</code> or otherwise have any questions |
| or feature requests please don’t hesitate to file an issue at |
| <a href="https://github.com/rust-lang/cargo" class="bare">https://github.com/rust-lang/cargo</a></p> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="cargo_fix_options">OPTIONS</h2> |
| <div class="sectionbody"> |
| <div class="sect2"> |
| <h3 id="cargo_fix_fix_options">Fix options</h3> |
| <div class="dlist"> |
| <dl> |
| <dt class="hdlist1"><strong>--broken-code</strong></dt> |
| <dd> |
| <p>Fix code even if it already has compiler errors. This is useful if <code>cargo |
| fix</code> fails to apply the changes. It will apply the changes and leave the |
| broken code in the working directory for you to inspect and manually fix.</p> |
| </dd> |
| <dt class="hdlist1"><strong>--edition</strong></dt> |
| <dd> |
| <p>Apply changes that will update the code to the latest edition. This will |
| not update the edition in the <code>Cargo.toml</code> manifest, which must be updated |
| manually.</p> |
| </dd> |
| <dt class="hdlist1"><strong>--edition-idioms</strong></dt> |
| <dd> |
| <p>Apply suggestions that will update code to the preferred style for the |
| current edition.</p> |
| </dd> |
| <dt class="hdlist1"><strong>--allow-no-vcs</strong></dt> |
| <dd> |
| <p>Fix code even if a VCS was not detected.</p> |
| </dd> |
| <dt class="hdlist1"><strong>--allow-dirty</strong></dt> |
| <dd> |
| <p>Fix code even if the working directory has changes.</p> |
| </dd> |
| <dt class="hdlist1"><strong>--allow-staged</strong></dt> |
| <dd> |
| <p>Fix code even if the working directory has staged changes.</p> |
| </dd> |
| </dl> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="cargo_fix_package_selection">Package Selection</h3> |
| <div class="paragraph"> |
| <p>By default, when no package selection options are given, the packages selected |
| depend on the current working directory. In the root of a virtual workspace, |
| all workspace members are selected (<code>--all</code> is implied). Otherwise, only the |
| package in the current directory will be selected. The default packages may be |
| overridden with the <code>workspace.default-members</code> key in the root <code>Cargo.toml</code> |
| manifest.</p> |
| </div> |
| <div class="dlist"> |
| <dl> |
| <dt class="hdlist1"><strong>-p</strong> <em>SPEC</em>…​</dt> |
| <dt class="hdlist1"><strong>--package</strong> <em>SPEC</em>…​</dt> |
| <dd> |
| <p>Fix only the specified packages. See <a href="commands/cargo-pkgid.html">cargo-pkgid(1)</a> for the |
| SPEC format. This flag may be specified multiple times.</p> |
| </dd> |
| <dt class="hdlist1"><strong>--all</strong></dt> |
| <dd> |
| <p>Fix all members in the workspace.</p> |
| </dd> |
| <dt class="hdlist1"><strong>--exclude</strong> <em>SPEC</em>…​</dt> |
| <dd> |
| <p>Exclude the specified packages. Must be used in conjunction with the |
| <code>--all</code> flag. This flag may be specified multiple times.</p> |
| </dd> |
| </dl> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="cargo_fix_target_selection">Target Selection</h3> |
| <div class="paragraph"> |
| <p>When no target selection options are given, <code>cargo fix</code> will fix all targets |
| (<code>--all-targets</code> implied). Binaries are skipped if they have |
| <code>required-features</code> that are missing.</p> |
| </div> |
| <div class="paragraph"> |
| <p>Passing target selection flags will fix only the |
| specified targets.</p> |
| </div> |
| <div class="dlist"> |
| <dl> |
| <dt class="hdlist1"><strong>--lib</strong></dt> |
| <dd> |
| <p>Fix the package’s library.</p> |
| </dd> |
| <dt class="hdlist1"><strong>--bin</strong> <em>NAME</em>…​</dt> |
| <dd> |
| <p>Fix the specified binary. This flag may be specified multiple times.</p> |
| </dd> |
| <dt class="hdlist1"><strong>--bins</strong></dt> |
| <dd> |
| <p>Fix all binary targets.</p> |
| </dd> |
| <dt class="hdlist1"><strong>--example</strong> <em>NAME</em>…​</dt> |
| <dd> |
| <p>Fix the specified example. This flag may be specified multiple times.</p> |
| </dd> |
| <dt class="hdlist1"><strong>--examples</strong></dt> |
| <dd> |
| <p>Fix all example targets.</p> |
| </dd> |
| <dt class="hdlist1"><strong>--test</strong> <em>NAME</em>…​</dt> |
| <dd> |
| <p>Fix the specified integration test. This flag may be specified multiple |
| times.</p> |
| </dd> |
| <dt class="hdlist1"><strong>--tests</strong></dt> |
| <dd> |
| <p>Fix all targets in test mode that have the <code>test = true</code> manifest |
| flag set. By default this includes the library and binaries built as |
| unittests, and integration tests. Be aware that this will also build any |
| required dependencies, so the lib target may be built twice (once as a |
| unittest, and once as a dependency for binaries, integration tests, etc.). |
| Targets may be enabled or disabled by setting the <code>test</code> flag in the |
| manifest settings for the target.</p> |
| </dd> |
| <dt class="hdlist1"><strong>--bench</strong> <em>NAME</em>…​</dt> |
| <dd> |
| <p>Fix the specified benchmark. This flag may be specified multiple times.</p> |
| </dd> |
| <dt class="hdlist1"><strong>--benches</strong></dt> |
| <dd> |
| <p>Fix all targets in benchmark mode that have the <code>bench = true</code> |
| manifest flag set. By default this includes the library and binaries built |
| as benchmarks, and bench targets. Be aware that this will also build any |
| required dependencies, so the lib target may be built twice (once as a |
| benchmark, and once as a dependency for binaries, benchmarks, etc.). |
| Targets may be enabled or disabled by setting the <code>bench</code> flag in the |
| manifest settings for the target.</p> |
| </dd> |
| <dt class="hdlist1"><strong>--all-targets</strong></dt> |
| <dd> |
| <p>Fix all targets. This is equivalent to specifying <code>--lib --bins |
| --tests --benches --examples</code>.</p> |
| </dd> |
| </dl> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="cargo_fix_feature_selection">Feature Selection</h3> |
| <div class="paragraph"> |
| <p>When no feature options are given, the <code>default</code> feature is activated for |
| every selected package.</p> |
| </div> |
| <div class="dlist"> |
| <dl> |
| <dt class="hdlist1"><strong>--features</strong> <em>FEATURES</em></dt> |
| <dd> |
| <p>Space or comma separated list of features to activate. These features only |
| apply to the current directory’s package. Features of direct dependencies |
| may be enabled with <code><dep-name>/<feature-name></code> syntax.</p> |
| </dd> |
| <dt class="hdlist1"><strong>--all-features</strong></dt> |
| <dd> |
| <p>Activate all available features of all selected packages.</p> |
| </dd> |
| <dt class="hdlist1"><strong>--no-default-features</strong></dt> |
| <dd> |
| <p>Do not activate the <code>default</code> feature of the current directory’s |
| package.</p> |
| </dd> |
| </dl> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="cargo_fix_compilation_options">Compilation Options</h3> |
| <div class="dlist"> |
| <dl> |
| <dt class="hdlist1"><strong>--target</strong> <em>TRIPLE</em></dt> |
| <dd> |
| <p>Fix for the given architecture. The default is the host |
| architecture. The general format of the triple is |
| <code><arch><sub>-<vendor>-<sys>-<abi></code>. Run <code>rustc --print target-list</code> for a |
| list of supported targets.</p> |
| <div class="paragraph"> |
| <p>This may also be specified with the <code>build.target</code> |
| <a href="reference/config.html">config value</a>.</p> |
| </div> |
| </dd> |
| <dt class="hdlist1"><strong>--release</strong></dt> |
| <dd> |
| <p>Fix optimized artifacts with the <code>release</code> profile. See the |
| <a href="#cargo_fix_profiles">PROFILES</a> section for details on how this affects profile selection.</p> |
| </dd> |
| <dt class="hdlist1"><strong>--profile</strong> <em>NAME</em></dt> |
| <dd> |
| <p>Changes fix behavior. Currently only <code>test</code> is |
| supported, which will fix with the |
| <code>#[cfg(test)]</code> attribute enabled. This is useful to have it |
| fix unit tests which are usually excluded via |
| the <code>cfg</code> attribute. This does not change the actual profile used.</p> |
| </dd> |
| </dl> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="cargo_fix_output_options">Output Options</h3> |
| <div class="dlist"> |
| <dl> |
| <dt class="hdlist1"><strong>--target-dir</strong> <em>DIRECTORY</em></dt> |
| <dd> |
| <p>Directory for all generated artifacts and intermediate files. May also be |
| specified with the <code>CARGO_TARGET_DIR</code> environment variable, or the |
| <code>build.target-dir</code> <a href="reference/config.html">config value</a>. Defaults |
| to <code>target</code> in the root of the workspace.</p> |
| </dd> |
| </dl> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="cargo_fix_display_options">Display Options</h3> |
| <div class="dlist"> |
| <dl> |
| <dt class="hdlist1"><strong>-v</strong></dt> |
| <dt class="hdlist1"><strong>--verbose</strong></dt> |
| <dd> |
| <p>Use verbose output. May be specified twice for "very verbose" output which |
| includes extra output such as dependency warnings and build script output. |
| May also be specified with the <code>term.verbose</code> |
| <a href="reference/config.html">config value</a>.</p> |
| </dd> |
| <dt class="hdlist1"><strong>-q</strong></dt> |
| <dt class="hdlist1"><strong>--quiet</strong></dt> |
| <dd> |
| <p>No output printed to stdout.</p> |
| </dd> |
| <dt class="hdlist1"><strong>--color</strong> <em>WHEN</em></dt> |
| <dd> |
| <p>Control when colored output is used. Valid values:</p> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p><code>auto</code> (default): Automatically detect if color support is available on the |
| terminal.</p> |
| </li> |
| <li> |
| <p><code>always</code>: Always display colors.</p> |
| </li> |
| <li> |
| <p><code>never</code>: Never display colors.</p> |
| </li> |
| </ul> |
| </div> |
| <div class="paragraph"> |
| <p>May also be specified with the <code>term.color</code> |
| <a href="reference/config.html">config value</a>.</p> |
| </div> |
| </dd> |
| <dt class="hdlist1"><strong>--message-format</strong> <em>FMT</em></dt> |
| <dd> |
| <p>The output format for diagnostic messages. Valid values:</p> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p><code>human</code> (default): Display in a human-readable text format.</p> |
| </li> |
| <li> |
| <p><code>json</code>: Emit JSON messages to stdout.</p> |
| </li> |
| <li> |
| <p><code>short</code>: Emit shorter, human-readable text messages.</p> |
| </li> |
| </ul> |
| </div> |
| </dd> |
| </dl> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="cargo_fix_manifest_options">Manifest Options</h3> |
| <div class="dlist"> |
| <dl> |
| <dt class="hdlist1"><strong>--manifest-path</strong> <em>PATH</em></dt> |
| <dd> |
| <p>Path to the <code>Cargo.toml</code> file. By default, Cargo searches in the current |
| directory or any parent directory for the <code>Cargo.toml</code> file.</p> |
| </dd> |
| <dt class="hdlist1"><strong>--frozen</strong></dt> |
| <dt class="hdlist1"><strong>--locked</strong></dt> |
| <dd> |
| <p>Either of these flags requires that the <code>Cargo.lock</code> file is |
| up-to-date. If the lock file is missing, or it needs to be updated, Cargo will |
| exit with an error. The <code>--frozen</code> flag also prevents Cargo from |
| attempting to access the network to determine if it is out-of-date.</p> |
| <div class="paragraph"> |
| <p>These may be used in environments where you want to assert that the |
| <code>Cargo.lock</code> file is up-to-date (such as a CI build) or want to avoid network |
| access.</p> |
| </div> |
| </dd> |
| </dl> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="cargo_fix_common_options">Common Options</h3> |
| <div class="dlist"> |
| <dl> |
| <dt class="hdlist1"><strong>-h</strong></dt> |
| <dt class="hdlist1"><strong>--help</strong></dt> |
| <dd> |
| <p>Prints help information.</p> |
| </dd> |
| <dt class="hdlist1"><strong>-Z</strong> <em>FLAG</em>…​</dt> |
| <dd> |
| <p>Unstable (nightly-only) flags to Cargo. Run <code>cargo -Z help</code> for |
| details.</p> |
| </dd> |
| </dl> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="cargo_fix_miscellaneous_options">Miscellaneous Options</h3> |
| <div class="dlist"> |
| <dl> |
| <dt class="hdlist1"><strong>-j</strong> <em>N</em></dt> |
| <dt class="hdlist1"><strong>--jobs</strong> <em>N</em></dt> |
| <dd> |
| <p>Number of parallel jobs to run. May also be specified with the |
| <code>build.jobs</code> <a href="reference/config.html">config value</a>. Defaults to |
| the number of CPUs.</p> |
| </dd> |
| </dl> |
| </div> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="cargo_fix_profiles">PROFILES</h2> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>Profiles may be used to configure compiler options such as optimization levels |
| and debug settings. See |
| <a href="reference/manifest.html#the-profile-sections">the reference</a> |
| for more details.</p> |
| </div> |
| <div class="paragraph"> |
| <p>Profile selection depends on the target and crate being built. By default the |
| <code>dev</code> or <code>test</code> profiles are used. If the <code>--release</code> flag is given, then the |
| <code>release</code> or <code>bench</code> profiles are used.</p> |
| </div> |
| <table class="tableblock frame-all grid-all fit-content"> |
| <colgroup> |
| <col> |
| <col> |
| <col> |
| </colgroup> |
| <thead> |
| <tr> |
| <th class="tableblock halign-left valign-top">Target</th> |
| <th class="tableblock halign-left valign-top">Default Profile</th> |
| <th class="tableblock halign-left valign-top"><code>--release</code> Profile</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">lib, bin, example</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>dev</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>release</code></p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">test, bench, or any target<br> |
| in "test" or "bench" mode</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>test</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>bench</code></p></td> |
| </tr> |
| </tbody> |
| </table> |
| <div class="paragraph"> |
| <p>Dependencies use the <code>dev</code>/<code>release</code> profiles.</p> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="cargo_fix_environment">ENVIRONMENT</h2> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>See <a href="reference/environment-variables.html">the reference</a> for |
| details on environment variables that Cargo reads.</p> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="cargo_fix_exit_status">Exit Status</h2> |
| <div class="sectionbody"> |
| <div class="dlist"> |
| <dl> |
| <dt class="hdlist1">0</dt> |
| <dd> |
| <p>Cargo succeeded.</p> |
| </dd> |
| <dt class="hdlist1">101</dt> |
| <dd> |
| <p>Cargo failed to complete.</p> |
| </dd> |
| </dl> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="cargo_fix_examples">EXAMPLES</h2> |
| <div class="sectionbody"> |
| <div class="olist arabic"> |
| <ol class="arabic"> |
| <li> |
| <p>Apply compiler suggestions to the local package:</p> |
| <div class="literalblock"> |
| <div class="content"> |
| <pre>cargo fix</pre> |
| </div> |
| </div> |
| </li> |
| <li> |
| <p>Convert a 2015 edition to 2018:</p> |
| <div class="literalblock"> |
| <div class="content"> |
| <pre>cargo fix --edition</pre> |
| </div> |
| </div> |
| </li> |
| <li> |
| <p>Apply suggested idioms for the current edition:</p> |
| <div class="literalblock"> |
| <div class="content"> |
| <pre>cargo fix --edition-idioms</pre> |
| </div> |
| </div> |
| </li> |
| </ol> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="cargo_fix_see_also">SEE ALSO</h2> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p><a href="commands/index.html">cargo(1)</a>, <a href="commands/cargo-check.html">cargo-check(1)</a></p> |
| </div> |
| </div> |
| </div> |