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 <[email protected]> > > 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 <[email protected]> > Reported-by: Peilin Ye <[email protected]> > Signed-off-by: Dwaipayan Ray <[email protected]> > --- > 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/; > }

