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

Bug#439508: lintian: Various updates for the debconf writing style checks



Package: lintian
Version: 1.23.34
Severity: wishlist
Tags: patch

Hi,

Attached is a patch to improve the debconf writing style checks:

>+	if ($template->{choices} =~ /^\s*(yes\s*,\s*no|no\s*,\s*yes)\s*$/i) {
>+	    tag "select-with-boolean-choices", "$template->{template}";
>+	}

New check to avoid select templates with only a yes/no choice.

>-	    if ($short && $short !~ m/:$/) {
>+	    if ($short && ($short !~ m/:$/ || $short =~ m/^(what|who|when|where|which|how)/i)) {
> 		tag "malformed-prompt-in-templates", $template->{template};
> 	    }

Some maintainers, when seeing the malformed-prompt-in-templates, just
replace the question mark by a colon. This fix should catch most of
them.

>-	    if (defined ($extended) && $extended =~ /\?/) {
>-		tag "using-question-in-extended-description-in-templates", $template->{template};
>-	    }
>+	}
>+	if (defined ($extended) && $extended =~ /\?/) {
>+	    tag "using-question-in-extended-description-in-templates", $template->{template};
> 	}

See
http://cvs.debian.org/ddp/manuals.sgml/developers-reference/developers-reference.sgml?root=debian-doc&r1=1.324&r2=1.325

>         if (defined $template->{description}) {
>-            if ($template->{description} =~ /(\A|\s)(I|[Mm]y|[Ww]e|[Oo]ur|[Oo]urs|mine|myself|ourself|me|us) /) {
>+            if ($template->{description} =~ /(\A|\s)(I|[Mm]y|[Ww]e|[Oo]ur|[Oo]urs|mine|myself|ourself|me|us)(\Z|\s)/) {
>                 tag "using-first-person-in-templates", $template->{template};
>             }
>-            if ($template->{description} =~ /[ \'\"]([Yy]es)[ \'\",.]/) {
>-                tag "making-assumptions-about-interfaces-in-templates", $template->{template};
>+            if ($template->{description} =~ /[ \'\"](yes[ \'\",;.]|no[\'\",;.])/i) {
>+                tag "making-assumptions-about-interfaces-in-templates", $template->{template} if ($type eq 'boolean');
>             }
>         }

Minor improvements.

Cheers,

-- 
Thomas Huriaux
--- /usr/share/lintian/checks/debconf.desc	2007-04-28 06:36:33.000000000 +0200
+++ debconf.desc	2007-08-25 11:26:11.000000000 +0200
@@ -290,3 +290,9 @@
  needed (e.g. "welcome" notes). Changing the templates type to "error"
  can also be appropriate, such as for input validation errors.
 Ref: policy 3.9.1
+
+Tag: select-with-boolean-choices
+Type: warning
+Info: Select templates with yes/no choices should use the boolean
+ type.
+Ref: debconf-devel(7)
--- /usr/share/lintian/checks/debconf	2007-04-28 06:09:29.000000000 +0200
+++ debconf	2007-08-25 11:26:00.000000000 +0200
@@ -215,6 +215,9 @@
 		}
 	    }
 	}
+	if ($template->{choices} =~ /^\s*(yes\s*,\s*no|no\s*,\s*yes)\s*$/i) {
+	    tag "select-with-boolean-choices", "$template->{template}";
+	}
     }
 
     if ($isselect and not exists $template->{choices}) {
@@ -280,7 +283,7 @@
     unless ($short =~ /for internal use/i) {
 	my $isprompt = grep { $_ eq $type } qw(string select password multiselect);
 	if ($isprompt) {
-	    if ($short && $short !~ m/:$/) {
+	    if ($short && ($short !~ m/:$/ || $short =~ m/^(what|who|when|where|which|how)/i)) {
 		tag "malformed-prompt-in-templates", $template->{template};
 	    }
 	    if ($short =~ /^(Please|Cho+se|Enter|Select|Specify|Give)/) {
@@ -291,9 +294,9 @@
 	    if ($short !~ /\?/) {
 		tag "malformed-question-in-templates", $template->{template};
 	    }
-	    if (defined ($extended) && $extended =~ /\?/) {
-		tag "using-question-in-extended-description-in-templates", $template->{template};
-	    }
+	}
+	if (defined ($extended) && $extended =~ /\?/) {
+	    tag "using-question-in-extended-description-in-templates", $template->{template};
 	}
 	if ($type eq 'note') {
 	    if ($short =~ /[.?;:]$/) {
@@ -304,11 +307,11 @@
 	    tag "too-long-short-description-in-templates", $template->{template};
 	}
         if (defined $template->{description}) {
-            if ($template->{description} =~ /(\A|\s)(I|[Mm]y|[Ww]e|[Oo]ur|[Oo]urs|mine|myself|ourself|me|us) /) {
+            if ($template->{description} =~ /(\A|\s)(I|[Mm]y|[Ww]e|[Oo]ur|[Oo]urs|mine|myself|ourself|me|us)(\Z|\s)/) {
                 tag "using-first-person-in-templates", $template->{template};
             }
-            if ($template->{description} =~ /[ \'\"]([Yy]es)[ \'\",.]/) {
-                tag "making-assumptions-about-interfaces-in-templates", $template->{template};
+            if ($template->{description} =~ /[ \'\"](yes[ \'\",;.]|no[\'\",;.])/i) {
+                tag "making-assumptions-about-interfaces-in-templates", $template->{template} if ($type eq 'boolean');
             }
         }
 

Reply to: