linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3] checkpatch: fix TYPO_SPELLING check for words with apostrophe
@ 2020-12-01 19:07 Dwaipayan Ray
  2020-12-01 19:32 ` Joe Perches
  0 siblings, 1 reply; 3+ messages in thread
From: Dwaipayan Ray @ 2020-12-01 19:07 UTC (permalink / raw)
  To: joe
  Cc: linux-kernel-mentees, dwaipayanray1, linux-kernel, lukas.bulwahn,
	Peilin Ye

checkpatch reports a false TYPO_SPELLING warning for some words
containing an apostrophe when run with --codespell option.

A false positive is "doesn't". Occurrence of the word causes
checkpatch to emit the following warning:

"WARNING: 'doesn'' may be misspelled - perhaps 'doesn't'?"

Modify the regex pattern to be more in line with the codespell
default word matching regex. This fixes the word capture and
avoids the false warning.

In addition, highlight the misspelled word location by adding a
caret below the word.

Suggested-by: Joe Perches <joe@perches.com>
Reported-by: Peilin Ye <yepeilin.cs@gmail.com>
Signed-off-by: Dwaipayan Ray <dwaipayanray1@gmail.com>
---
Changes in v3:
- Highlight misspelled word location using a caret

Changes in v2:
- Use the default codespell word regex.
- Modify commit message to specify --codespell usage

 scripts/checkpatch.pl | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 3c86ea737e9c..e8c1ed0b1fad 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -3106,15 +3106,18 @@ sub process {
 # Check for various typo / spelling mistakes
 		if (defined($misspellings) &&
 		    ($in_commit_log || $line =~ /^(?:\+|Subject:)/i)) {
-			while ($rawline =~ /(?:^|[^a-z@])($misspellings)(?:\b|$|[^a-z@])/gi) {
+			while ($rawline =~ /(?:^|[^\w\-'`])($misspellings)(?:[^\w\-'`]|$)/gi) {
 				my $typo = $1;
+				my $blank = copy_spacing($rawline);
+				my $ptr = substr($blank, 0, $-[1]) . "^";
+				my $hereptr = "$hereline$ptr\n";
 				my $typo_fix = $spelling_fix{lc($typo)};
 				$typo_fix = ucfirst($typo_fix) if ($typo =~ /^[A-Z]/);
 				$typo_fix = uc($typo_fix) if ($typo =~ /^[A-Z]+$/);
 				my $msg_level = \&WARN;
 				$msg_level = \&CHK if ($file);
 				if (&{$msg_level}("TYPO_SPELLING",
-						  "'$typo' may be misspelled - perhaps '$typo_fix'?\n" . $herecurr) &&
+						  "'$typo' may be misspelled - perhaps '$typo_fix'?\n" . $hereptr) &&
 				    $fix) {
 					$fixed[$fixlinenr] =~ s/(^|[^A-Za-z@])($typo)($|[^A-Za-z@])/$1$typo_fix$3/;
 				}
-- 
2.27.0


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

* Re: [PATCH v3] checkpatch: fix TYPO_SPELLING check for words with apostrophe
  2020-12-01 19:07 [PATCH v3] checkpatch: fix TYPO_SPELLING check for words with apostrophe Dwaipayan Ray
@ 2020-12-01 19:32 ` Joe Perches
  2020-12-01 20:25   ` Joe Perches
  0 siblings, 1 reply; 3+ messages in thread
From: Joe Perches @ 2020-12-01 19:32 UTC (permalink / raw)
  To: Dwaipayan Ray, Andrew Morton
  Cc: linux-kernel-mentees, linux-kernel, lukas.bulwahn, Peilin Ye

On Wed, 2020-12-02 at 00:37 +0530, Dwaipayan Ray wrote:
> checkpatch reports a false TYPO_SPELLING warning for some words
> containing an apostrophe when run with --codespell option.

Thanks.
Acked-by: Joe Perches <joe@perches.com>

> 
> A false positive is "doesn't". Occurrence of the word causes
> checkpatch to emit the following warning:
> 
> "WARNING: 'doesn'' may be misspelled - perhaps 'doesn't'?"
> 
> Modify the regex pattern to be more in line with the codespell
> default word matching regex. This fixes the word capture and
> avoids the false warning.
> 
> In addition, highlight the misspelled word location by adding a
> caret below the word.
> 
> Suggested-by: Joe Perches <joe@perches.com>
> Reported-by: Peilin Ye <yepeilin.cs@gmail.com>
> Signed-off-by: Dwaipayan Ray <dwaipayanray1@gmail.com>
> ---
> Changes in v3:
> - Highlight misspelled word location using a caret
> 
> Changes in v2:
> - Use the default codespell word regex.
> - Modify commit message to specify --codespell usage
> 
>  scripts/checkpatch.pl | 7 +++++--
>  1 file changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
> index 3c86ea737e9c..e8c1ed0b1fad 100755
> --- a/scripts/checkpatch.pl
> +++ b/scripts/checkpatch.pl
> @@ -3106,15 +3106,18 @@ sub process {
>  # Check for various typo / spelling mistakes
>  		if (defined($misspellings) &&
>  		    ($in_commit_log || $line =~ /^(?:\+|Subject:)/i)) {
> -			while ($rawline =~ /(?:^|[^a-z@])($misspellings)(?:\b|$|[^a-z@])/gi) {
> +			while ($rawline =~ /(?:^|[^\w\-'`])($misspellings)(?:[^\w\-'`]|$)/gi) {
>  				my $typo = $1;
> +				my $blank = copy_spacing($rawline);
> +				my $ptr = substr($blank, 0, $-[1]) . "^";
> +				my $hereptr = "$hereline$ptr\n";
>  				my $typo_fix = $spelling_fix{lc($typo)};
>  				$typo_fix = ucfirst($typo_fix) if ($typo =~ /^[A-Z]/);
>  				$typo_fix = uc($typo_fix) if ($typo =~ /^[A-Z]+$/);
>  				my $msg_level = \&WARN;
>  				$msg_level = \&CHK if ($file);
>  				if (&{$msg_level}("TYPO_SPELLING",
> -						  "'$typo' may be misspelled - perhaps '$typo_fix'?\n" . $herecurr) &&
> +						  "'$typo' may be misspelled - perhaps '$typo_fix'?\n" . $hereptr) &&
>  				    $fix) {
>  					$fixed[$fixlinenr] =~ s/(^|[^A-Za-z@])($typo)($|[^A-Za-z@])/$1$typo_fix$3/;
>  				}



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

* Re: [PATCH v3] checkpatch: fix TYPO_SPELLING check for words with apostrophe
  2020-12-01 19:32 ` Joe Perches
@ 2020-12-01 20:25   ` Joe Perches
  0 siblings, 0 replies; 3+ messages in thread
From: Joe Perches @ 2020-12-01 20:25 UTC (permalink / raw)
  To: Dwaipayan Ray, Andrew Morton
  Cc: linux-kernel-mentees, linux-kernel, lukas.bulwahn, Peilin Ye

On Tue, 2020-12-01 at 11:32 -0800, Joe Perches wrote:
> On Wed, 2020-12-02 at 00:37 +0530, Dwaipayan Ray wrote:
> > checkpatch reports a false TYPO_SPELLING warning for some words
> > containing an apostrophe when run with --codespell option.

Hey Andrew.  If Dwaipayan doesn't mind, can you update this
when you apply it to extend the length of the caret printed?

> > diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
[]
> > @@ -3106,15 +3106,18 @@ sub process {
> >  # Check for various typo / spelling mistakes
> >  		if (defined($misspellings) &&
> >  		    ($in_commit_log || $line =~ /^(?:\+|Subject:)/i)) {
> > -			while ($rawline =~ /(?:^|[^a-z@])($misspellings)(?:\b|$|[^a-z@])/gi) {
> > +			while ($rawline =~ /(?:^|[^\w\-'`])($misspellings)(?:[^\w\-'`]|$)/gi) {
> >  				my $typo = $1;
> > +				my $blank = copy_spacing($rawline);
> > +				my $ptr = substr($blank, 0, $-[1]) . "^";

Changing this to:

				my $ptr = substr($blank, 0, $-[1]) . "^" x length($typo);

makes the matched misspelling more obvious

Thanks, Joe


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

end of thread, other threads:[~2020-12-01 20:26 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-12-01 19:07 [PATCH v3] checkpatch: fix TYPO_SPELLING check for words with apostrophe Dwaipayan Ray
2020-12-01 19:32 ` Joe Perches
2020-12-01 20:25   ` Joe Perches

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).