Re: [PATCH v3 2/2] checkpatch: warn on known non-plural rust doc headers
From: Joe Perches
Date: Fri Sep 13 2024 - 15:22:07 EST
On Fri, 2024-09-13 at 09:33 +0200, Alice Ryhl wrote:
> On Thu, Sep 12, 2024 at 9:57 PM Patrick Miller <paddymills@xxxxxxxxx> wrote:
> >
> > Adds a check for documentation in rust file. Warns if certain known
> > documentation headers are not plural.
> >
> > The rust maintainers prefer document headers to be plural. This is to enforce
> > consistency among the documentation as well as to protect against errors when
> > additions are made. For example, if the header said "Example" because there was
> > only 1 example, if a second example was added, making the header plural could
> > easily be missed and the maintainers prefer to not have to remind people to fix
> > their documentation.
> >
> > Link: https://github.com/Rust-for-Linux/linux/issues/1110
> >
> > v1: https://lore.kernel.org/rust-for-linux/2024090628-bankable-refusal-5f20@gregkh/T/#t
> > v2: https://lore.kernel.org/rust-for-linux/92be0b48-cde9-4241-8ef9-7fe4d7c42466@xxxxxxxxx/T/#t
> > - fixed whitespace that was formatted due to editor settings
> > v3:
> > - move && to previous line and remove whitespace in WARN per Joe Perches
> > - reformat following C coding style
> > ---
> > scripts/checkpatch.pl | 7 ++++
> > +++
> > 1 file changed, 7 insertions(+)
>
> This is missing your Signed-off-by and the changelog should be below
> the --- line so it doesn't get included in the changelog when applied.
[]
> > diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
[]
> > @@ -3900,6 +3900,13 @@ sub process {
> > "Avoid using '.L' prefixed local symbol names for denoting a range of code via 'SYM_*_START/END' annotations; see Documentation/core-api/asm-annotations.rst\n" . $herecurr);
> > }
> >
> > +# check that document section headers are plural in rust files
> > + if ($realfile =~ /\.rs$/ &&
> > + $rawline =~ /^\+\s*\/\/\/\s+#+\s+(Example|Invariant|Guarantee|Panic)\s*$/) {
> > + WARN("RUST_DOC_HEADER",
> > + "Rust doc headers should be plural\n" . $herecurr);
While OK my suggestion would be to add a $fix option
and be case insensitive
if ($realfile =~ /\.rs$/ &&
$rawline =~ /^\+\s*\/\/\/\s+#+\s+(Example|Invariant|Guarantee|Panic)\s*$/i) {
if (WARN("RUST_DOC_HEADER",
"Rust doc header '$1' should be plural\n" . $herecurr) &&
$fix) {
$fixed[$fixlinenr] = s/\b$1\b/ucfirst(lc($1))/e;
}
And if there are going to be more rust specific tests,
there should be a rust specific block to avoid continual
tests of $realfile =~ /\.rs$/