Add a script to detect perl compile time errors and warnings
authorAndrew Dunstan
Mon, 11 Jun 2018 18:47:20 +0000 (14:47 -0400)
committerAndrew Dunstan
Mon, 11 Jun 2018 18:47:20 +0000 (14:47 -0400)
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.

src/tools/perlcheck/find_perl_files [new file with mode: 0644]
src/tools/perlcheck/pgperlsyncheck [new file with mode: 0755]
src/tools/pgindent/pgperltidy
src/tools/pgperlcritic/pgperlcritic

diff --git a/src/tools/perlcheck/find_perl_files b/src/tools/perlcheck/find_perl_files
new file mode 100644 (file)
index 0000000..e10466a
--- /dev/null
@@ -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 (executable)
index 0000000..74f1584
--- /dev/null
@@ -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
index 5d9aa7c64cdd5877a8133b1a5351ce604042b235..5e704119eb76626014fe734165a3af96260d6a64 100755 (executable)
@@ -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
index 28264b1a24287d5bc28ca3c514bf22186a8571e6..5e7edbf99f275c1c4e88cb8d2ff1c011be8ea9d3 100755 (executable)
@@ -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