[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: