* [PATCH v2 0/3] checkpatch: add verbose mode
@ 2021-01-28 14:37 ` Dwaipayan Ray
0 siblings, 0 replies; 13+ messages in thread
From: Dwaipayan Ray @ 2021-01-28 14:37 UTC (permalink / raw)
To: joe; +Cc: linux-kernel-mentees, lukas.bulwahn, linux-kernel, Dwaipayan Ray
Add a new verbose mode to checkpatch. The verbose test
descriptions are read from the checkpatch documentation
file at `Documentation/dev-tools/checkpatch.rst`.
The verbose mode is optional and can be enabled by the
flag -v or --verbose.
The documentation file is only parsed by checkpatch.pl
if the verbose mode is enabled. The verbose mode is also
suppressed when the --terse option is specified.
Changes in v2:
- Use .rst Field Lists to specify the type descriptions.
- Add a few more type descriptions to documentation.
Dwaipayan Ray (3):
checkpatch: add verbose mode
docs: add documentation for checkpatch
docs: add documentation for checkpatch
Documentation/dev-tools/checkpatch.rst | 269 +++++++++++++++++++++++++
Documentation/dev-tools/index.rst | 1 +
scripts/checkpatch.pl | 54 ++++-
3 files changed, 323 insertions(+), 1 deletion(-)
create mode 100644 Documentation/dev-tools/checkpatch.rst
--
2.30.0
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Linux-kernel-mentees] [PATCH v2 0/3] checkpatch: add verbose mode
@ 2021-01-28 14:37 ` Dwaipayan Ray
0 siblings, 0 replies; 13+ messages in thread
From: Dwaipayan Ray @ 2021-01-28 14:37 UTC (permalink / raw)
To: joe; +Cc: linux-kernel-mentees, linux-kernel, Dwaipayan Ray
Add a new verbose mode to checkpatch. The verbose test
descriptions are read from the checkpatch documentation
file at `Documentation/dev-tools/checkpatch.rst`.
The verbose mode is optional and can be enabled by the
flag -v or --verbose.
The documentation file is only parsed by checkpatch.pl
if the verbose mode is enabled. The verbose mode is also
suppressed when the --terse option is specified.
Changes in v2:
- Use .rst Field Lists to specify the type descriptions.
- Add a few more type descriptions to documentation.
Dwaipayan Ray (3):
checkpatch: add verbose mode
docs: add documentation for checkpatch
docs: add documentation for checkpatch
Documentation/dev-tools/checkpatch.rst | 269 +++++++++++++++++++++++++
Documentation/dev-tools/index.rst | 1 +
scripts/checkpatch.pl | 54 ++++-
3 files changed, 323 insertions(+), 1 deletion(-)
create mode 100644 Documentation/dev-tools/checkpatch.rst
--
2.30.0
_______________________________________________
Linux-kernel-mentees mailing list
Linux-kernel-mentees@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mailman/listinfo/linux-kernel-mentees
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH v2 1/3] checkpatch: add verbose mode
2021-01-28 14:37 ` [Linux-kernel-mentees] " Dwaipayan Ray
@ 2021-01-28 14:38 ` Dwaipayan Ray
-1 siblings, 0 replies; 13+ messages in thread
From: Dwaipayan Ray @ 2021-01-28 14:38 UTC (permalink / raw)
To: joe; +Cc: linux-kernel-mentees, lukas.bulwahn, linux-kernel, Dwaipayan Ray
Add a new verbose mode to checkpatch.pl to emit additional verbose
test descriptions. The verbose mode is optional and can be enabled
by the flag -v or --verbose.
The test descriptions are parsed from the checkpatch documentation
file at `Documentation/dev-tools/checkpatch.rst`. The test
descriptions in the docs are kept in a fixed format, an example
of which is as follows:
:LINE_SPACING:
Vertical space is wasted given the limited number of lines an
editor window can display when multiple blank lines are used.
:MISSING_SIGN_OFF:
The patch is missing a Signed-off-by line. A signed-off-by
line should be added according to Developer's certificate of
Origin.
ref: `Documentation/process/submitting-patches.rst`
The verbose descriptions are not shown when the --terse option
is enabled.
Signed-off-by: Dwaipayan Ray <dwaipayanray1@gmail.com>
---
scripts/checkpatch.pl | 54 ++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 53 insertions(+), 1 deletion(-)
diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 05e908dcf0a0..2011d90c3e97 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -23,6 +23,8 @@ my $V = '0.32';
use Getopt::Long qw(:config no_auto_abbrev);
my $quiet = 0;
+my $verbose = 0;
+my %verbose_messages = ();
my $tree = 1;
my $chk_signoff = 1;
my $chk_patch = 1;
@@ -61,6 +63,7 @@ my $spelling_file = "$D/spelling.txt";
my $codespell = 0;
my $codespellfile = "/usr/share/codespell/dictionary.txt";
my $conststructsfile = "$D/const_structs.checkpatch";
+my $docsfile = "$D/../Documentation/dev-tools/checkpatch.rst";
my $typedefsfile;
my $color = "auto";
my $allow_c99_comments = 1; # Can be overridden by --ignore C99_COMMENT_TOLERANCE
@@ -78,6 +81,7 @@ Version: $V
Options:
-q, --quiet quiet
+ -v, --verbose verbose mode
--no-tree run without a kernel tree
--no-signoff do not check for 'Signed-off-by' line
--patch treat FILE as patchfile (default)
@@ -198,6 +202,45 @@ if (-f $conf) {
unshift(@ARGV, @conf_args) if @conf_args;
}
+sub load_docs {
+ open(my $docs, '<', "$docsfile")
+ or warn "$P: Can't read the documentation file $docsfile $!\n";
+
+ my @lines = ();
+ while (<$docs>) {
+ my $line = $_;
+
+ $line =~ s/\s*\n?$//g;
+ push (@lines, $line);
+ }
+ close($docs);
+
+ my $linenr = 0;
+ my $cnt = scalar @lines;
+ while ($linenr < $cnt) {
+ while ($linenr < $cnt &&
+ $lines[$linenr++] !~ /^\:(.+)\:$/)
+ {
+ }
+
+ last if ($linenr >= $cnt);
+
+ my $type = $lines[$linenr - 1];
+ $type =~ s/^\:(.+)\:$/$1/;
+ my $message = '';
+
+ while ($linenr < $cnt &&
+ $lines[$linenr] =~ /^(?:\s+(.+)$|$)/) {
+ $message .= $1 if (defined $1);
+ $message .= "\n";
+ $linenr++;
+ }
+
+ $message = trim($message);
+ $verbose_messages{$type} = $message;
+ }
+}
+
# Perl's Getopt::Long allows options to take optional arguments after a space.
# Prevent --color by itself from consuming other arguments
foreach (@ARGV) {
@@ -208,6 +251,7 @@ foreach (@ARGV) {
GetOptions(
'q|quiet+' => \$quiet,
+ 'v|verbose!' => \$verbose,
'tree!' => \$tree,
'signoff!' => \$chk_signoff,
'patch!' => \$chk_patch,
@@ -249,6 +293,8 @@ help(0) if ($help);
list_types(0) if ($list_types);
+load_docs() if ($verbose && !$terse);
+
$fix = 1 if ($fix_inplace);
$check_orig = $check;
@@ -2209,7 +2255,13 @@ sub report {
splice(@lines, 1, 1);
$output = join("\n", @lines);
}
- $output = (split('\n', $output))[0] . "\n" if ($terse);
+
+ if ($terse) {
+ $output = (split('\n', $output))[0] . "\n";
+ } elsif ($verbose &&
+ exists $verbose_messages{$type}) {
+ $output .= $verbose_messages{$type} . "\n\n";
+ }
push(our @report, $output);
--
2.30.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [Linux-kernel-mentees] [PATCH v2 1/3] checkpatch: add verbose mode
@ 2021-01-28 14:38 ` Dwaipayan Ray
0 siblings, 0 replies; 13+ messages in thread
From: Dwaipayan Ray @ 2021-01-28 14:38 UTC (permalink / raw)
To: joe; +Cc: linux-kernel-mentees, linux-kernel, Dwaipayan Ray
Add a new verbose mode to checkpatch.pl to emit additional verbose
test descriptions. The verbose mode is optional and can be enabled
by the flag -v or --verbose.
The test descriptions are parsed from the checkpatch documentation
file at `Documentation/dev-tools/checkpatch.rst`. The test
descriptions in the docs are kept in a fixed format, an example
of which is as follows:
:LINE_SPACING:
Vertical space is wasted given the limited number of lines an
editor window can display when multiple blank lines are used.
:MISSING_SIGN_OFF:
The patch is missing a Signed-off-by line. A signed-off-by
line should be added according to Developer's certificate of
Origin.
ref: `Documentation/process/submitting-patches.rst`
The verbose descriptions are not shown when the --terse option
is enabled.
Signed-off-by: Dwaipayan Ray <dwaipayanray1@gmail.com>
---
scripts/checkpatch.pl | 54 ++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 53 insertions(+), 1 deletion(-)
diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 05e908dcf0a0..2011d90c3e97 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -23,6 +23,8 @@ my $V = '0.32';
use Getopt::Long qw(:config no_auto_abbrev);
my $quiet = 0;
+my $verbose = 0;
+my %verbose_messages = ();
my $tree = 1;
my $chk_signoff = 1;
my $chk_patch = 1;
@@ -61,6 +63,7 @@ my $spelling_file = "$D/spelling.txt";
my $codespell = 0;
my $codespellfile = "/usr/share/codespell/dictionary.txt";
my $conststructsfile = "$D/const_structs.checkpatch";
+my $docsfile = "$D/../Documentation/dev-tools/checkpatch.rst";
my $typedefsfile;
my $color = "auto";
my $allow_c99_comments = 1; # Can be overridden by --ignore C99_COMMENT_TOLERANCE
@@ -78,6 +81,7 @@ Version: $V
Options:
-q, --quiet quiet
+ -v, --verbose verbose mode
--no-tree run without a kernel tree
--no-signoff do not check for 'Signed-off-by' line
--patch treat FILE as patchfile (default)
@@ -198,6 +202,45 @@ if (-f $conf) {
unshift(@ARGV, @conf_args) if @conf_args;
}
+sub load_docs {
+ open(my $docs, '<', "$docsfile")
+ or warn "$P: Can't read the documentation file $docsfile $!\n";
+
+ my @lines = ();
+ while (<$docs>) {
+ my $line = $_;
+
+ $line =~ s/\s*\n?$//g;
+ push (@lines, $line);
+ }
+ close($docs);
+
+ my $linenr = 0;
+ my $cnt = scalar @lines;
+ while ($linenr < $cnt) {
+ while ($linenr < $cnt &&
+ $lines[$linenr++] !~ /^\:(.+)\:$/)
+ {
+ }
+
+ last if ($linenr >= $cnt);
+
+ my $type = $lines[$linenr - 1];
+ $type =~ s/^\:(.+)\:$/$1/;
+ my $message = '';
+
+ while ($linenr < $cnt &&
+ $lines[$linenr] =~ /^(?:\s+(.+)$|$)/) {
+ $message .= $1 if (defined $1);
+ $message .= "\n";
+ $linenr++;
+ }
+
+ $message = trim($message);
+ $verbose_messages{$type} = $message;
+ }
+}
+
# Perl's Getopt::Long allows options to take optional arguments after a space.
# Prevent --color by itself from consuming other arguments
foreach (@ARGV) {
@@ -208,6 +251,7 @@ foreach (@ARGV) {
GetOptions(
'q|quiet+' => \$quiet,
+ 'v|verbose!' => \$verbose,
'tree!' => \$tree,
'signoff!' => \$chk_signoff,
'patch!' => \$chk_patch,
@@ -249,6 +293,8 @@ help(0) if ($help);
list_types(0) if ($list_types);
+load_docs() if ($verbose && !$terse);
+
$fix = 1 if ($fix_inplace);
$check_orig = $check;
@@ -2209,7 +2255,13 @@ sub report {
splice(@lines, 1, 1);
$output = join("\n", @lines);
}
- $output = (split('\n', $output))[0] . "\n" if ($terse);
+
+ if ($terse) {
+ $output = (split('\n', $output))[0] . "\n";
+ } elsif ($verbose &&
+ exists $verbose_messages{$type}) {
+ $output .= $verbose_messages{$type} . "\n\n";
+ }
push(our @report, $output);
--
2.30.0
_______________________________________________
Linux-kernel-mentees mailing list
Linux-kernel-mentees@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mailman/listinfo/linux-kernel-mentees
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v2 2/3] docs: add documentation for checkpatch
2021-01-28 14:37 ` [Linux-kernel-mentees] " Dwaipayan Ray
@ 2021-01-28 14:38 ` Dwaipayan Ray
-1 siblings, 0 replies; 13+ messages in thread
From: Dwaipayan Ray @ 2021-01-28 14:38 UTC (permalink / raw)
To: joe; +Cc: linux-kernel-mentees, lukas.bulwahn, linux-kernel, Dwaipayan Ray
Add documentation for kernel script checkpatch.pl.
This documentation is also parsed by checkpatch to
enable a verbose mode.
Only a few test descriptions are added and the rest
will be added later over time to document all the
message types emitted by checkpatch.
Signed-off-by: Dwaipayan Ray <dwaipayanray1@gmail.com>
---
Documentation/dev-tools/checkpatch.rst | 269 +++++++++++++++++++++++++
1 file changed, 269 insertions(+)
create mode 100644 Documentation/dev-tools/checkpatch.rst
diff --git a/Documentation/dev-tools/checkpatch.rst b/Documentation/dev-tools/checkpatch.rst
new file mode 100644
index 000000000000..bb23f4dad11e
--- /dev/null
+++ b/Documentation/dev-tools/checkpatch.rst
@@ -0,0 +1,269 @@
+.. SPDX-License-Identifier: GPL-2.0-only
+
+==========
+Checkpatch
+==========
+
+This document describes the kernel script checkpatch.pl.
+
+.. Table of Contents
+
+ === 1 Introduction
+ === 2 Options
+ === 3 Message Levels
+ === 4 Type Descriptions
+
+1 Introduction
+--------------
+
+Checkpatch (scripts/checkpatch.pl) is a perl script which checks for trivial style
+violations in patches and optionally corrects them. Checkpatch can also be run on
+file contexts and without the kernel tree.
+
+It should be noted that checkpatch may not be always right. At times the human
+judgement should take preference over what checkpatch has to say. If your code looks
+better with the violations, then its probably best left alone.
+
+
+2 Options
+---------
+
+This section will describe the options checkpatch can be run with.
+
+Usage::
+
+ ./scripts/checkpatch.pl [OPTION]... [FILE]...
+
+Available options:
+
+ - -q, --quiet
+
+ Enable quiet mode.
+
+ - -v, --verbose
+ Enable verbose mode. Additional verbose test descriptions are output
+ so as to provide information on why that particular message is shown.
+
+ - --no-tree
+
+ Run checkpatch without the kernel tree.
+
+ - --no-signoff
+
+ Disable the 'Signed-off-by' line check. The sign-off is a simple line at
+ the end of the explanation for the patch, which certifies that you wrote it
+ or otherwise have the right to pass it on as an open-source patch.
+
+ Example::
+
+ Signed-off-by: Random J Developer <random@developer.example.org>
+
+ Setting this flag effectively stops a message for a missing signed-off-by line
+ in a patch context.
+
+ - --patch
+
+ Treat FILE as a patch. This is the default option and need not be
+ explicitly specified.
+
+ - --emacs
+
+ Set output to emacs compile window format. This allows emacs users to jump
+ from the error in the compile window directly to the offending line in the patch.
+
+ - --terse
+
+ Output only one line per report.
+
+ - --showfile
+
+ Show the diffed file position instead of the input file position.
+
+ - -g, --git
+
+ Treat FILE as a single commit or a git revision range.
+
+ Single commit with:
+
+ - <rev>
+ - <rev>^
+ - <rev>~n
+
+ Multiple commits with:
+
+ - <rev1>..<rev2>
+ - <rev1>...<rev2>
+ - <rev>-<count>
+
+ - -f, --file
+
+ Treat FILE as a regular source file. This option must be used when running
+ checkpatch on source files in the kernel.
+
+ - --subjective, --strict
+
+ Enable stricter tests in checkpatch. By default the tests emitted as CHECK
+ do not activate by default. Use this flag to activate the CHECK tests.
+
+ - --list-types
+
+ Every message emitted by checkpatch has an associated TYPE. Add this flag to
+ display all the types in checkpatch.
+
+ Note that when this flag is active, checkpatch does not read the input FILE, and
+ no message is emitted. Only a list of types in checkpatch is output.
+
+ - --types TYPE(,TYPE2...)
+
+ Only display messages with the given types.
+
+ Example::
+
+ ./scripts/checkpatch.pl mypatch.patch --types EMAIL_SUBJECT,NO_AUTHOR_SIGN_OFF
+
+ - --ignore TYPE(,TYPE2...)
+
+ Strip off messages with the given types.
+
+ Example::
+
+ ./scripts/checkpatch.pl mypatch.patch --ignore EMAIL_SUBJECT,NO_AUTHOR_SIGN_OFF
+
+ - --show-types
+
+ By default checkpatch doesn't display the type associated with the messages.
+ Set this flag to show the message type in the output.
+
+ - --max-line-length=n
+
+ Set the max line length (default 100). On exceeding the given length, a message
+ is emitted.
+
+ The message level is different for patch and file contexts. For patches, a WARNING is
+ emitted. While a milder CHECK is emitted for files. So for file contexts, the --strict
+ flag must also be enabled.
+
+ - --min-conf-desc-length=n
+
+ Set the min description length, if shorter, warn.
+
+ - --tab-size=n
+
+ Set the number of spaces for tab (default 8).
+
+ - --root=PATH
+
+ PATH to the kernel tree root.
+
+ This option must be specified when invoking checkpatch from outside
+ the kernel root.
+
+ - --no-summary
+
+ Suppress the per file summary.
+
+ - --mailback
+
+ Only produce a report in case of Warnings or Errors. Milder Checks are
+ excluded from this.
+
+ - --summary-file
+
+ Include the filename in summary.
+
+ - --debug KEY=[0|1]
+
+ Turn on/off debugging of KEY, where KEY is one of 'values', 'possible',
+ 'type', and 'attr' (default is all off).
+
+ - --fix
+
+ This is an EXPERIMENTAL feature. If correctable errors exists, a file
+ <inputfile>.EXPERIMENTAL-checkpatch-fixes is created which has the
+ automatically fixable errors corrected.
+
+ - --fix-inplace
+
+ EXPERIMENTAL - Similar to --fix but the input file is overwritten with fixes.
+
+ DO NOT USE this flag unless you are absolutely sure and you have a backup in place.
+
+ - --ignore-perl-version
+
+ Override checking of perl version. Runtime errors maybe encountered after
+ enabling this flag if the perl version does not meet the minimum specified.
+
+ - --codespell
+
+ Use the codespell dictionary for checking spelling errors.
+
+ - --codespellfile
+
+ Use the specified codespell file. Default is '/usr/share/codespell/dictionary.txt'.
+
+ - --typedefsfile
+
+ Read additional types from this file.
+
+ - --color[=WHEN]
+
+ Use colors 'always', 'never', or only when output is a terminal ('auto').
+ Default is 'auto'.
+
+ - --kconfig-prefix=WORD
+
+ Use WORD as a prefix for Kconfig symbols (default is `CONFIG_`).
+
+ - -h, --help, --version
+
+ Display the help text.
+
+3 Message Levels
+----------------
+
+Messages in checkpatch are divided into three levels. The levels of messages in
+checkpatch denote the severity of the error. They are:
+
+ - ERROR
+
+ This is the most strict level. Messages of type ERROR must be taken
+ seriously as they denote things that are very likely to be wrong.
+
+ - WARNING
+
+ This is the next stricter level. Messages of type WARNING requires a
+ more careful review. But it is milder than an ERROR.
+
+ - CHECK
+
+ This is the mildest level. These are things which may require some thought.
+
+4 Type Descriptions
+-------------------
+
+This section contains a description of all the message types in checkpatch.
+
+.. Types in this section are also parsed by checkpatch.
+.. Please keep the types sorted alphabetically.
+
+:LINE_SPACING:
+ Vertical space is wasted given the limited number of lines an
+ editor window can display when multiple blank lines are used.
+
+:MISSING_SIGN_OFF:
+ The patch is missing a Signed-off-by line. A signed-off-by
+ line should be added according to Developer's certificate of
+ Origin.
+ ref: `Documentation/process/submitting-patches.rst`
+
+:NO_AUTHOR_SIGN_OFF:
+ The author of the patch has not signed off the patch. It is
+ required that a simple sign off line should be present at the
+ end of explanation of the patch to denote that the author has
+ written it or otherwise has the rights to pass it on as an open
+ source patch.
+
+:TRAILING_WHITESPACE:
+ Trailing whitespace should always be removed.
+ Some editors highlight the trailing whitespace and cause visual
+ distractions when editing files.
--
2.30.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [Linux-kernel-mentees] [PATCH v2 2/3] docs: add documentation for checkpatch
@ 2021-01-28 14:38 ` Dwaipayan Ray
0 siblings, 0 replies; 13+ messages in thread
From: Dwaipayan Ray @ 2021-01-28 14:38 UTC (permalink / raw)
To: joe; +Cc: linux-kernel-mentees, linux-kernel, Dwaipayan Ray
Add documentation for kernel script checkpatch.pl.
This documentation is also parsed by checkpatch to
enable a verbose mode.
Only a few test descriptions are added and the rest
will be added later over time to document all the
message types emitted by checkpatch.
Signed-off-by: Dwaipayan Ray <dwaipayanray1@gmail.com>
---
Documentation/dev-tools/checkpatch.rst | 269 +++++++++++++++++++++++++
1 file changed, 269 insertions(+)
create mode 100644 Documentation/dev-tools/checkpatch.rst
diff --git a/Documentation/dev-tools/checkpatch.rst b/Documentation/dev-tools/checkpatch.rst
new file mode 100644
index 000000000000..bb23f4dad11e
--- /dev/null
+++ b/Documentation/dev-tools/checkpatch.rst
@@ -0,0 +1,269 @@
+.. SPDX-License-Identifier: GPL-2.0-only
+
+==========
+Checkpatch
+==========
+
+This document describes the kernel script checkpatch.pl.
+
+.. Table of Contents
+
+ === 1 Introduction
+ === 2 Options
+ === 3 Message Levels
+ === 4 Type Descriptions
+
+1 Introduction
+--------------
+
+Checkpatch (scripts/checkpatch.pl) is a perl script which checks for trivial style
+violations in patches and optionally corrects them. Checkpatch can also be run on
+file contexts and without the kernel tree.
+
+It should be noted that checkpatch may not be always right. At times the human
+judgement should take preference over what checkpatch has to say. If your code looks
+better with the violations, then its probably best left alone.
+
+
+2 Options
+---------
+
+This section will describe the options checkpatch can be run with.
+
+Usage::
+
+ ./scripts/checkpatch.pl [OPTION]... [FILE]...
+
+Available options:
+
+ - -q, --quiet
+
+ Enable quiet mode.
+
+ - -v, --verbose
+ Enable verbose mode. Additional verbose test descriptions are output
+ so as to provide information on why that particular message is shown.
+
+ - --no-tree
+
+ Run checkpatch without the kernel tree.
+
+ - --no-signoff
+
+ Disable the 'Signed-off-by' line check. The sign-off is a simple line at
+ the end of the explanation for the patch, which certifies that you wrote it
+ or otherwise have the right to pass it on as an open-source patch.
+
+ Example::
+
+ Signed-off-by: Random J Developer <random@developer.example.org>
+
+ Setting this flag effectively stops a message for a missing signed-off-by line
+ in a patch context.
+
+ - --patch
+
+ Treat FILE as a patch. This is the default option and need not be
+ explicitly specified.
+
+ - --emacs
+
+ Set output to emacs compile window format. This allows emacs users to jump
+ from the error in the compile window directly to the offending line in the patch.
+
+ - --terse
+
+ Output only one line per report.
+
+ - --showfile
+
+ Show the diffed file position instead of the input file position.
+
+ - -g, --git
+
+ Treat FILE as a single commit or a git revision range.
+
+ Single commit with:
+
+ - <rev>
+ - <rev>^
+ - <rev>~n
+
+ Multiple commits with:
+
+ - <rev1>..<rev2>
+ - <rev1>...<rev2>
+ - <rev>-<count>
+
+ - -f, --file
+
+ Treat FILE as a regular source file. This option must be used when running
+ checkpatch on source files in the kernel.
+
+ - --subjective, --strict
+
+ Enable stricter tests in checkpatch. By default the tests emitted as CHECK
+ do not activate by default. Use this flag to activate the CHECK tests.
+
+ - --list-types
+
+ Every message emitted by checkpatch has an associated TYPE. Add this flag to
+ display all the types in checkpatch.
+
+ Note that when this flag is active, checkpatch does not read the input FILE, and
+ no message is emitted. Only a list of types in checkpatch is output.
+
+ - --types TYPE(,TYPE2...)
+
+ Only display messages with the given types.
+
+ Example::
+
+ ./scripts/checkpatch.pl mypatch.patch --types EMAIL_SUBJECT,NO_AUTHOR_SIGN_OFF
+
+ - --ignore TYPE(,TYPE2...)
+
+ Strip off messages with the given types.
+
+ Example::
+
+ ./scripts/checkpatch.pl mypatch.patch --ignore EMAIL_SUBJECT,NO_AUTHOR_SIGN_OFF
+
+ - --show-types
+
+ By default checkpatch doesn't display the type associated with the messages.
+ Set this flag to show the message type in the output.
+
+ - --max-line-length=n
+
+ Set the max line length (default 100). On exceeding the given length, a message
+ is emitted.
+
+ The message level is different for patch and file contexts. For patches, a WARNING is
+ emitted. While a milder CHECK is emitted for files. So for file contexts, the --strict
+ flag must also be enabled.
+
+ - --min-conf-desc-length=n
+
+ Set the min description length, if shorter, warn.
+
+ - --tab-size=n
+
+ Set the number of spaces for tab (default 8).
+
+ - --root=PATH
+
+ PATH to the kernel tree root.
+
+ This option must be specified when invoking checkpatch from outside
+ the kernel root.
+
+ - --no-summary
+
+ Suppress the per file summary.
+
+ - --mailback
+
+ Only produce a report in case of Warnings or Errors. Milder Checks are
+ excluded from this.
+
+ - --summary-file
+
+ Include the filename in summary.
+
+ - --debug KEY=[0|1]
+
+ Turn on/off debugging of KEY, where KEY is one of 'values', 'possible',
+ 'type', and 'attr' (default is all off).
+
+ - --fix
+
+ This is an EXPERIMENTAL feature. If correctable errors exists, a file
+ <inputfile>.EXPERIMENTAL-checkpatch-fixes is created which has the
+ automatically fixable errors corrected.
+
+ - --fix-inplace
+
+ EXPERIMENTAL - Similar to --fix but the input file is overwritten with fixes.
+
+ DO NOT USE this flag unless you are absolutely sure and you have a backup in place.
+
+ - --ignore-perl-version
+
+ Override checking of perl version. Runtime errors maybe encountered after
+ enabling this flag if the perl version does not meet the minimum specified.
+
+ - --codespell
+
+ Use the codespell dictionary for checking spelling errors.
+
+ - --codespellfile
+
+ Use the specified codespell file. Default is '/usr/share/codespell/dictionary.txt'.
+
+ - --typedefsfile
+
+ Read additional types from this file.
+
+ - --color[=WHEN]
+
+ Use colors 'always', 'never', or only when output is a terminal ('auto').
+ Default is 'auto'.
+
+ - --kconfig-prefix=WORD
+
+ Use WORD as a prefix for Kconfig symbols (default is `CONFIG_`).
+
+ - -h, --help, --version
+
+ Display the help text.
+
+3 Message Levels
+----------------
+
+Messages in checkpatch are divided into three levels. The levels of messages in
+checkpatch denote the severity of the error. They are:
+
+ - ERROR
+
+ This is the most strict level. Messages of type ERROR must be taken
+ seriously as they denote things that are very likely to be wrong.
+
+ - WARNING
+
+ This is the next stricter level. Messages of type WARNING requires a
+ more careful review. But it is milder than an ERROR.
+
+ - CHECK
+
+ This is the mildest level. These are things which may require some thought.
+
+4 Type Descriptions
+-------------------
+
+This section contains a description of all the message types in checkpatch.
+
+.. Types in this section are also parsed by checkpatch.
+.. Please keep the types sorted alphabetically.
+
+:LINE_SPACING:
+ Vertical space is wasted given the limited number of lines an
+ editor window can display when multiple blank lines are used.
+
+:MISSING_SIGN_OFF:
+ The patch is missing a Signed-off-by line. A signed-off-by
+ line should be added according to Developer's certificate of
+ Origin.
+ ref: `Documentation/process/submitting-patches.rst`
+
+:NO_AUTHOR_SIGN_OFF:
+ The author of the patch has not signed off the patch. It is
+ required that a simple sign off line should be present at the
+ end of explanation of the patch to denote that the author has
+ written it or otherwise has the rights to pass it on as an open
+ source patch.
+
+:TRAILING_WHITESPACE:
+ Trailing whitespace should always be removed.
+ Some editors highlight the trailing whitespace and cause visual
+ distractions when editing files.
--
2.30.0
_______________________________________________
Linux-kernel-mentees mailing list
Linux-kernel-mentees@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mailman/listinfo/linux-kernel-mentees
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v2 3/3] docs: add documentation for checkpatch
2021-01-28 14:37 ` [Linux-kernel-mentees] " Dwaipayan Ray
@ 2021-01-28 14:38 ` Dwaipayan Ray
-1 siblings, 0 replies; 13+ messages in thread
From: Dwaipayan Ray @ 2021-01-28 14:38 UTC (permalink / raw)
To: joe; +Cc: linux-kernel-mentees, lukas.bulwahn, linux-kernel, Dwaipayan Ray
Link the checkpatch documentation to the dev-tools index
for sphinx.
Signed-off-by: Dwaipayan Ray <dwaipayanray1@gmail.com>
---
Documentation/dev-tools/index.rst | 1 +
1 file changed, 1 insertion(+)
diff --git a/Documentation/dev-tools/index.rst b/Documentation/dev-tools/index.rst
index 1b1cf4f5c9d9..43d28998118b 100644
--- a/Documentation/dev-tools/index.rst
+++ b/Documentation/dev-tools/index.rst
@@ -14,6 +14,7 @@ whole; patches welcome!
.. toctree::
:maxdepth: 2
+ checkpatch
coccinelle
sparse
kcov
--
2.30.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [Linux-kernel-mentees] [PATCH v2 3/3] docs: add documentation for checkpatch
@ 2021-01-28 14:38 ` Dwaipayan Ray
0 siblings, 0 replies; 13+ messages in thread
From: Dwaipayan Ray @ 2021-01-28 14:38 UTC (permalink / raw)
To: joe; +Cc: linux-kernel-mentees, linux-kernel, Dwaipayan Ray
Link the checkpatch documentation to the dev-tools index
for sphinx.
Signed-off-by: Dwaipayan Ray <dwaipayanray1@gmail.com>
---
Documentation/dev-tools/index.rst | 1 +
1 file changed, 1 insertion(+)
diff --git a/Documentation/dev-tools/index.rst b/Documentation/dev-tools/index.rst
index 1b1cf4f5c9d9..43d28998118b 100644
--- a/Documentation/dev-tools/index.rst
+++ b/Documentation/dev-tools/index.rst
@@ -14,6 +14,7 @@ whole; patches welcome!
.. toctree::
:maxdepth: 2
+ checkpatch
coccinelle
sparse
kcov
--
2.30.0
_______________________________________________
Linux-kernel-mentees mailing list
Linux-kernel-mentees@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mailman/listinfo/linux-kernel-mentees
^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH v2 1/3] checkpatch: add verbose mode
2021-01-28 14:38 ` [Linux-kernel-mentees] " Dwaipayan Ray
@ 2021-01-28 19:11 ` Joe Perches
-1 siblings, 0 replies; 13+ messages in thread
From: Joe Perches @ 2021-01-28 19:11 UTC (permalink / raw)
To: Dwaipayan Ray; +Cc: linux-kernel-mentees, lukas.bulwahn, linux-kernel
On Thu, 2021-01-28 at 20:08 +0530, Dwaipayan Ray wrote:
> Add a new verbose mode to checkpatch.pl to emit additional verbose
> test descriptions. The verbose mode is optional and can be enabled
> by the flag -v or --verbose.
[]
> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
[]
> +sub load_docs {
> + open(my $docs, '<', "$docsfile")
> + or warn "$P: Can't read the documentation file $docsfile $!\n";
> +
> + my @lines = ();
> + while (<$docs>) {
> + my $line = $_;
> +
> + $line =~ s/\s*\n?$//g;
chomp
> + push (@lines, $line);
> + }
> + close($docs);
> +
> + my $linenr = 0;
> + my $cnt = scalar @lines;
> + while ($linenr < $cnt) {
> + while ($linenr < $cnt &&
> + $lines[$linenr++] !~ /^\:(.+)\:$/)
> + {
> + }
> +
> + last if ($linenr >= $cnt);
> +
> + my $type = $lines[$linenr - 1];
> + $type =~ s/^\:(.+)\:$/$1/;
> + my $message = '';
> +
> + while ($linenr < $cnt &&
> + $lines[$linenr] =~ /^(?:\s+(.+)$|$)/) {
> + $message .= $1 if (defined $1);
> + $message .= "\n";
> + $linenr++;
> + }
> +
> + $message = trim($message);
> + $verbose_messages{$type} = $message;
> + }
> +}
I think this is overly complicated.
There's no need to read and store the entire file and then
parse it. Just parse it line by line as its read.
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Linux-kernel-mentees] [PATCH v2 1/3] checkpatch: add verbose mode
@ 2021-01-28 19:11 ` Joe Perches
0 siblings, 0 replies; 13+ messages in thread
From: Joe Perches @ 2021-01-28 19:11 UTC (permalink / raw)
To: Dwaipayan Ray; +Cc: linux-kernel-mentees, linux-kernel
On Thu, 2021-01-28 at 20:08 +0530, Dwaipayan Ray wrote:
> Add a new verbose mode to checkpatch.pl to emit additional verbose
> test descriptions. The verbose mode is optional and can be enabled
> by the flag -v or --verbose.
[]
> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
[]
> +sub load_docs {
> + open(my $docs, '<', "$docsfile")
> + or warn "$P: Can't read the documentation file $docsfile $!\n";
> +
> + my @lines = ();
> + while (<$docs>) {
> + my $line = $_;
> +
> + $line =~ s/\s*\n?$//g;
chomp
> + push (@lines, $line);
> + }
> + close($docs);
> +
> + my $linenr = 0;
> + my $cnt = scalar @lines;
> + while ($linenr < $cnt) {
> + while ($linenr < $cnt &&
> + $lines[$linenr++] !~ /^\:(.+)\:$/)
> + {
> + }
> +
> + last if ($linenr >= $cnt);
> +
> + my $type = $lines[$linenr - 1];
> + $type =~ s/^\:(.+)\:$/$1/;
> + my $message = '';
> +
> + while ($linenr < $cnt &&
> + $lines[$linenr] =~ /^(?:\s+(.+)$|$)/) {
> + $message .= $1 if (defined $1);
> + $message .= "\n";
> + $linenr++;
> + }
> +
> + $message = trim($message);
> + $verbose_messages{$type} = $message;
> + }
> +}
I think this is overly complicated.
There's no need to read and store the entire file and then
parse it. Just parse it line by line as its read.
_______________________________________________
Linux-kernel-mentees mailing list
Linux-kernel-mentees@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mailman/listinfo/linux-kernel-mentees
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Linux-kernel-mentees] [PATCH v2 2/3] docs: add documentation for checkpatch
2021-01-28 14:38 ` [Linux-kernel-mentees] " Dwaipayan Ray
(?)
@ 2021-01-28 19:23 ` Joe Perches
2021-01-28 20:09 ` [Linux-kernel-mentees] " Dwaipayan Ray
-1 siblings, 1 reply; 13+ messages in thread
From: Joe Perches @ 2021-01-28 19:23 UTC (permalink / raw)
To: Dwaipayan Ray; +Cc: linux-kernel-mentees, linux-kernel
On Thu, 2021-01-28 at 20:08 +0530, Dwaipayan Ray wrote:
> Add documentation for kernel script checkpatch.pl.
> This documentation is also parsed by checkpatch to
> enable a verbose mode.
>
> Only a few test descriptions are added and the rest
> will be added later over time to document all the
> message types emitted by checkpatch.
Better to document them all rather than partially.
$ git grep -ohP '(?:\w+|\})\s*\(\s*\"[A-Z_]+"' scripts/checkpatch.pl | \
cut -f2 -d'"' | sort | uniq
ALLOC_ARRAY_ARGS
ALLOC_SIZEOF_STRUCT
ALLOC_WITH_MULTIPLY
ARCH_DEFINES
ARCH_INCLUDE_LINUX
ARRAY_SIZE
ASSIGN_IN_IF
ASSIGNMENT_CONTINUATIONS
AVOID_BUG
AVOID_EXTERNS
AVOID_L_PREFIX
BAD_SIGN_OFF
BAD_STABLE_ADDRESS_STYLE
BIT_MACRO
BLOCK_COMMENT_STYLE
BOOL_COMPARISON
BRACES
BRACKET_SPACE
CAMELCASE
CHECK
CODE_INDENT
COMMIT_COMMENT_SYMBOL
COMMIT_LOG_LONG_LINE
COMMIT_MESSAGE
COMPARISON_TO_NULL
COMPLEX_MACRO
CONCATENATED_STRING
CONFIG_DESCRIPTION
CONFIG_TYPE_BOOLEAN
CONSIDER_COMPLETION
CONSIDER_KSTRTO
CONSTANT_COMPARISON
CONSTANT_CONVERSION
CONST_CONST
CONST_READ_MOSTLY
CONST_STRUCT
CORRUPTED_PATCH
CVS_KEYWORD
DATA_RACE
DATE_TIME
DEEP_INDENTATION
DEFAULT_NO_BREAK
DEFINE_ARCH_HAS
DEPRECATED_API
DEPRECATED_VARIABLE
DEVICE_ATTR_FUNCTIONS
DEVICE_ATTR_PERMS
DEVICE_ATTR_RO
DEVICE_ATTR_RW
DEVICE_ATTR_WO
DIFF_IN_COMMIT_MSG
DOS_LINE_ENDINGS
DO_WHILE_MACRO_WITH_TRAILING_SEMICOLON
DT_SCHEMA_BINDING_PATCH
DT_SPLIT_BINDING_PATCH
DUPLICATED_SYSCTL_CONST
ELSE_AFTER_BRACE
EMAIL_SUBJECT
EMBEDDED_FILENAME
EMBEDDED_FUNCTION_NAME
ENOSYS
ENOTSUPP
ERROR
EXECUTE_PERMISSIONS
EXPORTED_WORLD_WRITABLE
EXPORT_SYMBOL
FILE_PATH_CHANGES
FROM_SIGN_OFF_MISMATCH
FSF_MAILING_ADDRESS
FUNCTION_ARGUMENTS
FUNCTION_WITHOUT_ARGS
GERRIT_CHANGE_ID
GIT_COMMIT_ID
GLOBAL_INITIALISERS
HEXADECIMAL_BOOLEAN_TEST
HOTPLUG_SECTION
IN_ATOMIC
INCLUDE_LINUX
INDENTED_LABEL
INIT_ATTRIBUTE
INITIALISED_STATIC
INLINE
INLINE_LOCATION
IS_ENABLED_CONFIG
JIFFIES_COMPARISON
KREALLOC_ARG_REUSE
LEADING_SPACE
LIKELY_MISUSE
LINE_CONTINUATIONS
LINE_SPACING
LINUX_VERSION_CODE
LOCKDEP
LOCKING
LOGGING_CONTINUATION
LOGICAL_CONTINUATIONS
LONG_LINE
LONG_UDELAY
MACRO_ARG_PRECEDENCE
MACRO_ARG_REUSE
MACRO_WITH_FLOW_CONTROL
MAINTAINERS_STYLE
MALFORMED_INCLUDE
MASK_THEN_SHIFT
MEMORY_BARRIER
MEMSET
MINMAX
MISORDERED_TYPE
MISPLACED_INIT
MISSING_EOF_NEWLINE
MISSING_SIGN_OFF
MODIFIED_INCLUDE_ASM
MODULE_LICENSE
MSLEEP
MULTILINE_DEREFERENCE
MULTIPLE_ASSIGNMENTS
MULTIPLE_DECLARATION
MULTISTATEMENT_MACRO_USE_DO_WHILE
NAKED_SSCANF
NETWORKING_BLOCK_COMMENT_STYLE
NEW_TYPEDEFS
NO_AUTHOR_SIGN_OFF
NON_OCTAL_PERMISSIONS
NOT_UNIFIED_DIFF
NR_CPUS
OBSOLETE
ONE_SEMICOLON
OOM_MESSAGE
OPEN_BRACE
OPEN_ENDED_LINE
PARENTHESIS_ALIGNMENT
PATCH_PREFIX
POINTER_LOCATION
PREFER_DEFINED_ATTRIBUTE_MACRO
PREFER_DEV_LEVEL
PREFER_ETH_BROADCAST_ADDR
PREFER_ETHER_ADDR_COPY
PREFER_ETHER_ADDR_EQUAL
PREFER_ETH_ZERO_ADDR
PREFER_FALLTHROUGH
PREFER_IS_ENABLED
PREFER_KERNEL_TYPES
PREFER_PR_LEVEL
PREFER_SEQ_PUTS
PRINTF_L
PRINTF_Z
PRINTK_RATELIMITED
PRINTK_WITHOUT_KERN_LEVEL
QUOTED_WHITESPACE_BEFORE_NEWLINE
REPEATED_WORD
RETURN_PARENTHESES
RETURN_VOID
SELF_ASSIGNMENT
SINGLE_STATEMENT_DO_WHILE_MACRO
SIZEOF_ADDRESS
SIZEOF_PARENTHESIS
SPACE_BEFORE_TAB
SPACING
SPDX_LICENSE_TAG
SPLIT_STRING
SSCANF_TO_KSTRTO
STATIC_CONST
STATIC_CONST_CHAR_ARRAY
STORAGE_CLASS
STRING_FRAGMENTS
STRLCPY
SUSPECT_CODE_INDENT
SUSPECT_COMMA_SEMICOLON
SWITCH_CASE_INDENT_LEVEL
SYMBOLIC_PERMS
TABSTOP
TEST_ATTR
TEST_NOT_ATTR
TEST_NOT_TYPE
TEST_TYPE
TRACE_PRINTK
TRACING_LOGGING
TRAILING_SEMICOLON
TRAILING_STATEMENTS
TRAILING_WHITESPACE
TYPECAST_INT_CONSTANT
TYPO_SPELLING
UAPI_INCLUDE
UNCOMMENTED_DEFINITION
UNDOCUMENTED_DT_STRING
UNDOCUMENTED_SETUP
UNKNOWN_COMMIT_ID
UNNECESSARY_BREAK
UNNECESSARY_CASTS
UNNECESSARY_ELSE
UNNECESSARY_INT
UNNECESSARY_KERN_LEVEL
UNNECESSARY_MODIFIER
UNNECESSARY_PARENTHESES
UNSPECIFIED_INT
USE_DEVICE_INITCALL
USE_FUNC
USE_LOCKDEP
USE_NEGATIVE_ERRNO
USE_RELATIVE_PATH
USE_SPINLOCK_T
USLEEP_RANGE
VOLATILE
VSPRINTF_POINTER_EXTENSION
VSPRINTF_SPECIFIER_PX
WAITQUEUE_ACTIVE
WARNING
WEAK_DECLARATION
WHILE_AFTER_BRACE
WHITESPACE_AFTER_LINE_CONTINUATION
YIELD
> diff --git a/Documentation/dev-tools/checkpatch.rst b/Documentation/dev-tools/checkpatch.rst
[]
> +Checkpatch (scripts/checkpatch.pl) is a perl script which checks for trivial style
> +violations in patches and optionally corrects them. Checkpatch can also be run on
> +file contexts and without the kernel tree.
> +
> +It should be noted that checkpatch may not be always right. At times the human
checkpatch is not always right.
Your judgement takes precedence over checkpatch messages.
> +
> + - --types TYPE(,TYPE2...)
> +
> + Only display messages with the given types.
> +
> + Example::
> +
> + ./scripts/checkpatch.pl mypatch.patch --types EMAIL_SUBJECT,NO_AUTHOR_SIGN_OFF
> +
> + - --ignore TYPE(,TYPE2...)
> +
> + Strip off messages with the given types.
checkpatch will not emit messages for the specified types,
> +
> + Example::
> +
> + ./scripts/checkpatch.pl mypatch.patch --ignore EMAIL_SUBJECT,NO_AUTHOR_SIGN_OFF
> +
> + - --show-types
> +
> + By default checkpatch doesn't display the type associated with the messages.
> + Set this flag to show the message type in the output.
> +
> + - --max-line-length=n
> +
> + Set the max line length (default 100). On exceeding the given length, a message
> + is emitted.
If a line exceeds the specified length, a LONG_LINE message is emitted.
> +
> + The message level is different for patch and file contexts. For patches, a WARNING is
> + emitted. While a milder CHECK is emitted for files. So for file contexts, the --strict
> + flag must also be enabled.
> +
> + - --min-conf-desc-length=n
> +
> + Set the min description length, if shorter, warn.
Kconfig entry minimum description
_______________________________________________
Linux-kernel-mentees mailing list
Linux-kernel-mentees@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mailman/listinfo/linux-kernel-mentees
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2 2/3] docs: add documentation for checkpatch
2021-01-28 19:23 ` Joe Perches
@ 2021-01-28 20:09 ` Dwaipayan Ray
0 siblings, 0 replies; 13+ messages in thread
From: Dwaipayan Ray @ 2021-01-28 20:09 UTC (permalink / raw)
To: Joe Perches; +Cc: linux-kernel-mentees, Lukas Bulwahn, linux-kernel
On Fri, Jan 29, 2021 at 12:53 AM Joe Perches <joe@perches.com> wrote:
>
> On Thu, 2021-01-28 at 20:08 +0530, Dwaipayan Ray wrote:
> > Add documentation for kernel script checkpatch.pl.
> > This documentation is also parsed by checkpatch to
> > enable a verbose mode.
> >
> > Only a few test descriptions are added and the rest
> > will be added later over time to document all the
> > message types emitted by checkpatch.
>
> Better to document them all rather than partially.
> $ git grep -ohP '(?:\w+|\})\s*\(\s*\"[A-Z_]+"' scripts/checkpatch.pl | \
> cut -f2 -d'"' | sort | uniq
> ALLOC_ARRAY_ARGS
> ALLOC_SIZEOF_STRUCT
> ALLOC_WITH_MULTIPLY
> ARCH_DEFINES
> ARCH_INCLUDE_LINUX
> ARRAY_SIZE
> ASSIGN_IN_IF
> ASSIGNMENT_CONTINUATIONS
> AVOID_BUG
> AVOID_EXTERNS
> AVOID_L_PREFIX
> BAD_SIGN_OFF
> BAD_STABLE_ADDRESS_STYLE
> BIT_MACRO
> BLOCK_COMMENT_STYLE
> BOOL_COMPARISON
> BRACES
> BRACKET_SPACE
> CAMELCASE
> CHECK
> CODE_INDENT
> COMMIT_COMMENT_SYMBOL
> COMMIT_LOG_LONG_LINE
> COMMIT_MESSAGE
> COMPARISON_TO_NULL
> COMPLEX_MACRO
> CONCATENATED_STRING
> CONFIG_DESCRIPTION
> CONFIG_TYPE_BOOLEAN
> CONSIDER_COMPLETION
> CONSIDER_KSTRTO
> CONSTANT_COMPARISON
> CONSTANT_CONVERSION
> CONST_CONST
> CONST_READ_MOSTLY
> CONST_STRUCT
> CORRUPTED_PATCH
> CVS_KEYWORD
> DATA_RACE
> DATE_TIME
> DEEP_INDENTATION
> DEFAULT_NO_BREAK
> DEFINE_ARCH_HAS
> DEPRECATED_API
> DEPRECATED_VARIABLE
> DEVICE_ATTR_FUNCTIONS
> DEVICE_ATTR_PERMS
> DEVICE_ATTR_RO
> DEVICE_ATTR_RW
> DEVICE_ATTR_WO
> DIFF_IN_COMMIT_MSG
> DOS_LINE_ENDINGS
> DO_WHILE_MACRO_WITH_TRAILING_SEMICOLON
> DT_SCHEMA_BINDING_PATCH
> DT_SPLIT_BINDING_PATCH
> DUPLICATED_SYSCTL_CONST
> ELSE_AFTER_BRACE
> EMAIL_SUBJECT
> EMBEDDED_FILENAME
> EMBEDDED_FUNCTION_NAME
> ENOSYS
> ENOTSUPP
> ERROR
> EXECUTE_PERMISSIONS
> EXPORTED_WORLD_WRITABLE
> EXPORT_SYMBOL
> FILE_PATH_CHANGES
> FROM_SIGN_OFF_MISMATCH
> FSF_MAILING_ADDRESS
> FUNCTION_ARGUMENTS
> FUNCTION_WITHOUT_ARGS
> GERRIT_CHANGE_ID
> GIT_COMMIT_ID
> GLOBAL_INITIALISERS
> HEXADECIMAL_BOOLEAN_TEST
> HOTPLUG_SECTION
> IN_ATOMIC
> INCLUDE_LINUX
> INDENTED_LABEL
> INIT_ATTRIBUTE
> INITIALISED_STATIC
> INLINE
> INLINE_LOCATION
> IS_ENABLED_CONFIG
> JIFFIES_COMPARISON
> KREALLOC_ARG_REUSE
> LEADING_SPACE
> LIKELY_MISUSE
> LINE_CONTINUATIONS
> LINE_SPACING
> LINUX_VERSION_CODE
> LOCKDEP
> LOCKING
> LOGGING_CONTINUATION
> LOGICAL_CONTINUATIONS
> LONG_LINE
> LONG_UDELAY
> MACRO_ARG_PRECEDENCE
> MACRO_ARG_REUSE
> MACRO_WITH_FLOW_CONTROL
> MAINTAINERS_STYLE
> MALFORMED_INCLUDE
> MASK_THEN_SHIFT
> MEMORY_BARRIER
> MEMSET
> MINMAX
> MISORDERED_TYPE
> MISPLACED_INIT
> MISSING_EOF_NEWLINE
> MISSING_SIGN_OFF
> MODIFIED_INCLUDE_ASM
> MODULE_LICENSE
> MSLEEP
> MULTILINE_DEREFERENCE
> MULTIPLE_ASSIGNMENTS
> MULTIPLE_DECLARATION
> MULTISTATEMENT_MACRO_USE_DO_WHILE
> NAKED_SSCANF
> NETWORKING_BLOCK_COMMENT_STYLE
> NEW_TYPEDEFS
> NO_AUTHOR_SIGN_OFF
> NON_OCTAL_PERMISSIONS
> NOT_UNIFIED_DIFF
> NR_CPUS
> OBSOLETE
> ONE_SEMICOLON
> OOM_MESSAGE
> OPEN_BRACE
> OPEN_ENDED_LINE
> PARENTHESIS_ALIGNMENT
> PATCH_PREFIX
> POINTER_LOCATION
> PREFER_DEFINED_ATTRIBUTE_MACRO
> PREFER_DEV_LEVEL
> PREFER_ETH_BROADCAST_ADDR
> PREFER_ETHER_ADDR_COPY
> PREFER_ETHER_ADDR_EQUAL
> PREFER_ETH_ZERO_ADDR
> PREFER_FALLTHROUGH
> PREFER_IS_ENABLED
> PREFER_KERNEL_TYPES
> PREFER_PR_LEVEL
> PREFER_SEQ_PUTS
> PRINTF_L
> PRINTF_Z
> PRINTK_RATELIMITED
> PRINTK_WITHOUT_KERN_LEVEL
> QUOTED_WHITESPACE_BEFORE_NEWLINE
> REPEATED_WORD
> RETURN_PARENTHESES
> RETURN_VOID
> SELF_ASSIGNMENT
> SINGLE_STATEMENT_DO_WHILE_MACRO
> SIZEOF_ADDRESS
> SIZEOF_PARENTHESIS
> SPACE_BEFORE_TAB
> SPACING
> SPDX_LICENSE_TAG
> SPLIT_STRING
> SSCANF_TO_KSTRTO
> STATIC_CONST
> STATIC_CONST_CHAR_ARRAY
> STORAGE_CLASS
> STRING_FRAGMENTS
> STRLCPY
> SUSPECT_CODE_INDENT
> SUSPECT_COMMA_SEMICOLON
> SWITCH_CASE_INDENT_LEVEL
> SYMBOLIC_PERMS
> TABSTOP
> TEST_ATTR
> TEST_NOT_ATTR
> TEST_NOT_TYPE
> TEST_TYPE
> TRACE_PRINTK
> TRACING_LOGGING
> TRAILING_SEMICOLON
> TRAILING_STATEMENTS
> TRAILING_WHITESPACE
> TYPECAST_INT_CONSTANT
> TYPO_SPELLING
> UAPI_INCLUDE
> UNCOMMENTED_DEFINITION
> UNDOCUMENTED_DT_STRING
> UNDOCUMENTED_SETUP
> UNKNOWN_COMMIT_ID
> UNNECESSARY_BREAK
> UNNECESSARY_CASTS
> UNNECESSARY_ELSE
> UNNECESSARY_INT
> UNNECESSARY_KERN_LEVEL
> UNNECESSARY_MODIFIER
> UNNECESSARY_PARENTHESES
> UNSPECIFIED_INT
> USE_DEVICE_INITCALL
> USE_FUNC
> USE_LOCKDEP
> USE_NEGATIVE_ERRNO
> USE_RELATIVE_PATH
> USE_SPINLOCK_T
> USLEEP_RANGE
> VOLATILE
> VSPRINTF_POINTER_EXTENSION
> VSPRINTF_SPECIFIER_PX
> WAITQUEUE_ACTIVE
> WARNING
> WEAK_DECLARATION
> WHILE_AFTER_BRACE
> WHITESPACE_AFTER_LINE_CONTINUATION
> YIELD
>
The amount looks a bit scary at a first glance!
But sure I will try to get them all documented, although it might take
a bit of time.
> > diff --git a/Documentation/dev-tools/checkpatch.rst b/Documentation/dev-tools/checkpatch.rst
> []
> > +Checkpatch (scripts/checkpatch.pl) is a perl script which checks for trivial style
> > +violations in patches and optionally corrects them. Checkpatch can also be run on
> > +file contexts and without the kernel tree.
> > +
> > +It should be noted that checkpatch may not be always right. At times the human
>
> checkpatch is not always right.
> Your judgement takes precedence over checkpatch messages.
>
>
> > +
> > + - --types TYPE(,TYPE2...)
> > +
> > + Only display messages with the given types.
> > +
> > + Example::
> > +
> > + ./scripts/checkpatch.pl mypatch.patch --types EMAIL_SUBJECT,NO_AUTHOR_SIGN_OFF
> > +
> > + - --ignore TYPE(,TYPE2...)
> > +
> > + Strip off messages with the given types.
>
> checkpatch will not emit messages for the specified types,
>
> > +
> > + Example::
> > +
> > + ./scripts/checkpatch.pl mypatch.patch --ignore EMAIL_SUBJECT,NO_AUTHOR_SIGN_OFF
> > +
> > + - --show-types
> > +
> > + By default checkpatch doesn't display the type associated with the messages.
> > + Set this flag to show the message type in the output.
> > +
> > + - --max-line-length=n
> > +
> > + Set the max line length (default 100). On exceeding the given length, a message
> > + is emitted.
>
> If a line exceeds the specified length, a LONG_LINE message is emitted.
> > +
> > + The message level is different for patch and file contexts. For patches, a WARNING is
> > + emitted. While a milder CHECK is emitted for files. So for file contexts, the --strict
> > + flag must also be enabled.
> > +
> > + - --min-conf-desc-length=n
> > +
> > + Set the min description length, if shorter, warn.
>
> Kconfig entry minimum description
>
Thanks for the review Joe!
With best regards,
Dwaipayan.
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Linux-kernel-mentees] [PATCH v2 2/3] docs: add documentation for checkpatch
@ 2021-01-28 20:09 ` Dwaipayan Ray
0 siblings, 0 replies; 13+ messages in thread
From: Dwaipayan Ray @ 2021-01-28 20:09 UTC (permalink / raw)
To: Joe Perches; +Cc: linux-kernel-mentees, linux-kernel
On Fri, Jan 29, 2021 at 12:53 AM Joe Perches <joe@perches.com> wrote:
>
> On Thu, 2021-01-28 at 20:08 +0530, Dwaipayan Ray wrote:
> > Add documentation for kernel script checkpatch.pl.
> > This documentation is also parsed by checkpatch to
> > enable a verbose mode.
> >
> > Only a few test descriptions are added and the rest
> > will be added later over time to document all the
> > message types emitted by checkpatch.
>
> Better to document them all rather than partially.
> $ git grep -ohP '(?:\w+|\})\s*\(\s*\"[A-Z_]+"' scripts/checkpatch.pl | \
> cut -f2 -d'"' | sort | uniq
> ALLOC_ARRAY_ARGS
> ALLOC_SIZEOF_STRUCT
> ALLOC_WITH_MULTIPLY
> ARCH_DEFINES
> ARCH_INCLUDE_LINUX
> ARRAY_SIZE
> ASSIGN_IN_IF
> ASSIGNMENT_CONTINUATIONS
> AVOID_BUG
> AVOID_EXTERNS
> AVOID_L_PREFIX
> BAD_SIGN_OFF
> BAD_STABLE_ADDRESS_STYLE
> BIT_MACRO
> BLOCK_COMMENT_STYLE
> BOOL_COMPARISON
> BRACES
> BRACKET_SPACE
> CAMELCASE
> CHECK
> CODE_INDENT
> COMMIT_COMMENT_SYMBOL
> COMMIT_LOG_LONG_LINE
> COMMIT_MESSAGE
> COMPARISON_TO_NULL
> COMPLEX_MACRO
> CONCATENATED_STRING
> CONFIG_DESCRIPTION
> CONFIG_TYPE_BOOLEAN
> CONSIDER_COMPLETION
> CONSIDER_KSTRTO
> CONSTANT_COMPARISON
> CONSTANT_CONVERSION
> CONST_CONST
> CONST_READ_MOSTLY
> CONST_STRUCT
> CORRUPTED_PATCH
> CVS_KEYWORD
> DATA_RACE
> DATE_TIME
> DEEP_INDENTATION
> DEFAULT_NO_BREAK
> DEFINE_ARCH_HAS
> DEPRECATED_API
> DEPRECATED_VARIABLE
> DEVICE_ATTR_FUNCTIONS
> DEVICE_ATTR_PERMS
> DEVICE_ATTR_RO
> DEVICE_ATTR_RW
> DEVICE_ATTR_WO
> DIFF_IN_COMMIT_MSG
> DOS_LINE_ENDINGS
> DO_WHILE_MACRO_WITH_TRAILING_SEMICOLON
> DT_SCHEMA_BINDING_PATCH
> DT_SPLIT_BINDING_PATCH
> DUPLICATED_SYSCTL_CONST
> ELSE_AFTER_BRACE
> EMAIL_SUBJECT
> EMBEDDED_FILENAME
> EMBEDDED_FUNCTION_NAME
> ENOSYS
> ENOTSUPP
> ERROR
> EXECUTE_PERMISSIONS
> EXPORTED_WORLD_WRITABLE
> EXPORT_SYMBOL
> FILE_PATH_CHANGES
> FROM_SIGN_OFF_MISMATCH
> FSF_MAILING_ADDRESS
> FUNCTION_ARGUMENTS
> FUNCTION_WITHOUT_ARGS
> GERRIT_CHANGE_ID
> GIT_COMMIT_ID
> GLOBAL_INITIALISERS
> HEXADECIMAL_BOOLEAN_TEST
> HOTPLUG_SECTION
> IN_ATOMIC
> INCLUDE_LINUX
> INDENTED_LABEL
> INIT_ATTRIBUTE
> INITIALISED_STATIC
> INLINE
> INLINE_LOCATION
> IS_ENABLED_CONFIG
> JIFFIES_COMPARISON
> KREALLOC_ARG_REUSE
> LEADING_SPACE
> LIKELY_MISUSE
> LINE_CONTINUATIONS
> LINE_SPACING
> LINUX_VERSION_CODE
> LOCKDEP
> LOCKING
> LOGGING_CONTINUATION
> LOGICAL_CONTINUATIONS
> LONG_LINE
> LONG_UDELAY
> MACRO_ARG_PRECEDENCE
> MACRO_ARG_REUSE
> MACRO_WITH_FLOW_CONTROL
> MAINTAINERS_STYLE
> MALFORMED_INCLUDE
> MASK_THEN_SHIFT
> MEMORY_BARRIER
> MEMSET
> MINMAX
> MISORDERED_TYPE
> MISPLACED_INIT
> MISSING_EOF_NEWLINE
> MISSING_SIGN_OFF
> MODIFIED_INCLUDE_ASM
> MODULE_LICENSE
> MSLEEP
> MULTILINE_DEREFERENCE
> MULTIPLE_ASSIGNMENTS
> MULTIPLE_DECLARATION
> MULTISTATEMENT_MACRO_USE_DO_WHILE
> NAKED_SSCANF
> NETWORKING_BLOCK_COMMENT_STYLE
> NEW_TYPEDEFS
> NO_AUTHOR_SIGN_OFF
> NON_OCTAL_PERMISSIONS
> NOT_UNIFIED_DIFF
> NR_CPUS
> OBSOLETE
> ONE_SEMICOLON
> OOM_MESSAGE
> OPEN_BRACE
> OPEN_ENDED_LINE
> PARENTHESIS_ALIGNMENT
> PATCH_PREFIX
> POINTER_LOCATION
> PREFER_DEFINED_ATTRIBUTE_MACRO
> PREFER_DEV_LEVEL
> PREFER_ETH_BROADCAST_ADDR
> PREFER_ETHER_ADDR_COPY
> PREFER_ETHER_ADDR_EQUAL
> PREFER_ETH_ZERO_ADDR
> PREFER_FALLTHROUGH
> PREFER_IS_ENABLED
> PREFER_KERNEL_TYPES
> PREFER_PR_LEVEL
> PREFER_SEQ_PUTS
> PRINTF_L
> PRINTF_Z
> PRINTK_RATELIMITED
> PRINTK_WITHOUT_KERN_LEVEL
> QUOTED_WHITESPACE_BEFORE_NEWLINE
> REPEATED_WORD
> RETURN_PARENTHESES
> RETURN_VOID
> SELF_ASSIGNMENT
> SINGLE_STATEMENT_DO_WHILE_MACRO
> SIZEOF_ADDRESS
> SIZEOF_PARENTHESIS
> SPACE_BEFORE_TAB
> SPACING
> SPDX_LICENSE_TAG
> SPLIT_STRING
> SSCANF_TO_KSTRTO
> STATIC_CONST
> STATIC_CONST_CHAR_ARRAY
> STORAGE_CLASS
> STRING_FRAGMENTS
> STRLCPY
> SUSPECT_CODE_INDENT
> SUSPECT_COMMA_SEMICOLON
> SWITCH_CASE_INDENT_LEVEL
> SYMBOLIC_PERMS
> TABSTOP
> TEST_ATTR
> TEST_NOT_ATTR
> TEST_NOT_TYPE
> TEST_TYPE
> TRACE_PRINTK
> TRACING_LOGGING
> TRAILING_SEMICOLON
> TRAILING_STATEMENTS
> TRAILING_WHITESPACE
> TYPECAST_INT_CONSTANT
> TYPO_SPELLING
> UAPI_INCLUDE
> UNCOMMENTED_DEFINITION
> UNDOCUMENTED_DT_STRING
> UNDOCUMENTED_SETUP
> UNKNOWN_COMMIT_ID
> UNNECESSARY_BREAK
> UNNECESSARY_CASTS
> UNNECESSARY_ELSE
> UNNECESSARY_INT
> UNNECESSARY_KERN_LEVEL
> UNNECESSARY_MODIFIER
> UNNECESSARY_PARENTHESES
> UNSPECIFIED_INT
> USE_DEVICE_INITCALL
> USE_FUNC
> USE_LOCKDEP
> USE_NEGATIVE_ERRNO
> USE_RELATIVE_PATH
> USE_SPINLOCK_T
> USLEEP_RANGE
> VOLATILE
> VSPRINTF_POINTER_EXTENSION
> VSPRINTF_SPECIFIER_PX
> WAITQUEUE_ACTIVE
> WARNING
> WEAK_DECLARATION
> WHILE_AFTER_BRACE
> WHITESPACE_AFTER_LINE_CONTINUATION
> YIELD
>
The amount looks a bit scary at a first glance!
But sure I will try to get them all documented, although it might take
a bit of time.
> > diff --git a/Documentation/dev-tools/checkpatch.rst b/Documentation/dev-tools/checkpatch.rst
> []
> > +Checkpatch (scripts/checkpatch.pl) is a perl script which checks for trivial style
> > +violations in patches and optionally corrects them. Checkpatch can also be run on
> > +file contexts and without the kernel tree.
> > +
> > +It should be noted that checkpatch may not be always right. At times the human
>
> checkpatch is not always right.
> Your judgement takes precedence over checkpatch messages.
>
>
> > +
> > + - --types TYPE(,TYPE2...)
> > +
> > + Only display messages with the given types.
> > +
> > + Example::
> > +
> > + ./scripts/checkpatch.pl mypatch.patch --types EMAIL_SUBJECT,NO_AUTHOR_SIGN_OFF
> > +
> > + - --ignore TYPE(,TYPE2...)
> > +
> > + Strip off messages with the given types.
>
> checkpatch will not emit messages for the specified types,
>
> > +
> > + Example::
> > +
> > + ./scripts/checkpatch.pl mypatch.patch --ignore EMAIL_SUBJECT,NO_AUTHOR_SIGN_OFF
> > +
> > + - --show-types
> > +
> > + By default checkpatch doesn't display the type associated with the messages.
> > + Set this flag to show the message type in the output.
> > +
> > + - --max-line-length=n
> > +
> > + Set the max line length (default 100). On exceeding the given length, a message
> > + is emitted.
>
> If a line exceeds the specified length, a LONG_LINE message is emitted.
> > +
> > + The message level is different for patch and file contexts. For patches, a WARNING is
> > + emitted. While a milder CHECK is emitted for files. So for file contexts, the --strict
> > + flag must also be enabled.
> > +
> > + - --min-conf-desc-length=n
> > +
> > + Set the min description length, if shorter, warn.
>
> Kconfig entry minimum description
>
Thanks for the review Joe!
With best regards,
Dwaipayan.
_______________________________________________
Linux-kernel-mentees mailing list
Linux-kernel-mentees@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mailman/listinfo/linux-kernel-mentees
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2021-01-28 20:31 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-01-28 14:37 [PATCH v2 0/3] checkpatch: add verbose mode Dwaipayan Ray
2021-01-28 14:37 ` [Linux-kernel-mentees] " Dwaipayan Ray
2021-01-28 14:38 ` [PATCH v2 1/3] " Dwaipayan Ray
2021-01-28 14:38 ` [Linux-kernel-mentees] " Dwaipayan Ray
2021-01-28 19:11 ` Joe Perches
2021-01-28 19:11 ` [Linux-kernel-mentees] " Joe Perches
2021-01-28 14:38 ` [PATCH v2 2/3] docs: add documentation for checkpatch Dwaipayan Ray
2021-01-28 14:38 ` [Linux-kernel-mentees] " Dwaipayan Ray
2021-01-28 19:23 ` Joe Perches
2021-01-28 20:09 ` Dwaipayan Ray
2021-01-28 20:09 ` [Linux-kernel-mentees] " Dwaipayan Ray
2021-01-28 14:38 ` [PATCH v2 3/3] " Dwaipayan Ray
2021-01-28 14:38 ` [Linux-kernel-mentees] " Dwaipayan Ray
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.