Building the Linux kernel with Clang and LLVM
 help / color / mirror / Atom feed
* [PATCH v3 0/2] checkpatch.pl: Add warning for // comments on private Rust items
@ 2025-04-22 12:56 Arnaud Lecomte
  2025-04-22 12:58 ` [PATCH v3 1/2] checkpatch.pl: warn about " Arnaud Lecomte
                   ` (3 more replies)
  0 siblings, 4 replies; 11+ messages in thread
From: Arnaud Lecomte @ 2025-04-22 12:56 UTC (permalink / raw)
  To: Andy Whitcroft, Joe Perches, Dwaipayan Ray, Lukas Bulwahn,
	Miguel Ojeda, Alex Gaynor, Boqun Feng, Gary Guo,
	Björn Roy Baron, Benno Lossin, Andreas Hindborg, Alice Ryhl,
	Trevor Gross, Danilo Krummrich, Nathan Chancellor,
	Nick Desaulniers, Bill Wendling, Justin Stitt
  Cc: linux-kernel, rust-for-linux, llvm, contact, skhan

Hi,

Background
----------

The Rust-for-Linux project currently lacks enforcement of documentation for private Rust items,
as highlighted in https://github.com/Rust-for-Linux/linux/issues/1157.
While rustc already lints missing documentation for public items, private items remain unchecked.
This patch series aims to close that gap by ensuring proper documentation practices
for private Rust items in the kernel.

The actual solution comes in several parts
------------------------------------------

 1) Patch 1 : Implements detection logic to emit warnings for improperly
 documented private Rust items (e.g., // comments instead of ///)
 through a set of heuristics.
 2) Patch 2 : Adds an auto-fix mechanism via the --fix option to help
 developers correct documentation issues.

Results
--------------------

The following implementation has been tested against real patches:
 - https://lore.kernel.org/rust-for-linux/dc63bdc4bff8f084714e2c8ff30e4c0d435e85b7.camel@redhat.com/T/#t
 - https://lore.kernel.org/rust-for-linux/20250418-ptr-as-ptr-v10-0-3d63d27907aa@gmail.com/T/#t
 - https://lore.kernel.org/rust-for-linux/20250420-nova-frts-v1-1-ecd1cca23963@nvidia.com/T/#u
and this file:

// SPDX-License-Identifier: GPL-2.0

// Simple comment - should not trigger

// Returns a reference to the underlying [`cpufreq::Table`]. - should trigger
fn table(&self) -> &cpufreq::Table {
    // SAFETY: The `ptr` is guaranteed by the C code to be valid. - should not trigger
    unsafe { cpufreq::Table::from_raw(self.ptr) }
}

// Meaning of life - should not trigger
fn test() -> u32 {
    42
}

/// Proper doc comment for a private function.
fn proper_doc() -> u32 {
    42
}

// TODO: implement more logic - should not trigger
fn todo_marker() -> bool {
    true
}

// Just a regular comment not followed by code - should not trigger

pub fn public_function() {
    // Public function - should not trigger
}

// Test - should not trigger
struct Point2D {
  pub x: f32,
  pub y: f32
}

// Test - should not trigger
pub struct Point2D {
  pub x: f32,
  pub y: f32
}

mod test_module {
    // Module inner comment - should not trigger
}

// Comment before macro - should not trigger
macro_rules! my_macro {
    // Comment inside macro - should not trigger
    () => {};
}

// Comment before public macro - should not trigger
macro_rules! my_public_macro {

}

// Comment before unsafe block - should not trigger
unsafe {
    // Comment inside unsafe block - should not trigger
    let x = 5;
}

// Comment with multiple
// Line
// Youhouuu
// - should trigger
fn with_unsafe_keyword() {
    println!("test");
}

// NOTE: important consideration - should not trigger
fn note_marker() -> bool {
    true
}

// Comment with code example: - should trigger
// ``` let x = 5; ```
fn with_mixed_comments() {
    println!("test");
}

which led to this output:
WARNING: Consider using `///` if the comment was intended as documentation (line 5).
+// Returns a reference to the underlying [`cpufreq::Table`]. - should trigger
WARNING: Consider using `///` if the comment was intended as documentation (line 72).
+// Comment with multiple
WARNING: Consider using `///` if the comment was intended as documentation (line 73).
+// Line
WARNING: Consider using `///` if the comment was intended as documentation (line 74).
+// Youhouuu
WARNING: Consider using `///` if the comment was intended as documentation (line 75).
+// - should trigger
WARNING: Consider using `///` if the comment was intended as documentation (line 92).
+// Comment with code example: - should trigger
total: 0 errors, 6 warnings, 96 lines checked

NOTE: For some of the reported defects, checkpatch may be able to
      mechanically convert to the typical style using --fix or --fix-inplace.

test.rs has style problems, please review.

NOTE: If any of the errors are false positives, please report
      them to the maintainer, see CHECKPATCH in MAINTAINERS.

To: Andy Whitcroft <apw@canonical.com>
To: Joe Perches <joe@perches.com>
To: Dwaipayan Ray <dwaipayanray1@gmail.com>
To: Lukas Bulwahn <lukas.bulwahn@gmail.com>
To: Miguel Ojeda <ojeda@kernel.org>
To: Alex Gaynor <alex.gaynor@gmail.com>
To: Boqun Feng <boqun.feng@gmail.com>
To: Gary Guo <gary@garyguo.net>
To: Björn Roy Baron <bjorn3_gh@protonmail.com>
To: Benno Lossin <benno.lossin@proton.me>
To: Andreas Hindborg <a.hindborg@kernel.org>
To: Alice Ryhl <aliceryhl@google.com>
To: Trevor Gross <tmgross@umich.edu>
To: Danilo Krummrich <dakr@kernel.org>
To: Nathan Chancellor <nathan@kernel.org>
To: Nick Desaulniers <nick.desaulniers+lkml@gmail.com>
To: Bill Wendling <morbo@google.com>
To: Justin Stitt <justinstitt@google.com>
Cc: linux-kernel@vger.kernel.org
Cc: rust-for-linux@vger.kernel.org
Cc: llvm@lists.linux.dev
Cc: contact@arnaud-lcm.com
Cc: skhan@linuxfoundation.org
Link: https://lore.kernel.org/all/20250420184700.47144-1-contact@arnaud-lcm.com/
Signed-off-by: Arnaud Lecomte <contact@arnaud-lcm.com>
-- 
2.43.0


^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2025-05-23  7:25 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-04-22 12:56 [PATCH v3 0/2] checkpatch.pl: Add warning for // comments on private Rust items Arnaud Lecomte
2025-04-22 12:58 ` [PATCH v3 1/2] checkpatch.pl: warn about " Arnaud Lecomte
2025-04-22 13:46   ` Miguel Ojeda
2025-04-22 14:37     ` Arnaud Lecomte
2025-04-22 15:32       ` Miguel Ojeda
2025-04-23 11:33         ` Arnaud Lecomte
2025-05-23  7:15           ` Arnaud Lecomte
2025-04-22 12:58 ` [PATCH v3 3/3] checkpatch.pl: --fix support for `//` comments rust private items Arnaud Lecomte
2025-04-22 13:02 ` [PATCH v3 2/2 resend] " Arnaud Lecomte
2025-04-22 14:10 ` [PATCH v3 0/2] checkpatch.pl: Add warning for // comments on private Rust items Miguel Ojeda
2025-04-22 14:38   ` Arnaud Lecomte

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox