From af616ce48347c68af7bdcfe0e62d9ad601cb8d75 Mon Sep 17 00:00:00 2001 From: Andrew Dunstan Date: Mon, 11 Jun 2018 14:47:20 -0400 Subject: [PATCH] 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. --- src/tools/perlcheck/find_perl_files | 15 +++++++++++++++ src/tools/perlcheck/pgperlsyncheck | 16 ++++++++++++++++ src/tools/pgindent/pgperltidy | 14 +++----------- src/tools/pgperlcritic/pgperlcritic | 14 +++----------- 4 files changed, 37 insertions(+), 22 deletions(-) create mode 100644 src/tools/perlcheck/find_perl_files create mode 100755 src/tools/perlcheck/pgperlsyncheck diff --git a/src/tools/perlcheck/find_perl_files b/src/tools/perlcheck/find_perl_files new file mode 100644 index 0000000000..e10466a390 --- /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 0000000000..74f1584b8e --- /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 5d9aa7c64c..5e704119eb 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 28264b1a24..5e7edbf99f 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