-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 tags 576283 + patch thanks Hi Proposing a patch for this bug. The patch only fixes the description spell check and will not apply to A) Multi word corrections nor B) "picky" (case) spell checks. I was not sure if we really want to include the package name in all spell checks. Let me know if I should exclude some of the spell checks listed in [1]. ~Niels [1] Trimmed output for readability: $ grep check_spelling checks/* | grep -v -e picky -e use c/binaries: check_spelling('spelling-error-in-binary' c/changelog-file: check_spelling('spelling-error-in-news-debian' c/changelog-file: check_spelling('spelling-error-in-changelog' c/copyright-file: check_spelling('spelling-error-in-copyright', $_); c/debian-readme: check_spelling('spelling-error-in-readme-debian' c/description: check_spelling('spelling-error-in-description' c/manpages: check_spelling("spelling-error-in-manpage" c/menus: check_spelling("spelling-error-in-doc-base-title-field", c/menus: check_spelling("spelling-error-in-doc-base-abstract-field", -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iQIcBAEBCAAGBQJNKjy3AAoJEAVLu599gGRCRDwP/3uZZBPVTbBG4qyqQyWdr1TG wX5vUph7ItkauJixNrQsHLwYuqJnnqSKVH4Et4iPWMj7/ndvxe9WLACUQfIFlcQW HFDaIr5f4tA42FtfC+4KwgQ3n+HuooJdI80v0erxqrD5pDmd1UeJWlcT9T3B44j9 sxUvD6D55WysJKlvqy2L4kmi9M/wiN4BwaDqJtbXRmbiFbulZH8m3+zEJmXxhPhC wXs2XMsWSBfGn0KyVLAwl7m5tkFEOUZTKIBYwBDOT18uT9e9j8Eww+/2jqju+xFY cedWIVzBTv9ZXHcIavJqQ9+29XDEOcVEbjNJNaAT1PPmZ43CFJZAT1wfw6950Yca Y1VIJOueJrlgu6cPb5Aud3BRFLpGLmbZT4O5ToNnPpKGHeeuWa10Irct2N30hYrl zIzKSEhoSV6yUOmYF0JvBI/XZRwApniXXOp31PG1xDk55uFlMl7PzkVLfWr/YaG7 DVdQ9TJfHq1ckH78pwSbok5j1+HQYr2xgaXadJdlPxGReTjsUbcWHWElrBHX4sGM llP9DLK5v20HmH4jOUZTYiX5xrWDYIYXoaA3ane7eThQx9M8zC8xv8kW1r4eLvku a9u14LMxlJgPzbX2xU9URZroohgO4hj6ietJmmGFCNpboTfhNMZyFfz8rZvpMyJt qgximBlf7SH1VDU1kBaf =sLkT -----END PGP SIGNATURE-----
>From dc78d3a49ad800349153973ed5dd84e1952edc18 Mon Sep 17 00:00:00 2001 From: Niels Thykier <niels@thykier.net> Date: Sun, 9 Jan 2011 23:34:04 +0100 Subject: [PATCH] Possible solution to #576283 --- checks/description | 3 ++- lib/Lintian/Check.pm | 17 ++++++++++++++--- .../spelling-package-name/debian/debian/control.in | 19 +++++++++++++++++++ t/tests/spelling-package-name/desc | 6 ++++++ 4 files changed, 41 insertions(+), 4 deletions(-) create mode 100644 t/tests/spelling-package-name/debian/debian/control.in create mode 100644 t/tests/spelling-package-name/desc create mode 100644 t/tests/spelling-package-name/tags diff --git a/checks/description b/checks/description index e113938..84e54f6 100644 --- a/checks/description +++ b/checks/description @@ -191,7 +191,8 @@ unless ($info->field('homepage') or $flagged_homepage) { } if ($description) { - check_spelling('spelling-error-in-description', $description); + my %exc = ( corrections => { $pkg => 1 }); + check_spelling('spelling-error-in-description', $description, undef, \%exc); check_spelling_picky('capitalization-error-in-description', $description); } diff --git a/lib/Lintian/Check.pm b/lib/Lintian/Check.pm index af13b6c..3e58988 100644 --- a/lib/Lintian/Check.pm +++ b/lib/Lintian/Check.pm @@ -185,33 +185,44 @@ sub _tag { tag(@args); } -=item check_spelling(TAG, TEXT, FILENAME) +=item check_spelling(TAG, TEXT, FILENAME, EXCEPTION) Performs a spelling check of TEXT, reporting TAG if any errors are found. If FILENAME is given, it will be used as the first argument to TAG. +If EXCEPTION is given, then EXCEPTION->{corrections} will be used as a +hash ref of exceptions. Any lowercase word appearing as a key of this +hash ref will never be considered a spelling mistake (exception being +if it is a part of a multiword misspelling). + Returns the number of spelling mistakes found in TEXT. =cut sub check_spelling { - my ($tag, $text, $filename) = @_; + my ($tag, $text, $filename, $exceptions) = @_; return unless $text; my $counter = 0; my $corrections = Lintian::Data->new('spelling/corrections', '\|\|'); my $corrections_multiword = Lintian::Data->new('spelling/corrections-multiword', '\|\|'); + my $exc; $text =~ s/[()\[\]]//g; $text =~ s/(\w-)\s*\n\s*/$1/; + if (defined($exceptions)){ + $exc = $exceptions->{corrections}; + } + $exc = {} unless (defined($exc)); + for my $word (split(/\s+/, $text)) { $word =~ s/[.,;:?!]+$//; next if ($word =~ /^[A-Z]{1,5}\z/); my $lcword = lc $word; - if ($corrections->known($lcword)) { + if ($corrections->known($lcword) && not exists ($exc->{$lcword})) { $counter++; my $correction = $corrections->value($lcword); if ($word =~ /^[A-Z]+$/) { diff --git a/t/tests/spelling-package-name/debian/debian/control.in b/t/tests/spelling-package-name/debian/debian/control.in new file mode 100644 index 0000000..d42604a --- /dev/null +++ b/t/tests/spelling-package-name/debian/debian/control.in @@ -0,0 +1,19 @@ +Source: {$srcpkg} +Priority: extra +Section: devel +Maintainer: {$author} +Standards-Version: {$standards_version} +Build-Depends: debhelper (>= 7.0.50~) + +Package: nam +Architecture: all +Depends: $\{misc:Depends\}, +Description: {$description} + This is a test to see if the spell checker realizes that nam is + not a spelling mistake, but the name of the package. + . + This is a test package designed to exercise some feature or tag of + Lintian. It is part of the Lintian test suite and may do very odd + things. It should not be installed like a regular package. It may + be an empty package. + diff --git a/t/tests/spelling-package-name/desc b/t/tests/spelling-package-name/desc new file mode 100644 index 0000000..19caaed --- /dev/null +++ b/t/tests/spelling-package-name/desc @@ -0,0 +1,6 @@ +Testname: spelling-package-name +Sequence: 6000 +Version: 1.0 +Description: Spell check test for excluding package name +Test-Against: + spelling-error-in-description diff --git a/t/tests/spelling-package-name/tags b/t/tests/spelling-package-name/tags new file mode 100644 index 0000000..e69de29 -- 1.7.2.3
Attachment:
0001-Possible-solution-to-576283.patch.sig
Description: Binary data