Hi, Thanks all for the review. Updated patch attached that should address all of the issues.
Regards, -- ,''`. : :' : Chris Lamb `. `'` la...@debian.org / chris-lamb.co.uk `-
From 9fae431b5b4392a6920147e0864d44c305270d4f Mon Sep 17 00:00:00 2001 From: Chris Lamb <la...@debian.org> Date: Wed, 24 Aug 2016 21:40:00 +0100 Subject: [PATCH] c/debhelper.pm: Correct false positives in typo-in-debhelper-override-target when matching multiple targets, extra whitespace and wildcards. Signed-off-by: Chris Lamb <la...@debian.org> --- checks/debhelper.pm | 11 ++++++++--- .../debhelper-override-typos/debian/debian/rules | 21 +++++++++++++++++++-- t/tests/debhelper-override-typos/tags | 15 ++++++++++++--- 3 files changed, 39 insertions(+), 8 deletions(-) diff --git a/checks/debhelper.pm b/checks/debhelper.pm index 3883033..9babcfe 100644 --- a/checks/debhelper.pm +++ b/checks/debhelper.pm @@ -178,10 +178,15 @@ sub run { $dhcompatvalue = $1; # one can export and then set the value: $level = $1 if ($level); - } elsif (/^override_(dh_[^:]+)/) { + } elsif (/(.*override_dh_.*):/) { + my $targets = $1; $needbuilddepends = 1; - my $dhcommand = $1; - if (not $dh_commands_depends->known($dhcommand)) { + # Can be multiple targets per rule. + while ($targets =~ /\boverride_(dh_[^\s]+)/g) { + my $dhcommand = $1; + # If maintainer is using wildcards, it's unlikely to be a typo. + next if ($dhcommand =~ /%/); + next if ($dh_commands_depends->known($dhcommand)); # Unknown command, so check for likely misspellings foreach my $x (sort $dh_commands_depends->all) { if (distance($dhcommand, $x) < 3) { diff --git a/t/tests/debhelper-override-typos/debian/debian/rules b/t/tests/debhelper-override-typos/debian/debian/rules index 975c83a..1014f51 100755 --- a/t/tests/debhelper-override-typos/debian/debian/rules +++ b/t/tests/debhelper-override-typos/debian/debian/rules @@ -5,11 +5,28 @@ # Good override_dh_install: +override_dh_install : + override_dh_install: # +prefix_override_dh_gconfs: override_dh_will_never_exist: +override_dh_python2 override_dh_perl : +override_dh_systemd_enable override_dh_systemd_disable: +override_dh_auto_configure-% override_dh_auto_install-%: +foo override_dh_installdeb bar override_dh_installxmlcatalogs: # combining regular and overrides + # Bad +override_dh_nump: # Multiple matches should emit only one tag override_dh_instakk: + override_dh_installcrons: override_dh_install_examples: +override_dh_install_changelogs : # Extra space +override_dh_perls override_dh_python2 : # Bad then good +override_dh_python2 override_dh_perls : # Good then bad +override_dh_instakk override_dh_install_examples : # Both broken, with space +foo override_dh_installdebs bar override_dh_installxmlcatalog: # combining regular and overrides + +# Don't worry about anything beyond a colon even if wrong; it will fail anyway. +override_dh_testdirs: override_dh_ucfs -# Multiple matches should emit only one tag -override_dh_nump: +.PHONY: override_dh_ucfs diff --git a/t/tests/debhelper-override-typos/tags b/t/tests/debhelper-override-typos/tags index c8185b7..3c86a86 100644 --- a/t/tests/debhelper-override-typos/tags +++ b/t/tests/debhelper-override-typos/tags @@ -1,3 +1,12 @@ -W: debhelper-override-typos source: typo-in-debhelper-override-target override_dh_instakk -> override_dh_install (line 11) -W: debhelper-override-typos source: typo-in-debhelper-override-target override_dh_install_examples -> override_dh_installexamples (line 12) -W: debhelper-override-typos source: typo-in-debhelper-override-target override_dh_nump -> override_dh_numpy (line 15) +W: debhelper-override-typos source: typo-in-debhelper-override-target override_dh_instakk -> override_dh_install (line 20) +W: debhelper-override-typos source: typo-in-debhelper-override-target override_dh_instakk -> override_dh_install (line 26) +W: debhelper-override-typos source: typo-in-debhelper-override-target override_dh_install_changelogs -> override_dh_installchangelogs (line 23) +W: debhelper-override-typos source: typo-in-debhelper-override-target override_dh_install_examples -> override_dh_installexamples (line 22) +W: debhelper-override-typos source: typo-in-debhelper-override-target override_dh_install_examples -> override_dh_installexamples (line 26) +W: debhelper-override-typos source: typo-in-debhelper-override-target override_dh_installcrons -> override_dh_installcron (line 21) +W: debhelper-override-typos source: typo-in-debhelper-override-target override_dh_installdebs -> override_dh_installdeb (line 27) +W: debhelper-override-typos source: typo-in-debhelper-override-target override_dh_installxmlcatalog -> override_dh_installxmlcatalogs (line 27) +W: debhelper-override-typos source: typo-in-debhelper-override-target override_dh_nump -> override_dh_numpy (line 19) +W: debhelper-override-typos source: typo-in-debhelper-override-target override_dh_perls -> override_dh_perl (line 24) +W: debhelper-override-typos source: typo-in-debhelper-override-target override_dh_perls -> override_dh_perl (line 25) +W: debhelper-override-typos source: typo-in-debhelper-override-target override_dh_testdirs -> override_dh_testdir (line 30) -- 2.9.3