Skip to content

Update Clippy #98173

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 105 commits into from
Jun 16, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
105 commits
Select commit Hold shift + click to select a range
7975d41
Rework `branches_sharing_code`
Jarcho May 26, 2022
6fd2c6d
fix(lint): check const context
kyoto7250 May 28, 2022
007fae1
fix(manual_find_map and manual_filter_map): check clone method
kyoto7250 Jun 1, 2022
1fad953
Fully stabilize NLL
jackh726 Apr 1, 2022
990f8bf
refactor: Add some methods
kyoto7250 Jun 4, 2022
5a49918
improve for_loops_over_fallibles to detect the usage of iter, iter_mu…
DevAccentor Jun 4, 2022
f067783
Merge commit 'd9ddce8a223cb9916389c039777b6966ea448dc8' into clippyup
flip1995 Jun 4, 2022
7713f28
Remove unnecessary clap_derive dependency added in 9ee211af
flip1995 Jun 4, 2022
42cf985
refactor: check copied and cloned
kyoto7250 Jun 4, 2022
542d474
Auto merge of #8930 - kyoto7250:issue_8920, r=Alexendoo
bors Jun 4, 2022
c31b4a9
List configuration values can now be extended instead of replaced
xFrednet Jun 4, 2022
a0821fb
Don't lint `derive_partial_eq_without_eq` on private types
Jarcho Jun 4, 2022
648dbeb
Actually get the correct `ParamEnv` in `derive_partial_eq_without_eq`
Jarcho Jun 5, 2022
94e321a
needless_late_init refactoring
Jun 5, 2022
2a1a80d
needless_late_init refactoring
Jun 5, 2022
a2de347
needless_late_init refactoring
Jun 5, 2022
3737abe
change based on review
DevAccentor Jun 5, 2022
3e52dee
Auto merge of #8941 - DevAccentor:for_loops_over_fallibles, r=llogiq
bors Jun 5, 2022
9aeed6b
Improve lint doc consistency
Serial-ATA Jun 5, 2022
0902f3c
Make [`create_dir`] example ignored
Serial-ATA Jun 5, 2022
ba43f0a
Add new lint [`needless_braces_on_range_literal`]
DennisOSRM Jun 3, 2022
3058cb9
Update clippy_lints/src/needless_braces_on_range_literal.rs
DennisOSRM Jun 4, 2022
8bc1be1
Update clippy_lints/src/needless_braces_on_range_literal.rs
DennisOSRM Jun 4, 2022
5948959
Fix misnomer braces -> parenthesis
DennisOSRM Jun 4, 2022
90c8463
Rewrite check to account for floating point literals
DennisOSRM Jun 4, 2022
2e6903c
Move description into lint macro
DennisOSRM Jun 4, 2022
0409306
Implement support for implicit start and end
DennisOSRM Jun 4, 2022
c0aa1f7
Implement suggestion generation with snippet_with_applicability(.)
DennisOSRM Jun 4, 2022
58a605f
Rerun cargo dev update_lints
DennisOSRM Jun 4, 2022
bf7a786
Apply suggestions from code review
DennisOSRM Jun 5, 2022
8ba377a
Fix names to use plural
DennisOSRM Jun 5, 2022
61d7dd2
Update CHANGELOG.md
DennisOSRM Jun 5, 2022
3e77162
Auto merge of #8951 - mikerite:needless-late-init-20220605, r=giraffate
bors Jun 6, 2022
a613460
Fix `#[expect]` for `needless_borrow`, `ref_binding_to_ref`
xFrednet Jun 6, 2022
7e1730e
Fix `#[expect]` for `same_name_method`
xFrednet Jun 6, 2022
0f6e50f
Auto merge of #8933 - DennisOSRM:needless_braces_range_literal, r=dswij
bors Jun 6, 2022
8db7349
Fix `#[expect]` for `async_yields_async`
xFrednet Jun 6, 2022
62d43d2
Fix typo in redundant_pattern_match.rs
eltociear Jun 6, 2022
4e6b55e
Initial commit for the Clippy Book
joshrotenberg Jun 16, 2021
853d7ee
Book: add a ci chapter
joshrotenberg Aug 3, 2021
af38579
Move internal documentation to book
flip1995 Jan 21, 2022
206ec6e
Move syncing doc to book
flip1995 Jan 21, 2022
d6b013f
Reformat internal docs
flip1995 Jan 21, 2022
b374e0f
Remove Edition 2018 tests section from adding lints doc
flip1995 Jan 21, 2022
404432b
Book: Update GHA doc and remove GitLab placeholder
flip1995 Jan 21, 2022
d12a5c3
Book: Split up and rewrite installation and usage
flip1995 Jan 21, 2022
0e42282
Book: Write lint group descriptions
flip1995 Apr 17, 2022
97bceb0
Book: Restructure Dev chapter
flip1995 Apr 17, 2022
6b21d38
Book: Add Proposals description
flip1995 Apr 17, 2022
cbe4de2
Book: Add continuous integration description
flip1995 Apr 17, 2022
b37d24f
Move parts of CONTRIBUTING.md to the book
flip1995 Apr 17, 2022
c9cbead
Book: Add infrastructure description
flip1995 Apr 17, 2022
b551928
Auto update lint count in Clippy book
flip1995 Apr 17, 2022
1f11cd1
Remove bit-rotty list of Clippy team members from CONTRIBUTING.md
flip1995 Jun 6, 2022
9305659
Book: Improve chapter on CI
flip1995 Jun 6, 2022
99a731d
Book: Improve sync documentation
flip1995 Jun 6, 2022
b2660de
Book: Improve release documentation
flip1995 Jun 6, 2022
ad70bff
Auto merge of #8944 - xFrednet:8877-append-doc-idents, r=Manishearth
bors Jun 6, 2022
72f5ff6
Auto merge of #7359 - joshrotenberg:clippy_guide, r=xFrednet
bors Jun 6, 2022
c1dcfd1
Rollup merge of #97794 - eltociear:patch-13, r=matthiaskrgr
matthiaskrgr Jun 6, 2022
fdadebe
Add lint output to lint list
Serial-ATA May 28, 2022
cab5362
Suppress `unused` in doc examples
Serial-ATA Jun 7, 2022
bf3ab59
Changes to `iter_overeager_cloned`
Jarcho Jun 7, 2022
34f2839
Auto merge of #95565 - jackh726:remove-borrowck-mode, r=nikomatsakis
bors Jun 7, 2022
0e07f55
Hide unnecessary code in [`implicit_saturating_sub`]
Serial-ATA Jun 7, 2022
e34621c
Folding revamp.
nnethercote Jun 2, 2022
ab8c8c6
Auto merge of #8960 - Jarcho:iter_cloned, r=giraffate
bors Jun 8, 2022
50541b9
Auto merge of #8950 - Jarcho:derive_non_pub, r=dswij
bors Jun 8, 2022
919cf50
Auto merge of #8907 - kyoto7250:fix_8898, r=giraffate
bors Jun 9, 2022
9d201d6
Fix `#[expect]` for `default_numeric_fallback`
xFrednet Jun 9, 2022
649ac36
Fix [`needless_bool`] example
Serial-ATA Jun 9, 2022
4970527
Auto merge of #8954 - Serial-ATA:doc-comment-issues, r=xFrednet
bors Jun 9, 2022
2b655d4
Correct some `#[clippy::version]`s
Alexendoo Jun 9, 2022
65f518e
Auto merge of #8979 - Alexendoo:version-numbers, r=flip1995
bors Jun 9, 2022
b3c94c0
Auto merge of #8976 - xFrednet:rust-97660-catch-emissions-with-expect…
bors Jun 9, 2022
eae9c56
Add tests for some fixed redundant_closure issues
Alexendoo Jun 10, 2022
7b84a97
Make `ExprKind::Closure` a struct variant.
cjgillot Jun 11, 2022
c6d04ec
Test metadata collection in Bors CI workflow
xFrednet Jun 12, 2022
b95ce0e
Auto merge of #8983 - Alexendoo:redundant_closure_tests, r=giraffate
bors Jun 13, 2022
f2d9acf
remove unnecessary `to_string` and `String::new`
TaKO8Ki Jun 13, 2022
d024997
remove unnecessary `to_string` and `String::new` for `tool_only_span_…
TaKO8Ki Jun 13, 2022
17b7ab0
Auto merge of #8988 - xFrednet:8947-test-monster-in-bors-ci, r=flip1995
bors Jun 13, 2022
cccc750
Fix `clap` deprecation warnings
Jarcho Jun 14, 2022
7969056
Rename the `ConstS::val` field as `kind`.
nnethercote Jun 10, 2022
c80ca2c
Auto merge of #8997 - Jarcho:clap_deprecate, r=flip1995
bors Jun 14, 2022
c07cbb9
Auto merge of #8901 - Jarcho:sharing_code, r=dswij
bors Jun 14, 2022
5a45805
Auto merge of #8947 - Serial-ATA:lint-produces-output, r=xFrednet
bors Jun 14, 2022
90a4105
implement valtrees as the type-system representation for constant values
b-naber Feb 16, 2022
3f4ad95
fix clippy test failures
b-naber Jun 2, 2022
6d94f95
address review
b-naber Jun 3, 2022
196f3c0
fix wrong evaluation in clippy
b-naber Jun 3, 2022
14478bb
add lint
tamaroning Jun 6, 2022
08cfb8d
Remove error-pattern comments
Alexendoo Jun 14, 2022
32a86c0
Auto merge of #8999 - Alexendoo:error-pattern, r=xFrednet
bors Jun 14, 2022
844c06a
Auto merge of #8964 - tamaroning:read_zero_byte_vec, r=dswij
bors Jun 15, 2022
a8370d4
Fix false positive for `never_loop` struct expression fields
andylizi Jun 15, 2022
bd071bf
Rollup merge of #98110 - cjgillot:closure-brace, r=Aaron1011
JohnTitor Jun 15, 2022
71f2de9
Auto merge of #9002 - andylizi:fix-never-loop, r=Manishearth
bors Jun 15, 2022
980d88e
Build mdbook in remark workflow
flip1995 Jun 16, 2022
9edd641
Auto merge of #9005 - flip1995:book_ci_2, r=xFrednet
bors Jun 16, 2022
c5c8f61
Merge remote-tracking branch 'upstream/master' into rustup
flip1995 Jun 16, 2022
280797e
Bump nightly version -> 2022-06-16
flip1995 Jun 16, 2022
d7b5cbf
Auto merge of #9007 - flip1995:rustup, r=flip1995
bors Jun 16, 2022
7f60549
Merge commit 'd7b5cbf065b88830ca519adcb73fad4c0d24b1c7' into clippyup
flip1995 Jun 16, 2022
37cdd7e
Update Cargo.lock
flip1995 Jun 16, 2022
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
2 changes: 2 additions & 0 deletions Cargo.lock
Original file line number Diff line number Diff line change
Expand Up @@ -698,6 +698,7 @@ name = "clippy_lints"
version = "0.1.63"
dependencies = [
"cargo_metadata",
"clippy_dev",
"clippy_utils",
"if_chain",
"itertools",
Expand All @@ -708,6 +709,7 @@ dependencies = [
"semver",
"serde",
"serde_json",
"tempfile",
"toml",
"unicode-normalization",
"unicode-script",
Expand Down
19 changes: 19 additions & 0 deletions src/tools/clippy/.github/workflows/clippy_bors.yml
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,25 @@ jobs:
env:
OS: ${{ runner.os }}

metadata_collection:
needs: base
runs-on: ubuntu-latest

steps:
# Setup
- uses: rust-lang/simpleinfra/github-actions/cancel-outdated-builds@master
with:
github_token: "${{ secrets.github_token }}"

- name: Checkout
uses: actions/[email protected]

- name: Install toolchain
run: rustup show active-toolchain

- name: Test metadata collection
run: cargo collect-metadata

integration_build:
needs: changelog
runs-on: ubuntu-latest
Expand Down
9 changes: 9 additions & 0 deletions src/tools/clippy/.github/workflows/remark.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,19 @@ jobs:
- name: Install remark
run: npm install remark-cli remark-lint remark-lint-maximum-line-length remark-preset-lint-recommended remark-gfm

- name: Install mdbook
run: |
mkdir mdbook
curl -Lf https://github.com/rust-lang/mdBook/releases/download/v0.4.18/mdbook-v0.4.18-x86_64-unknown-linux-gnu.tar.gz | tar -xz --directory=./mdbook
echo `pwd`/mdbook >> $GITHUB_PATH

# Run
- name: Check *.md files
run: git ls-files -z '*.md' | xargs -0 -n 1 -I {} ./node_modules/.bin/remark {} -u lint -f > /dev/null

- name: Build mdbook
run: mdbook build book

# These jobs doesn't actually test anything, but they're only used to tell
# bors the build completed, as there is no practical way to detect when a
# workflow is successful listening to webhooks only.
Expand Down
3 changes: 3 additions & 0 deletions src/tools/clippy/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -39,3 +39,6 @@ helper.txt
*.iml
.vscode
.idea

# mdbook generated output
/book/book
2 changes: 2 additions & 0 deletions src/tools/clippy/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3605,6 +3605,7 @@ Released 2018-09-13
[`needless_match`]: https://rust-lang.github.io/rust-clippy/master/index.html#needless_match
[`needless_option_as_deref`]: https://rust-lang.github.io/rust-clippy/master/index.html#needless_option_as_deref
[`needless_option_take`]: https://rust-lang.github.io/rust-clippy/master/index.html#needless_option_take
[`needless_parens_on_range_literals`]: https://rust-lang.github.io/rust-clippy/master/index.html#needless_parens_on_range_literals
[`needless_pass_by_value`]: https://rust-lang.github.io/rust-clippy/master/index.html#needless_pass_by_value
[`needless_question_mark`]: https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
[`needless_range_loop`]: https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop
Expand Down Expand Up @@ -3677,6 +3678,7 @@ Released 2018-09-13
[`rc_buffer`]: https://rust-lang.github.io/rust-clippy/master/index.html#rc_buffer
[`rc_clone_in_vec_init`]: https://rust-lang.github.io/rust-clippy/master/index.html#rc_clone_in_vec_init
[`rc_mutex`]: https://rust-lang.github.io/rust-clippy/master/index.html#rc_mutex
[`read_zero_byte_vec`]: https://rust-lang.github.io/rust-clippy/master/index.html#read_zero_byte_vec
[`recursive_format_impl`]: https://rust-lang.github.io/rust-clippy/master/index.html#recursive_format_impl
[`redundant_allocation`]: https://rust-lang.github.io/rust-clippy/master/index.html#redundant_allocation
[`redundant_clone`]: https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone
Expand Down
168 changes: 17 additions & 151 deletions src/tools/clippy/CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,44 +13,44 @@ anything, feel free to ask questions on issues or visit the `#clippy` on [Zulip]
All contributors are expected to follow the [Rust Code of Conduct].

- [Contributing to Clippy](#contributing-to-clippy)
- [Getting started](#getting-started)
- [High level approach](#high-level-approach)
- [Finding something to fix/improve](#finding-something-to-fiximprove)
- [The Clippy book](#the-clippy-book)
- [High level approach](#high-level-approach)
- [Finding something to fix/improve](#finding-something-to-fiximprove)
- [Writing code](#writing-code)
- [Getting code-completion for rustc internals to work](#getting-code-completion-for-rustc-internals-to-work)
- [IntelliJ Rust](#intellij-rust)
- [Rust Analyzer](#rust-analyzer)
- [How Clippy works](#how-clippy-works)
- [Syncing changes between Clippy and `rust-lang/rust`](#syncing-changes-between-clippy-and-rust-langrust)
- [Patching git-subtree to work with big repos](#patching-git-subtree-to-work-with-big-repos)
- [Performing the sync from `rust-lang/rust` to Clippy](#performing-the-sync-from-rust-langrust-to-clippy)
- [Performing the sync from Clippy to `rust-lang/rust`](#performing-the-sync-from-clippy-to-rust-langrust)
- [Defining remotes](#defining-remotes)
- [Issue and PR triage](#issue-and-pr-triage)
- [Bors and Homu](#bors-and-homu)
- [Contributions](#contributions)

[Zulip]: https://rust-lang.zulipchat.com/#narrow/stream/clippy
[Rust Code of Conduct]: https://www.rust-lang.org/policies/code-of-conduct

## Getting started
## The Clippy book

**Note: If this is your first time contributing to Clippy, you should
first read the [Basics docs](doc/basics.md).**
If you're new to Clippy and don't know where to start the [Clippy book] includes
a developer guide and is a good place to start your journey.

### High level approach
<!-- FIXME: Link to the deployed book, once it is deployed through CI -->
[Clippy book]: book/src

## High level approach

1. Find something to fix/improve
2. Change code (likely some file in `clippy_lints/src/`)
3. Follow the instructions in the [Basics docs](doc/basics.md) to get set up
3. Follow the instructions in the [Basics docs](book/src/development/basics.md)
to get set up
4. Run `cargo test` in the root directory and wiggle code until it passes
5. Open a PR (also can be done after 2. if you run into problems)

### Finding something to fix/improve
## Finding something to fix/improve

All issues on Clippy are mentored, if you want help simply ask @Manishearth, @flip1995, @phansch
or @llogiq directly by mentioning them in the issue or over on [Zulip]. This list may be out of date.
All currently active mentors can be found [here](https://github.com/rust-lang/highfive/blob/master/highfive/configs/rust-lang/rust-clippy.json#L3)
All issues on Clippy are mentored, if you want help simply ask someone from the
Clippy team directly by mentioning them in the issue or over on [Zulip]. All
currently active team members can be found
[here](https://github.com/rust-lang/highfive/blob/master/highfive/configs/rust-lang/rust-clippy.json#L3)

Some issues are easier than others. The [`good-first-issue`] label can be used to find the easy
issues. You can use `@rustbot claim` to assign the issue to yourself.
Expand Down Expand Up @@ -91,20 +91,6 @@ an AST expression). `match_def_path()` in Clippy's `utils` module can also be us
[let chains]: https://github.com/rust-lang/rust/pull/94927
[nest-less]: https://github.com/rust-lang/rust-clippy/blob/5e4f0922911536f80d9591180fa604229ac13939/clippy_lints/src/bit_mask.rs#L133-L159

## Writing code

Have a look at the [docs for writing lints][adding_lints] for more details.

If you want to add a new lint or change existing ones apart from bugfixing, it's
also a good idea to give the [stability guarantees][rfc_stability] and
[lint categories][rfc_lint_cats] sections of the [Clippy 1.0 RFC][clippy_rfc] a
quick read.

[adding_lints]: https://github.com/rust-lang/rust-clippy/blob/master/doc/adding_lints.md
[clippy_rfc]: https://github.com/rust-lang/rfcs/blob/master/text/2476-clippy-uno.md
[rfc_stability]: https://github.com/rust-lang/rfcs/blob/master/text/2476-clippy-uno.md#stability-guarantees
[rfc_lint_cats]: https://github.com/rust-lang/rfcs/blob/master/text/2476-clippy-uno.md#lint-audit-and-categories

## Getting code-completion for rustc internals to work

### IntelliJ Rust
Expand Down Expand Up @@ -205,126 +191,6 @@ That's why the `else_if_without_else` example uses the `register_early_pass` fun
[early_lint_pass]: https://doc.rust-lang.org/nightly/nightly-rustc/rustc_lint/trait.EarlyLintPass.html
[late_lint_pass]: https://doc.rust-lang.org/nightly/nightly-rustc/rustc_lint/trait.LateLintPass.html

## Syncing changes between Clippy and [`rust-lang/rust`]

Clippy currently gets built with a pinned nightly version.

In the `rust-lang/rust` repository, where rustc resides, there's a copy of Clippy
that compiler hackers modify from time to time to adapt to changes in the unstable
API of the compiler.

We need to sync these changes back to this repository periodically, and the changes
made to this repository in the meantime also need to be synced to the `rust-lang/rust` repository.

To avoid flooding the `rust-lang/rust` PR queue, this two-way sync process is done
in a bi-weekly basis if there's no urgent changes. This is done starting on the day of
the Rust stable release and then every other week. That way we guarantee that we keep
this repo up to date with the latest compiler API, and every feature in Clippy is available
for 2 weeks in nightly, before it can get to beta. For reference, the first sync
following this cadence was performed the 2020-08-27.

This process is described in detail in the following sections. For general information
about `subtree`s in the Rust repository see [Rust's `CONTRIBUTING.md`][subtree].

### Patching git-subtree to work with big repos

Currently, there's a bug in `git-subtree` that prevents it from working properly
with the [`rust-lang/rust`] repo. There's an open PR to fix that, but it's stale.
Before continuing with the following steps, we need to manually apply that fix to
our local copy of `git-subtree`.

You can get the patched version of `git-subtree` from [here][gitgitgadget-pr].
Put this file under `/usr/lib/git-core` (taking a backup of the previous file)
and make sure it has the proper permissions:

```bash
sudo cp --backup /path/to/patched/git-subtree.sh /usr/lib/git-core/git-subtree
sudo chmod --reference=/usr/lib/git-core/git-subtree~ /usr/lib/git-core/git-subtree
sudo chown --reference=/usr/lib/git-core/git-subtree~ /usr/lib/git-core/git-subtree
```

_Note:_ The first time running `git subtree push` a cache has to be built. This
involves going through the complete Clippy history once. For this you have to
increase the stack limit though, which you can do with `ulimit -s 60000`.
Make sure to run the `ulimit` command from the same session you call git subtree.

_Note:_ If you are a Debian user, `dash` is the shell used by default for scripts instead of `sh`.
This shell has a hardcoded recursion limit set to 1000. In order to make this process work,
you need to force the script to run `bash` instead. You can do this by editing the first
line of the `git-subtree` script and changing `sh` to `bash`.

### Performing the sync from [`rust-lang/rust`] to Clippy

Here is a TL;DR version of the sync process (all of the following commands have
to be run inside the `rust` directory):

1. Clone the [`rust-lang/rust`] repository or make sure it is up to date.
2. Checkout the commit from the latest available nightly. You can get it using `rustup check`.
3. Sync the changes to the rust-copy of Clippy to your Clippy fork:
```bash
# Make sure to change `your-github-name` to your github name in the following command. Also be
# sure to either use a net-new branch, e.g. `sync-from-rust`, or delete the branch beforehand
# because changes cannot be fast forwarded
git subtree push -P src/tools/clippy [email protected]:your-github-name/rust-clippy sync-from-rust
```

_Note:_ This will directly push to the remote repository. You can also push
to your local copy by replacing the remote address with `/path/to/rust-clippy`
directory.

_Note:_ Most of the time you have to create a merge commit in the
`rust-clippy` repo (this has to be done in the Clippy repo, not in the
rust-copy of Clippy):
```bash
git fetch origin && git fetch upstream
git checkout sync-from-rust
git merge upstream/master
```
4. Open a PR to `rust-lang/rust-clippy` and wait for it to get merged (to
accelerate the process ping the `@rust-lang/clippy` team in your PR and/or
~~annoy~~ ask them in the [Zulip] stream.)

### Performing the sync from Clippy to [`rust-lang/rust`]

All of the following commands have to be run inside the `rust` directory.

1. Make sure Clippy itself is up-to-date by following the steps outlined in the previous
section if necessary.

2. Sync the `rust-lang/rust-clippy` master to the rust-copy of Clippy:
```bash
git checkout -b sync-from-clippy
git subtree pull -P src/tools/clippy https://github.com/rust-lang/rust-clippy master
```
3. Open a PR to [`rust-lang/rust`]

### Defining remotes

You may want to define remotes, so you don't have to type out the remote
addresses on every sync. You can do this with the following commands (these
commands still have to be run inside the `rust` directory):

```bash
# Set clippy-upstream remote for pulls
$ git remote add clippy-upstream https://github.com/rust-lang/rust-clippy
# Make sure to not push to the upstream repo
$ git remote set-url --push clippy-upstream DISABLED
# Set clippy-origin remote to your fork for pushes
$ git remote add clippy-origin [email protected]:your-github-name/rust-clippy
# Set a local remote
$ git remote add clippy-local /path/to/rust-clippy
```

You can then sync with the remote names from above, e.g.:

```bash
$ git subtree push -P src/tools/clippy clippy-local sync-from-rust
```

[gitgitgadget-pr]: https://github.com/gitgitgadget/git/pull/493
[subtree]: https://rustc-dev-guide.rust-lang.org/contributing.html#external-dependencies-subtree
[`rust-lang/rust`]: https://github.com/rust-lang/rust

## Issue and PR triage

Clippy is following the [Rust triage procedure][triage] for issues and pull
Expand Down
2 changes: 1 addition & 1 deletion src/tools/clippy/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ rustc_tools_util = { version = "0.2", path = "rustc_tools_util" }
[features]
deny-warnings = ["clippy_lints/deny-warnings"]
integration = ["tempfile"]
internal = ["clippy_lints/internal"]
internal = ["clippy_lints/internal", "tempfile"]

[package.metadata.rust-analyzer]
# This package uses #[feature(rustc_private)]
Expand Down
4 changes: 4 additions & 0 deletions src/tools/clippy/book/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Clippy Book

This is the source for the Clippy Book. See the
[book](src/infrastructure/book.md) for more information.
28 changes: 28 additions & 0 deletions src/tools/clippy/book/book.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
[book]
authors = ["The Rust Clippy Developers"]
language = "en"
multilingual = false
src = "src"
title = "Clippy Documentation"

[rust]
edition = "2018"

[output.html]
edit-url-template = "https://github.com/rust-lang/rust-clippy/edit/master/book/{path}"
git-repository-url = "https://github.com/rust-lang/rust-clippy/tree/master/book"
mathjax-support = true
site-url = "/rust-clippy/"

[output.html.playground]
editable = true
line-numbers = true

[output.html.search]
boost-hierarchy = 2
boost-paragraph = 1
boost-title = 2
expand = true
heading-split-level = 2
limit-results = 20
use-boolean-and = true
34 changes: 34 additions & 0 deletions src/tools/clippy/book/src/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Clippy

[![Clippy Test](https://github.com/rust-lang/rust-clippy/workflows/Clippy%20Test/badge.svg?branch=auto&event=push)](https://github.com/rust-lang/rust-clippy/actions?query=workflow%3A%22Clippy+Test%22+event%3Apush+branch%3Aauto)
[![License: MIT OR Apache-2.0](https://img.shields.io/crates/l/clippy.svg)](#license)

A collection of lints to catch common mistakes and improve your
[Rust](https://github.com/rust-lang/rust) code.

[There are over 500 lints included in this crate!](https://rust-lang.github.io/rust-clippy/master/index.html)

Lints are divided into categories, each with a default [lint
level](https://doc.rust-lang.org/rustc/lints/levels.html). You can choose how
much Clippy is supposed to ~~annoy~~ help you by changing the lint level by
category.

| Category | Description | Default level |
| --------------------- | ----------------------------------------------------------------------------------- | ------------- |
| `clippy::all` | all lints that are on by default (correctness, suspicious, style, complexity, perf) | **warn/deny** |
| `clippy::correctness` | code that is outright wrong or useless | **deny** |
| `clippy::suspicious` | code that is most likely wrong or useless | **warn** |
| `clippy::complexity` | code that does something simple but in a complex way | **warn** |
| `clippy::perf` | code that can be written to run faster | **warn** |
| `clippy::style` | code that should be written in a more idiomatic way | **warn** |
| `clippy::pedantic` | lints which are rather strict or might have false positives | allow |
| `clippy::nursery` | new lints that are still under development | allow |
| `clippy::cargo` | lints for the cargo manifest | allow | | allow |

More to come, please [file an
issue](https://github.com/rust-lang/rust-clippy/issues) if you have ideas!

The [lint list](https://rust-lang.github.io/rust-clippy/master/index.html) also
contains "restriction lints", which are for things which are usually not
considered "bad", but may be useful to turn on in specific cases. These should
be used very selectively, if at all.
23 changes: 23 additions & 0 deletions src/tools/clippy/book/src/SUMMARY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Summary

[Introduction](README.md)

- [Installation](installation.md)
- [Usage](usage.md)
- [Configuration](configuration.md)
- [Clippy's Lints](lints.md)
- [Continuous Integration](continuous_integration/README.md)
- [GitHub Actions](continuous_integration/github_actions.md)
- [Travis CI](continuous_integration/travis.md)
- [Development](development/README.md)
- [Basics](development/basics.md)
- [Adding Lints](development/adding_lints.md)
- [Common Tools](development/common_tools_writing_lints.md)
- [Infrastructure](development/infrastructure/README.md)
- [Syncing changes between Clippy and rust-lang/rust](development/infrastructure/sync.md)
- [Backporting Changes](development/infrastructure/backport.md)
- [Updating the Changelog](development/infrastructure/changelog_update.md)
- [Release a New Version](development/infrastructure/release.md)
- [The Clippy Book](development/infrastructure/book.md)
- [Proposals](development/proposals/README.md)
- [Roadmap 2021](development/proposals/roadmap-2021.md)
Loading