autoconf
[Top][All Lists]
Advanced

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

Re: [PATCH] autoheader: check templates of all config headers


From: Warren Young
Subject: Re: [PATCH] autoheader: check templates of all config headers
Date: Tue, 15 Dec 2015 18:13:06 -0700

On Oct 9, 2015, at 10:48 PM, Paul Eggert <address@hidden> wrote:
> 
> The basic idea for this sounds good; thanks.  It'd be nice if someone else 
> who uses Perl more than I could look over the details.

Well, I know Perl, but I don’t know the autotools internals, so all I can do is 
nitpick style details.  If that’s all you want, then:

> sub templates_for_header ($)

Don’t use subroutine prototypes.  They don’t do what you want, so perlcritic 
rightly complains about them:

  http://goo.gl/bDCsJ4

I suggest running the changed file through perlcritic at least at its default 
level.  I try to meet --harsh level in my code with minimal “## no critic” 
overrides.

> return @templates if (@templates);

Just a nit, but I typically leave the parens off when using the postfix form of 
“if”, especially when the expression is simple, as in this case.

> my $in = new Autom4te::XFile ("< " . open_quote ($template));

The space in that string literal looks like you’re trying to avoid some of the 
problems with the 1-argument form of IO::File-new().  Unless $template can be a 
dash to open STDIN, there is no good reason to use the 1-argument form of 
IO::File->new().

perlcritic will complain about the 2-argument form of open(), which the 
1-argument form of IO::File->new() calls, even on the gentlest perlcritic 
setting:

  http://goo.gl/xoQq3r

I realize that the previous version of the code also used the 1-argument form, 
but it looks like the Autom4te::XFile implementation that comes with Autoconf 
2.69 was changed to allow use of the 2-argument form:

  https://lists.gnu.org/archive/html/automake-patches/2012-03/msg00111.html

> my ($sym) = /^\#\s*\w+\s+(\w+)/

One of the things perlcritic --harsh will insist on are ‘x’ modifiers on 
regexes, and this RE is a good reason why.  It’s complex enough to benefit from 
comments:

    my ($sym) = m{
        ^\#         # a comment starting at the beginning of the line
        \s*\w+      # followed by optional whitespace and a word
        \s+         # followed by mandatory whitespace
        (\w+)       # and the symbol we actually care about
    }x or next;

I’m guessing that this is matching a comment of some kind, and “word” on the 
second RE line should be replaced with a more specific term.  Again, I don’t 
really know what this code is trying to accomplish.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]