Skip to content

Instantly share code, notes, and snippets.

@mathiasverraes
Created July 12, 2012 07:42
Show Gist options
  • Save mathiasverraes/3096500 to your computer and use it in GitHub Desktop.
Save mathiasverraes/3096500 to your computer and use it in GitHub Desktop.
Recursive PHP Lint script
#!/bin/bash
for file in `find .`
do
EXTENSION="${file##*.}"
if [ "$EXTENSION" == "php" ] || [ "$EXTENSION" == "phtml" ]
then
RESULTS=`php -l $file`
if [ "$RESULTS" != "No syntax errors detected in $file" ]
then
echo $RESULTS
fi
fi
done
@vertexvaar
Copy link

vertexvaar commented Feb 5, 2021

I combined and added some parts:

  1. @judgej redirect to /dev/null
  2. Add -false after -prune to omit the vendor folder from output
  3. Add $(nproc) to get the actual amount of usable cores

find . -path ./vendor -prune -false -o -type f -name '*.php' -print0 | xargs -0 -n1 -P$(nproc) php -l -n > /dev/null

Edit: Portable version with comment from @CodeBrauer:

find . -path ./vendor -prune -false -o -type f -name '*.php' -print0 | xargs -0 -n1 -P$(nproc 2> /dev/null || sysctl -n hw.ncpu) php -l -n > /dev/null


I ❤️ this discussion! You people are awesome!

@CodeBrauer
Copy link

@vertex

  1. Add $(nproc) to get the actual amount of usable cores

For those using macOS - nproc is not available, but you can use sysctl -n hw.ncpu

@Jimbolino
Copy link

still havent found a good (portable) version for this
redirecting the output of php -l to /dev/null also hides the parse/syntax error messages

#!/bin/sh
set -ex

find . -type f -name '*.php' ! -path './vendor/*' -exec php -l -n {} \; | (! grep -v "No syntax errors detected" )
echo 'syntax OK'

This works fine on ubuntu, but on macOS it stops the script

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment