clippy
clippy documentation
- Version in Mega-Linter: 0.1.55
- Visit Official Web Site
- See How to configure clippy rules
- See How to disable clippy rules in files
- See Index of problems detected by clippy
Configuration in Mega-Linter
- Enable clippy by adding
RUST_CLIPPY
in ENABLE_LINTERS variable - Disable clippy by adding
RUST_CLIPPY
in DISABLE_LINTERS variable
Variable | Description | Default value |
---|---|---|
RUST_CLIPPY_ARGUMENTS | User custom arguments to add in linter CLI call Ex: -s --foo "bar" |
|
RUST_CLIPPY_FILE_EXTENSIONS | Allowed file extensions. "*" matches any extension, "" matches empty extension. Empty list excludes all filesEx: [".py", ""] |
[".rs"] |
RUST_CLIPPY_FILE_NAMES_REGEX | File name regex filters. Regular expression list for filtering files by their base names using regex full match. Empty list includes all files Ex: ["Dockerfile(-.+)?", "Jenkinsfile"] |
Include every file |
RUST_CLIPPY_PRE_COMMANDS | List of bash commands to run before the linter | None |
RUST_CLIPPY_POST_COMMANDS | List of bash commands to run after the linter | None |
RUST_CLIPPY_CONFIG_FILE | clippy configuration file nameUse LINTER_DEFAULT to let the linter find it |
.clippy.toml |
RUST_CLIPPY_RULES_PATH | Path where to find linter configuration file | Workspace folder, then Mega-Linter default rules |
RUST_CLIPPY_DISABLE_ERRORS | Run linter but consider errors as warnings | false |
RUST_CLIPPY_DISABLE_ERRORS_IF_LESS_THAN | Maximum number of errors allowed | 0 |
IDE Integration
Use clippy in your favorite IDE to catch errors before Mega-Linter !
IDE | Extension Name | Install | |
---|---|---|---|
Atom | Atom IDE Rest | Visit Web Site |
Mega-Linter Flavours
This linter is available in the following flavours
Flavor | Description | Embedded linters | Info | |
---|---|---|---|---|
all | Default Mega-Linter Flavor | 93 | ||
rust | Optimized for RUST based projects | 40 |
Behind the scenes
How are identified applicable files
- File extensions:
.rs
How the linting is performed
clippy is called once on the whole project directory
- filtering can not be done using Mega-Linter configuration variables,it must be done using clippy configuration or ignore file (if existing)
VALIDATE_ALL_CODEBASE: false
does not make clippy analyze only updated files
Example calls
cargo clippy
Help content
Rust's package manager
USAGE:
cargo [+toolchain] [OPTIONS] [SUBCOMMAND]
OPTIONS:
-V, --version Print version info and exit
--list List installed commands
--explain <CODE> Run `rustc --explain CODE`
-v, --verbose Use verbose output (-vv very verbose/build.rs output)
-q, --quiet No output printed to stdout
--color <WHEN> Coloring: auto, always, never
--frozen Require Cargo.lock and cache are up to date
--locked Require Cargo.lock is up to date
--offline Run without accessing the network
--config <KEY=VALUE>... Override a configuration value (unstable)
-Z <FLAG>... Unstable (nightly-only) flags to Cargo, see 'cargo -Z help' for details
-h, --help Prints help information
Some common cargo commands are (see all commands with --list):
build, b Compile the current package
check, c Analyze the current package and report errors, but don't build object files
clean Remove the target directory
doc, d Build this package's and its dependencies' documentation
new Create a new cargo package
init Create a new cargo package in an existing directory
run, r Run a binary or example of the local package
test, t Run the tests
bench Run the benchmarks
update Update dependencies listed in Cargo.lock
search Search registry for crates
publish Package and upload this package to the registry
install Install a Rust binary. Default location is $HOME/.cargo/bin
uninstall Uninstall a Rust binary
See 'cargo help <command>' for more information on a specific command.
Installation on mega-linter Docker image
- Dockerfile commands :
# Parent descriptor install
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
ENV PATH="/root/.cargo/bin:${PATH}"
# Linter install
RUN rustup component add clippy
Example success log
Results of clippy linter (version 0.0.212)
See documentation on https://nvuillam.github.io/mega-linter/descriptors/rust_clippy/
-----------------------------------------------
[SUCCESS] .automation/test/rust/good
Checking megalinter v1.0.0 (.automation/test/rust/good)
warning: function is never used: `main`
--> rust_good_1.rs:9:4
|
9 | fn main() {
| ^^^^
|
= note: `#[warn(dead_code)]` on by default
warning: 1 warning emitted
Finished dev [unoptimized + debuginfo] target(s) in 0.24s
Example error log
Results of clippy linter (version 0.0.212)
See documentation on https://nvuillam.github.io/mega-linter/descriptors/rust_clippy/
-----------------------------------------------
[ERROR] .automation/test/rust/bad
Checking megalinter v1.0.0 (.automation/test/rust/bad)
error: mismatched closing delimiter: `}`
--> rust_bad_1.rs:14:1
|
9 | fn main() {
| - closing delimiter possibly meant for this
...
13 | println!("Hello World!"
| - unclosed delimiter
14 | }
| ^ mismatched closing delimiter
error: aborting due to previous error
error: could not compile `megalinter`
To learn more, run the command again with --verbose.