Re: Make all Perl warnings fatal
Andrew Dunstan <andrew@dunslane.net>
From: Andrew Dunstan <andrew@dunslane.net>
To: Peter Eisentraut <peter@eisentraut.org>,
pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2023-08-21T15:51:24Z
Lists: pgsql-hackers
On 2023-08-21 Mo 02:20, Peter Eisentraut wrote: > To avoid a complete bloodbath on cfbot, here is an updated patch set > that includes a workaround for the getprotobyname() issue mentioned > below. > > > On 10.08.23 07:58, Peter Eisentraut wrote: >> We have a lot of Perl scripts in the tree, mostly code generation and >> TAP tests. Occasionally, these scripts produce warnings. These are >> AFAICT always mistakes on the developer side (true positives). >> Typical examples are warnings from genbki.pl or related when you make >> a mess in the catalog files during development, or warnings from >> tests when they massage a config file that looks different on >> different hosts, or mistakes during merges (e.g., duplicate >> subroutine definitions), or just mistakes that weren't noticed, >> because, you know, there is a lot of output in a verbose build. >> >> I wanted to figure put if we can catch these more reliably, in the >> style of -Werror. AFAICT, there is no way to automatically turn all >> warnings into fatal errors. But there is a way to do it per script, >> by replacing >> >> use warnings; >> >> by >> >> use warnings FATAL => 'all'; >> >> See attached patch to try it out. >> >> The documentation at >> <https://perldoc.perl.org/warnings#Fatal-Warnings> appears to sort of >> hand-wave against doing that. Their argument appears to be something >> like, the modules you use might in the future produce additional >> warnings, thus breaking your scripts. On balance, I'd take that >> risk, if it means I would notice the warnings in a more timely and >> robust way. But that's just me at a moment in time. >> >> Thoughts? It's not really the same as -Werror, because many warnings can be generated at runtime rather than compile-time. Still, I guess that might not matter too much since apart from plperl we only use perl for building / testing. Regarding the dangers mentioned, I guess we can undo it if it proves a nuisance. +1 to getting rid if the unnecessary call to getprotobyname(). cheers andrew -- Andrew Dunstan EDB:https://www.enterprisedb.com
Commits
-
Add missing FATAL => 'all' to a use warnings in Perl
- 014720c6d9fb 18.0 landed
-
Make all Perl warnings fatal in 043_wal_replay_wait.pl
- e1555645d729 18.0 landed
-
Add tap test for pg_signal_autovacuum role
- d2b74882cab8 18.0 cited
-
Implement pg_wal_replay_wait() stored procedure
- 06c418e163e9 17.0 cited
-
Fix an issue in PostgreSQL::Test::Cluster:psql()
- 686db12de3a0 17.0 landed
-
Make all Perl warnings fatal
- c5385929593d 17.0 landed
-
Fix a warning in Perl test code
- a7ebd82b9e50 17.0 landed
-
Avoid use of Perl getprotobyname
- 01226c682ce6 17.0 landed