Bug#834370: lintian: c/debhelper.pm: Correct false positive in matching targets with extra whitespace
Niels Thykier wrote:
> [..]
Updated patch attached that should catch all of these (and others).
Regards,
--
,''`.
: :' : Chris Lamb
`. `'` lamby@debian.org / chris-lamb.co.uk
`-
From 0668cb0b90ef1874336658358de83e54590e70c9 Mon Sep 17 00:00:00 2001
From: Chris Lamb <lamby@debian.org>
Date: Mon, 15 Aug 2016 12:13:16 +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 <lamby@debian.org>
---
checks/debhelper.pm | 11 ++++++++---
t/tests/debhelper-override-typos/debian/debian/rules | 8 ++++++++
t/tests/debhelper-override-typos/tags | 11 ++++++++---
3 files changed, 24 insertions(+), 6 deletions(-)
diff --git a/checks/debhelper.pm b/checks/debhelper.pm
index 3883033..95ede87 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_.*:/) {
$needbuilddepends = 1;
- my $dhcommand = $1;
- if (not $dh_commands_depends->known($dhcommand)) {
+
+ # Split; there can be multiple targets per line.
+ while (/override_(dh_[^\s:]+)\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..076bca9 100755
--- a/t/tests/debhelper-override-typos/debian/debian/rules
+++ b/t/tests/debhelper-override-typos/debian/debian/rules
@@ -5,11 +5,19 @@
# Good
override_dh_install:
+override_dh_install :
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-%:
# Bad
override_dh_instakk:
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
# Multiple matches should emit only one tag
override_dh_nump:
diff --git a/t/tests/debhelper-override-typos/tags b/t/tests/debhelper-override-typos/tags
index c8185b7..104fe57 100644
--- a/t/tests/debhelper-override-typos/tags
+++ b/t/tests/debhelper-override-typos/tags
@@ -1,3 +1,8 @@
-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 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_install_changelogs -> override_dh_installchangelogs (line 17)
+W: debhelper-override-typos source: typo-in-debhelper-override-target override_dh_install_examples -> override_dh_installexamples (line 16)
+W: debhelper-override-typos source: typo-in-debhelper-override-target override_dh_install_examples -> override_dh_installexamples (line 20)
+W: debhelper-override-typos source: typo-in-debhelper-override-target override_dh_nump -> override_dh_numpy (line 23)
+W: debhelper-override-typos source: typo-in-debhelper-override-target override_dh_perls -> override_dh_perl (line 18)
+W: debhelper-override-typos source: typo-in-debhelper-override-target override_dh_perls -> override_dh_perl (line 19)
--
2.8.1
Reply to: