summaryrefslogtreecommitdiffstats
path: root/src/tools/perlcheck
diff options
context:
space:
mode:
Diffstat (limited to 'src/tools/perlcheck')
-rw-r--r--src/tools/perlcheck/find_perl_files14
-rw-r--r--src/tools/perlcheck/perlcriticrc24
-rwxr-xr-xsrc/tools/perlcheck/pgperlcritic20
-rwxr-xr-xsrc/tools/perlcheck/pgperlsyncheck16
4 files changed, 74 insertions, 0 deletions
diff --git a/src/tools/perlcheck/find_perl_files b/src/tools/perlcheck/find_perl_files
new file mode 100644
index 0000000..fd99dab
--- /dev/null
+++ b/src/tools/perlcheck/find_perl_files
@@ -0,0 +1,14 @@
+# 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 | grep -v '^\./\.git/'
+}
diff --git a/src/tools/perlcheck/perlcriticrc b/src/tools/perlcheck/perlcriticrc
new file mode 100644
index 0000000..e230111
--- /dev/null
+++ b/src/tools/perlcheck/perlcriticrc
@@ -0,0 +1,24 @@
+######################################################################
+#
+# src/tools/perlcheck/perlcriticrc
+#
+# config file for perlcritic for Postgres project
+#
+#####################################################################
+
+severity = 5
+
+theme = core
+
+# print the policy name as well as the normal output
+verbose = %f: %m at line %l, column %c. %e. ([%p] Severity: %s)\n
+
+# Note: for policy descriptions see https://metacpan.org/release/Perl-Critic
+
+
+# allow octal constants with leading zeros
+[-ValuesAndExpressions::ProhibitLeadingZeros]
+
+# insist on use of the warnings pragma
+[TestingAndDebugging::RequireUseWarnings]
+severity = 5
diff --git a/src/tools/perlcheck/pgperlcritic b/src/tools/perlcheck/pgperlcritic
new file mode 100755
index 0000000..1c2f787
--- /dev/null
+++ b/src/tools/perlcheck/pgperlcritic
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+# src/tools/perlcheck/pgperlcritic
+
+test -f src/tools/perlcheck/perlcriticrc || {
+ echo could not find src/tools/perlcheck/perlcriticrc
+ exit 1
+ }
+
+set -e
+
+# set this to override default perlcritic program:
+PERLCRITIC=${PERLCRITIC:-perlcritic}
+
+. src/tools/perlcheck/find_perl_files
+
+find_perl_files | xargs $PERLCRITIC \
+ --quiet \
+ --program-extensions .pl \
+ --profile=src/tools/perlcheck/perlcriticrc
diff --git a/src/tools/perlcheck/pgperlsyncheck b/src/tools/perlcheck/pgperlsyncheck
new file mode 100755
index 0000000..74f1584
--- /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