[PATCH 00/19] rust: lint improvements

Miguel Ojeda posted 19 patches 1 year, 3 months ago
.clippy.toml                             |   9 ++
.gitignore                               |   1 +
Documentation/rust/coding-guidelines.rst | 139 +++++++++++++++++++++++
MAINTAINERS                              |   1 +
Makefile                                 |  15 ++-
rust/Makefile                            |   5 +-
rust/bindings/lib.rs                     |   1 +
rust/kernel/alloc/allocator.rs           |   2 +
rust/kernel/error.rs                     |  11 +-
rust/kernel/init.rs                      |  30 ++---
rust/kernel/init/__internal.rs           |  11 +-
rust/kernel/init/macros.rs               |  18 ++-
rust/kernel/ioctl.rs                     |   2 +-
rust/kernel/lib.rs                       |   1 +
rust/kernel/list.rs                      |   1 +
rust/kernel/list/arc_field.rs            |   2 +-
rust/kernel/print.rs                     |   5 +-
rust/kernel/rbtree.rs                    |   9 +-
rust/kernel/std_vendor.rs                |  16 ++-
rust/kernel/str.rs                       |   7 +-
rust/kernel/sync/arc.rs                  |   2 +-
rust/kernel/sync/arc/std_vendor.rs       |   2 +
rust/kernel/sync/condvar.rs              |   1 -
rust/kernel/sync/lock.rs                 |   6 +-
rust/kernel/types.rs                     |  74 ++++++------
rust/kernel/workqueue.rs                 |   9 +-
rust/uapi/lib.rs                         |   1 +
samples/rust/rust_print.rs               |   1 +
scripts/Makefile.build                   |   2 +-
29 files changed, 293 insertions(+), 91 deletions(-)
create mode 100644 .clippy.toml
[PATCH 00/19] rust: lint improvements
Posted by Miguel Ojeda 1 year, 3 months ago
Hi all,

This is a series that contains a series of lint-related things:

  - Cleanups and other improvements and fixes, including removing `allow`s that
    are not needed anymore for different reasons and a workaround for
    `dbg_macro` detection.

  - The enablement of some safety lints so that the toolchain enforces that we
    write `// SAFETY` comments and `# Safety` sections properly.

  - The addition of `.clippy.toml`, which allows us to take advantage of a few
    configuration options.

  - Start using the new `#[expect(...)]` feature and add documentation on it as
    well as lints in general.

Overall, this should improve the quality of the code and documentation as well
as reduce the time needed in reviews.

I want to mention Trevor's nice work on lints from a while ago [1]. I think we
should still do something like that: discuss which lints we would like to have
one-by-one and start enabling them (and perhaps have a file like Trevor proposed
etc.).

For the moment, though, I am sending these, since we would like to have at least
the safety-related ones enabled soon [2]: now that more code and developers
are joining, it sounds like a good time to start enforcing it -- it should make
new Rust kernel developers aware of the need of writing them, which has proven
to be a common request from reviewers.

If needed, the series can be applied partially or split, but most of it should
be fairly uncontroversial.

Link: https://github.com/Rust-for-Linux/linux/pull/1025 [1]
Link: https://lore.kernel.org/rust-for-linux/CD29DF8F-7FF3-466F-9724-BC92C14A68BD@collabora.com/ [2]

Miguel Ojeda (19):
  rust: workqueue: remove unneeded ``#[allow(clippy::new_ret_no_self)]`
  rust: sort global Rust flags
  rust: types: avoid repetition in `{As,From}Bytes` impls
  rust: enable `clippy::undocumented_unsafe_blocks` lint
  rust: enable `clippy::unnecessary_safety_comment` lint
  rust: enable `clippy::unnecessary_safety_doc` lint
  rust: enable `clippy::ignored_unit_patterns` lint
  rust: enable `rustdoc::unescaped_backticks` lint
  rust: init: remove unneeded `#[allow(clippy::disallowed_names)]`
  rust: sync: remove unneeded
    `#[allow(clippy::non_send_fields_in_send_ty)]`
  rust: introduce `.clippy.toml`
  rust: replace `clippy::dbg_macro` with `disallowed_macros`
  rust: rbtree: fix `SAFETY` comments that should be `# Safety` sections
  rust: provide proper code documentation titles
  rust: enable Clippy's `check-private-items`
  Documentation: rust: add coding guidelines on lints
  rust: start using the `#[expect(...)]` attribute
  Documentation: rust: discuss `#[expect(...)]` in the guidelines
  rust: std_vendor: simplify `{ .. macro! .. }` with inner attributes

 .clippy.toml                             |   9 ++
 .gitignore                               |   1 +
 Documentation/rust/coding-guidelines.rst | 139 +++++++++++++++++++++++
 MAINTAINERS                              |   1 +
 Makefile                                 |  15 ++-
 rust/Makefile                            |   5 +-
 rust/bindings/lib.rs                     |   1 +
 rust/kernel/alloc/allocator.rs           |   2 +
 rust/kernel/error.rs                     |  11 +-
 rust/kernel/init.rs                      |  30 ++---
 rust/kernel/init/__internal.rs           |  11 +-
 rust/kernel/init/macros.rs               |  18 ++-
 rust/kernel/ioctl.rs                     |   2 +-
 rust/kernel/lib.rs                       |   1 +
 rust/kernel/list.rs                      |   1 +
 rust/kernel/list/arc_field.rs            |   2 +-
 rust/kernel/print.rs                     |   5 +-
 rust/kernel/rbtree.rs                    |   9 +-
 rust/kernel/std_vendor.rs                |  16 ++-
 rust/kernel/str.rs                       |   7 +-
 rust/kernel/sync/arc.rs                  |   2 +-
 rust/kernel/sync/arc/std_vendor.rs       |   2 +
 rust/kernel/sync/condvar.rs              |   1 -
 rust/kernel/sync/lock.rs                 |   6 +-
 rust/kernel/types.rs                     |  74 ++++++------
 rust/kernel/workqueue.rs                 |   9 +-
 rust/uapi/lib.rs                         |   1 +
 samples/rust/rust_print.rs               |   1 +
 scripts/Makefile.build                   |   2 +-
 29 files changed, 293 insertions(+), 91 deletions(-)
 create mode 100644 .clippy.toml


base-commit: 68d3b6aa08708bb3907c2c13eaf4b3ccf4805160
--
2.46.0
Re: [PATCH 00/19] rust: lint improvements
Posted by Miguel Ojeda 1 year, 2 months ago
On Wed, Sep 4, 2024 at 10:44 PM Miguel Ojeda <ojeda@kernel.org> wrote:
>
> Hi all,
>
> This is a series that contains a series of lint-related things:
>
>   - Cleanups and other improvements and fixes, including removing `allow`s that
>     are not needed anymore for different reasons and a workaround for
>     `dbg_macro` detection.
>
>   - The enablement of some safety lints so that the toolchain enforces that we
>     write `// SAFETY` comments and `# Safety` sections properly.
>
>   - The addition of `.clippy.toml`, which allows us to take advantage of a few
>     configuration options.
>
>   - Start using the new `#[expect(...)]` feature and add documentation on it as
>     well as lints in general.
>
> Overall, this should improve the quality of the code and documentation as well
> as reduce the time needed in reviews.
>
> I want to mention Trevor's nice work on lints from a while ago [1]. I think we
> should still do something like that: discuss which lints we would like to have
> one-by-one and start enabling them (and perhaps have a file like Trevor proposed
> etc.).
>
> For the moment, though, I am sending these, since we would like to have at least
> the safety-related ones enabled soon [2]: now that more code and developers
> are joining, it sounds like a good time to start enforcing it -- it should make
> new Rust kernel developers aware of the need of writing them, which has proven
> to be a common request from reviewers.
>
> If needed, the series can be applied partially or split, but most of it should
> be fairly uncontroversial.
>
> Link: https://github.com/Rust-for-Linux/linux/pull/1025 [1]
> Link: https://lore.kernel.org/rust-for-linux/CD29DF8F-7FF3-466F-9724-BC92C14A68BD@collabora.com/ [2]

Applied to `rust-next` -- thanks everyone!

Cheers,
Miguel
Re: [PATCH 00/19] rust: lint improvements
Posted by Gary Guo 1 year, 3 months ago
On Wed,  4 Sep 2024 22:43:28 +0200
Miguel Ojeda <ojeda@kernel.org> wrote:

> Hi all,
> 
> This is a series that contains a series of lint-related things:
> 
>   - Cleanups and other improvements and fixes, including removing `allow`s that
>     are not needed anymore for different reasons and a workaround for
>     `dbg_macro` detection.
> 
>   - The enablement of some safety lints so that the toolchain enforces that we
>     write `// SAFETY` comments and `# Safety` sections properly.
> 
>   - The addition of `.clippy.toml`, which allows us to take advantage of a few
>     configuration options.
> 
>   - Start using the new `#[expect(...)]` feature and add documentation on it as
>     well as lints in general.
> 
> Overall, this should improve the quality of the code and documentation as well
> as reduce the time needed in reviews.
> 
> I want to mention Trevor's nice work on lints from a while ago [1]. I think we
> should still do something like that: discuss which lints we would like to have
> one-by-one and start enabling them (and perhaps have a file like Trevor proposed
> etc.).
> 
> For the moment, though, I am sending these, since we would like to have at least
> the safety-related ones enabled soon [2]: now that more code and developers
> are joining, it sounds like a good time to start enforcing it -- it should make
> new Rust kernel developers aware of the need of writing them, which has proven
> to be a common request from reviewers.
> 
> If needed, the series can be applied partially or split, but most of it should
> be fairly uncontroversial.
> 
> Link: https://github.com/Rust-for-Linux/linux/pull/1025 [1]
> Link: https://lore.kernel.org/rust-for-linux/CD29DF8F-7FF3-466F-9724-BC92C14A68BD@collabora.com/ [2]

Built with clippy locally and it's all clean.

Tested-by: Gary Guo <gary@garyguo.net>

Apart from one `#[]`/`#![]` modification - which I think is fine as
long as it's intentional, everything LGTM.

Reviewed-by: Gary Guo <gary@garyguo.net>


> 
> Miguel Ojeda (19):
>   rust: workqueue: remove unneeded ``#[allow(clippy::new_ret_no_self)]`
>   rust: sort global Rust flags
>   rust: types: avoid repetition in `{As,From}Bytes` impls
>   rust: enable `clippy::undocumented_unsafe_blocks` lint
>   rust: enable `clippy::unnecessary_safety_comment` lint
>   rust: enable `clippy::unnecessary_safety_doc` lint
>   rust: enable `clippy::ignored_unit_patterns` lint
>   rust: enable `rustdoc::unescaped_backticks` lint
>   rust: init: remove unneeded `#[allow(clippy::disallowed_names)]`
>   rust: sync: remove unneeded
>     `#[allow(clippy::non_send_fields_in_send_ty)]`
>   rust: introduce `.clippy.toml`
>   rust: replace `clippy::dbg_macro` with `disallowed_macros`
>   rust: rbtree: fix `SAFETY` comments that should be `# Safety` sections
>   rust: provide proper code documentation titles
>   rust: enable Clippy's `check-private-items`
>   Documentation: rust: add coding guidelines on lints
>   rust: start using the `#[expect(...)]` attribute
>   Documentation: rust: discuss `#[expect(...)]` in the guidelines
>   rust: std_vendor: simplify `{ .. macro! .. }` with inner attributes
> 
>  .clippy.toml                             |   9 ++
>  .gitignore                               |   1 +
>  Documentation/rust/coding-guidelines.rst | 139 +++++++++++++++++++++++
>  MAINTAINERS                              |   1 +
>  Makefile                                 |  15 ++-
>  rust/Makefile                            |   5 +-
>  rust/bindings/lib.rs                     |   1 +
>  rust/kernel/alloc/allocator.rs           |   2 +
>  rust/kernel/error.rs                     |  11 +-
>  rust/kernel/init.rs                      |  30 ++---
>  rust/kernel/init/__internal.rs           |  11 +-
>  rust/kernel/init/macros.rs               |  18 ++-
>  rust/kernel/ioctl.rs                     |   2 +-
>  rust/kernel/lib.rs                       |   1 +
>  rust/kernel/list.rs                      |   1 +
>  rust/kernel/list/arc_field.rs            |   2 +-
>  rust/kernel/print.rs                     |   5 +-
>  rust/kernel/rbtree.rs                    |   9 +-
>  rust/kernel/std_vendor.rs                |  16 ++-
>  rust/kernel/str.rs                       |   7 +-
>  rust/kernel/sync/arc.rs                  |   2 +-
>  rust/kernel/sync/arc/std_vendor.rs       |   2 +
>  rust/kernel/sync/condvar.rs              |   1 -
>  rust/kernel/sync/lock.rs                 |   6 +-
>  rust/kernel/types.rs                     |  74 ++++++------
>  rust/kernel/workqueue.rs                 |   9 +-
>  rust/uapi/lib.rs                         |   1 +
>  samples/rust/rust_print.rs               |   1 +
>  scripts/Makefile.build                   |   2 +-
>  29 files changed, 293 insertions(+), 91 deletions(-)
>  create mode 100644 .clippy.toml
> 
> 
> base-commit: 68d3b6aa08708bb3907c2c13eaf4b3ccf4805160
> --
> 2.46.0