aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Dunstan <andrew@dunslane.net>2018-06-11 14:47:20 -0400
committerAndrew Dunstan <andrew@dunslane.net>2018-06-11 14:47:20 -0400
commitaf616ce48347c68af7bdcfe0e62d9ad601cb8d75 (patch)
treed1b9fae305d92410b9bde772b365ae3bcc5668ba
parentbe3d90026a3c17c7e6cc23d52430c37df403d869 (diff)
downloadpostgresql-af616ce48347c68af7bdcfe0e62d9ad601cb8d75.tar.gz
postgresql-af616ce48347c68af7bdcfe0e62d9ad601cb8d75.zip
Add a script to detect perl compile time errors and warnings
Also add a function that centralizes the logic for locating all our perl files and use it in pgperlcritic and pgperltidy as well as the new pgperlcheck.
-rw-r--r--src/tools/perlcheck/find_perl_files15
-rwxr-xr-xsrc/tools/perlcheck/pgperlsyncheck16
-rwxr-xr-xsrc/tools/pgindent/pgperltidy14
-rwxr-xr-xsrc/tools/pgperlcritic/pgperlcritic14
4 files changed, 37 insertions, 22 deletions
diff --git a/src/tools/perlcheck/find_perl_files b/src/tools/perlcheck/find_perl_files
new file mode 100644
index 00000000000..e10466a3905
--- /dev/null
+++ b/src/tools/perlcheck/find_perl_files
@@ -0,0 +1,15 @@
+
+# src/tools/perlcheck/find_perl_files
+
+# shell function to find all perl files in the source tree
+
+find_perl_files () {
+ {
+ # take all .pl and .pm files
+ find . -type f -name '*.p[lm]' -print
+ # take executable files that file(1) thinks are perl files
+ find . -type f -perm -100 -exec file {} \; -print |
+ egrep -i ':.*perl[0-9]*\>' |
+ cut -d: -f1
+ } | sort -u
+}
diff --git a/src/tools/perlcheck/pgperlsyncheck b/src/tools/perlcheck/pgperlsyncheck
new file mode 100755
index 00000000000..74f1584b8e7
--- /dev/null
+++ b/src/tools/perlcheck/pgperlsyncheck
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+# script to detect compile time errors and warnings in all perl files
+
+INCLUDES="-I src/tools/msvc -I src/tools/msvc/dummylib -I src/backend/catalog"
+INCLUDES="-I src/test/perl -I src/backend/utils/mb/Unicode $INCLUDES"
+INCLUDES="-I src/bin/pg_rewind -I src/test/ssl $INCLUDES"
+
+set -e
+
+. src/tools/perlcheck/find_perl_files
+
+# for zsh
+setopt shwordsplit 2>/dev/null || true
+
+find_perl_files | xargs -L 1 perl $INCLUDES -cw 2>&1 | grep -v OK
diff --git a/src/tools/pgindent/pgperltidy b/src/tools/pgindent/pgperltidy
index 5d9aa7c64cd..5e704119eb7 100755
--- a/src/tools/pgindent/pgperltidy
+++ b/src/tools/pgindent/pgperltidy
@@ -7,14 +7,6 @@ set -e
# set this to override default perltidy program:
PERLTIDY=${PERLTIDY:-perltidy}
-# locate all Perl files in the tree
-(
- # take all .pl and .pm files
- find . -type f -a \( -name '*.pl' -o -name '*.pm' \)
- # take executable files that file(1) thinks are perl files
- find . -type f -perm -100 -exec file {} \; |
- egrep -i ':.*perl[0-9]*\>' |
- cut -d: -f1
-) |
-sort -u |
-xargs $PERLTIDY --profile=src/tools/pgindent/perltidyrc
+. src/tools/perlcheck/find_perl_files
+
+find_perl_files | xargs $PERLTIDY --profile=src/tools/pgindent/perltidyrc
diff --git a/src/tools/pgperlcritic/pgperlcritic b/src/tools/pgperlcritic/pgperlcritic
index 28264b1a242..5e7edbf99f2 100755
--- a/src/tools/pgperlcritic/pgperlcritic
+++ b/src/tools/pgperlcritic/pgperlcritic
@@ -12,17 +12,9 @@ set -e
# set this to override default perlcritic program:
PERLCRITIC=${PERLCRITIC:-perlcritic}
-# locate all Perl files in the tree
-{
- # take all .pl and .pm files
- find . -type f -name '*.p[lm]' -print
- # take executable files that file(1) thinks are perl files
- find . -type f -perm -100 -exec file {} \; -print |
- egrep -i ':.*perl[0-9]*\>' |
- cut -d: -f1
-} |
-sort -u |
-xargs $PERLCRITIC \
+. src/tools/perlcheck/find_perl_files
+
+find_perl_files | xargs $PERLCRITIC \
--quiet \
--program-extensions .pl \
--profile=src/tools/pgperlcritic/perlcriticrc