Skip to content

Deprecate plugin-clippy #2712

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
May 12, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 1 addition & 7 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -151,13 +151,7 @@ Therefore you should use `tests/ui/update-all-references.sh` (after running
Manually testing against an example file is useful if you have added some
`println!`s and test suite output becomes unreadable. To try clippy with your
local modifications, run `cargo run --bin clippy-driver -- -L ./target/debug input.rs` from the
working copy root. Your test file, here `input.rs`, needs to have clippy
enabled as a plugin:

```rust
#![feature(plugin)]
#![plugin(clippy)]
```
working copy root.

### How Clippy works

Expand Down
93 changes: 1 addition & 92 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,47 +71,9 @@ similar crates.
SYSROOT=/path/to/rustc/sysroot cargo install clippy
```

### Optional dependency

In some cases you might want to include clippy in your project directly, as an
optional dependency. To do this, just modify `Cargo.toml`:

```toml
[dependencies]
clippy = { version = "*", optional = true }
```

And, in your `main.rs` or `lib.rs`, add these lines:

```rust
#![cfg_attr(feature="clippy", feature(plugin))]
#![cfg_attr(feature="clippy", plugin(clippy))]
```

Then build by enabling the feature: `cargo +nightly build --features "clippy"`.

Instead of adding the `cfg_attr` attributes you can also run clippy on demand:
`cargo rustc --features clippy -- -Z no-trans -Z extra-plugins=clippy`
(the `-Z no trans`, while not necessary, will stop the compilation process after
typechecking (and lints) have completed, which can significantly reduce the runtime).

Alternatively, to only run clippy when testing:

```toml
[dev-dependencies]
clippy = { version = "*" }
```

and add to `main.rs` or `lib.rs`:

```
#![cfg_attr(test, feature(plugin))]
#![cfg_attr(test, plugin(clippy))]
```

### Running clippy from the command line without installing it

To have cargo compile your crate with clippy without clippy installation and without needing `#![plugin(clippy)]`
To have cargo compile your crate with clippy without clippy installation
in your code, you can use:

```terminal
Expand All @@ -121,53 +83,6 @@ cargo run --bin cargo-clippy --manifest-path=path_to_clippys_Cargo.toml
*[Note](https://github.com/rust-lang-nursery/rust-clippy/wiki#a-word-of-warning):*
Be sure that clippy was compiled with the same version of rustc that cargo invokes here!

### As a Compiler Plugin

*Note:* This is not a recommended installation method.

Since stable Rust is backwards compatible, you should be able to
compile your stable programs with nightly Rust with clippy plugged in to
circumvent this.

Add in your `Cargo.toml`:

```toml
[dependencies]
clippy = "*"
```

You then need to add `#![feature(plugin)]` and `#![plugin(clippy)]` to the top
of your crate entry point (`main.rs` or `lib.rs`).

Sample `main.rs`:

```rust
#![feature(plugin)]

#![plugin(clippy)]


fn main(){
let x = Some(1u8);
match x {
Some(y) => println!("{:?}", y),
_ => ()
}
}
```

Produces this warning:

```terminal
src/main.rs:8:5: 11:6 warning: you seem to be trying to use match for destructuring a single type. Consider using `if let`, #[warn(single_match)] on by default
src/main.rs:8 match x {
src/main.rs:9 Some(y) => println!("{:?}", y),
src/main.rs:10 _ => ()
src/main.rs:11 }
src/main.rs:8:5: 11:6 help: Try
if let Some(y) = x { println!("{:?}", y) }
```

## Configuration

Some lints can be configured in a TOML file named with `clippy.toml` or `.clippy.toml`. It contains basic `variable = value` mapping eg.
Expand All @@ -180,12 +95,6 @@ cyclomatic-complexity-threshold = 30
See the [list of lints](https://rust-lang-nursery.github.io/rust-clippy/master/index.html) for more information about which lints can be configured and the
meaning of the variables.

You can also specify the path to the configuration file with:

```rust
#![plugin(clippy(conf_file="path/to/clippy's/configuration"))]
```

To deactivate the “for further information visit *lint-link*” message you can
define the `CLIPPY_DISABLE_DOCS_LINKS` environment variable.

Expand Down
7 changes: 4 additions & 3 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,11 @@ extern crate clippy_lints;
pub fn plugin_registrar(reg: &mut Registry) {
reg.sess.lint_store.with_read_lock(|lint_store| {
for (lint, _, _) in lint_store.get_lint_groups() {
reg.sess
.struct_warn("the clippy plugin is being deprecated, please use cargo clippy or rls with the clippy feature")
.emit();
if lint == "clippy" {
reg.sess
.struct_warn("running cargo clippy on a crate that also imports the clippy plugin")
.emit();
// cargo clippy run on a crate that also uses the plugin
return;
}
}
Expand Down
2 changes: 0 additions & 2 deletions tests/conf_whitelisted.rs

This file was deleted.

7 changes: 3 additions & 4 deletions tests/cc_seme.rs → tests/run-pass/cc_seme.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
#![feature(plugin)]
#![plugin(clippy)]

#[allow(dead_code)]
enum Baz {
One,
Expand All @@ -12,7 +9,9 @@ struct Test {
b: Baz,
}

fn main() {
fn main() { }

pub fn foo() {
use Baz::*;
let x = Test { t: Some(0), b: One };

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
#![feature(plugin)]
#![plugin(clippy)]
#![deny(clippy)]

#[allow(dead_code)]
Expand All @@ -15,3 +13,5 @@ impl Iterator for Foo {
}

impl ExactSizeIterator for Foo {}

fn main() {}
2 changes: 0 additions & 2 deletions tests/issue-825.rs → tests/run-pass/issue-825.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
#![feature(plugin)]
#![plugin(clippy)]
#![allow(warnings)]

// this should compile in a reasonable amount of time
Expand Down
11 changes: 6 additions & 5 deletions tests/mut_mut_macro.rs → tests/run-pass/mut_mut_macro.rs
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
#![feature(plugin)]
#![plugin(clippy)]
#![deny(mut_mut, zero_ptr, cmp_nan)]
#![allow(dead_code)]

#[macro_use]
extern crate lazy_static;
// compiletest + extern crates doesn't work together
//#[macro_use]
//extern crate lazy_static;

use std::collections::HashMap;
//use std::collections::HashMap;

// ensure that we don't suggest `is_nan` and `is_null` inside constants
// FIXME: once const fn is stable, suggest these functions again in constants
Expand All @@ -17,6 +16,7 @@ static mut BUH: bool = 42.0 < std::f32::NAN;

#[allow(unused_variables, unused_mut)]
fn main() {
/*
lazy_static! {
static ref MUT_MAP : HashMap<usize, &'static str> = {
let mut m = HashMap::new();
Expand All @@ -26,6 +26,7 @@ fn main() {
static ref MUT_COUNT : usize = MUT_MAP.len();
}
assert_eq!(*MUT_COUNT, 1);
*/
// FIXME: don't lint in array length, requires `check_body`
//let _ = [""; (42.0 < std::f32::NAN) as usize];
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#![feature(plugin)]
#![plugin(clippy)]



#[macro_use]
extern crate serde_derive;
Expand All @@ -16,3 +16,5 @@ struct MacroAttributesTest {
fn macro_attributes_test() {
let _ = MacroAttributesTest { _foo: 0 };
}

fn main() {}
1 change: 1 addition & 0 deletions tests/run-pass/whitelist/conf_whitelisted.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
fn main() {}
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// error-pattern: error reading Clippy's configuration file


#![plugin(clippy(conf_file="../ui/conf_bad_toml.toml"))]


fn main() {}
Empty file.
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// error-pattern: error reading Clippy's configuration file: `blacklisted-names` is expected to be a `Vec < String >` but is a `integer`


#![plugin(clippy(conf_file="../ui/conf_bad_type.toml"))]


fn main() {}
Empty file.
6 changes: 0 additions & 6 deletions tests/ui/conf_bad_arg.rs

This file was deleted.

11 changes: 0 additions & 11 deletions tests/ui/conf_bad_arg.stderr

This file was deleted.

11 changes: 0 additions & 11 deletions tests/ui/conf_bad_toml.stderr

This file was deleted.

11 changes: 0 additions & 11 deletions tests/ui/conf_bad_type.stderr

This file was deleted.

11 changes: 0 additions & 11 deletions tests/ui/conf_french_blacklisted_name.stderr

This file was deleted.

5 changes: 0 additions & 5 deletions tests/ui/conf_path_non_string.rs

This file was deleted.

11 changes: 0 additions & 11 deletions tests/ui/conf_path_non_string.stderr

This file was deleted.

11 changes: 0 additions & 11 deletions tests/ui/conf_unknown_key.stderr

This file was deleted.

2 changes: 1 addition & 1 deletion tests/ui/cyclomatic_complexity.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#![feature(plugin, custom_attribute)]
#![feature(custom_attribute)]

#![allow(clippy)]
#![warn(cyclomatic_complexity)]
Expand Down
2 changes: 1 addition & 1 deletion tests/ui/cyclomatic_complexity_attr_used.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#![feature(plugin, custom_attribute)]
#![feature(custom_attribute)]

#![warn(cyclomatic_complexity)]
#![warn(unused)]
Expand Down
2 changes: 1 addition & 1 deletion tests/ui/diverging_sub_expression.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#![feature(plugin, never_type)]
#![feature(never_type)]

#![warn(diverging_sub_expression)]
#![allow(match_same_arms, logic_bug)]
Expand Down
2 changes: 1 addition & 1 deletion tests/ui/dlist.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#![feature(plugin, alloc)]
#![feature(alloc)]
#![feature(associated_type_defaults)]


Expand Down
2 changes: 1 addition & 1 deletion tests/ui/enum_variants.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#![feature(plugin, non_ascii_idents)]
#![feature(non_ascii_idents)]

#![warn(clippy, pub_enum_variant_names)]

Expand Down
2 changes: 1 addition & 1 deletion tests/ui/escape_analysis.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#![feature(plugin, box_syntax)]
#![feature(box_syntax)]

#![allow(warnings, clippy)]

Expand Down
2 changes: 1 addition & 1 deletion tests/ui/excessive_precision.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#![feature(plugin, custom_attribute)]
#![feature(custom_attribute)]
#![warn(excessive_precision)]
#![allow(print_literal)]

Expand Down
2 changes: 1 addition & 1 deletion tests/ui/for_loop.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#![feature(plugin, custom_attribute)]
#![feature(custom_attribute)]


use std::collections::*;
Expand Down
4 changes: 2 additions & 2 deletions tests/ui/mut_mut.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
#![allow(unused, no_effect, unnecessary_operation)]
#![warn(mut_mut)]

//#![plugin(regex_macros)]
//extern crate regex;



fn fun(x : &mut &mut u32) -> bool {
**x > 0
Expand Down
2 changes: 1 addition & 1 deletion tests/ui/new_without_default.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#![feature(plugin, const_fn)]
#![feature(const_fn)]


#![allow(dead_code)]
Expand Down
Loading