Héctor Francisco Hernández

 (a.k.a. Tito)

Senior Software Engineer

Ban long php functions

#!/bin/bash

f() {
    SRC="${1:2}"
    REGEX='s/.*[ \t]*function[ \t]*\([a-zA-Z_][a-zA-Z0-9_]*\).*/f \1/g'

    sed "$REGEX" "$SRC" | \
    awk -v src="$SRC" '
        /^f [a-zA-Z0-9]+$/ {
            MAX = 100
            if (start != "") {
                nlines = end - start
                if (nlines > MAX) {
                    print substr(src, 1, length(src)-4) " " func
                }
            }
            start = NR
            func = $2
        }
        /^[ \t]*}[ \t]*$/{
            end = NR;
        }
    '
}

export -f f
find src -type f -name '*.php' -execdir bash -c 'f "$1"' - {} ';' | \
    sort > /tmp/longfuncs.csv

diff docs/longfuncs.csv /tmp/longfuncs.csv

if [ "$?" -eq 1 ]; then
    echo "Function too long!"
    exit 1
fi
      
  • About me
  • Resume
  • Email me at hectorfh (at) gmail.com.
  • Bézier intro.
  • Running any program as a Windows NT service
  • Posting multipart form data using curl in PHP.
  • Gorilla
  • Posting multipart form data using curl in PHP.

This web site is proudly powered by Hypertext Markup Language.