On 18 February 2010 17:35, sunburn jojo@mouton-rebelle.com wrote:
I used to have a textmate command that was running a zend studio binairies in command line to check php syntax ; it was a lot better than the simple php syntax check bundled with the php Bundle, as it told me when a var was not declared, and asked for coding standard respect.
I can't find it anywhere, if someone could help me....
Make a TextMate command like this, changing zca to point to your ZendCodeAnalyzer binary:
#!/usr/bin/env ruby require ENV['TM_SUPPORT_PATH'] + '/lib/textmate'
zca = 'Path to ZendCodeAnalyzer' result = `#{zca} #{ENV['TM_FILEPATH']} 2>&1` result = result.sub(/^Zend.*\n/, '').sub(/^Analyzing.*\n/, '').gsub(/^.*(line (\d+))/, 'line \1')
puts result.empty? ? 'No errors' : result
TextMate.go_to :line => $1 if result =~ /line (\d+)/
If you find the default settings too strict you can disable some of the checks. I actually have several TextMate commans for this disabling different checks. Here's one of those:
#!/usr/bin/env ruby require ENV['TM_SUPPORT_PATH'] + '/lib/textmate'
zca = 'Path to ZendCodeAnalyzer' disable = '--disable var-use-before-def-global --disable bool-assign --disable var-arg-unused'
all_lines = `#{zca} #{ENV['TM_FILEPATH']} 2>&1 | wc -l`.to_i vubdg_lines = `zca --disable var-use-before-def-global #{ENV['TM_FILEPATH']} 2>&1 | wc -l`.to_i ba_lines = `zca --disable bool-assign #{ENV['TM_FILEPATH']} 2>&1 | wc -l`.to_i vau_lines = `zca --disable var-arg-unused #{ENV['TM_FILEPATH']} 2>&1 | wc -l`.to_i
result = `zca #{disable} #{ENV['TM_FILEPATH']} 2>&1` result = result.sub(/^Zend.*\n/, '').sub(/^Analyzing.*\n/, '').gsub(/^.*(line (\d+))/, 'line \1')
puts "(Ignoring #{all_lines - vubdg_lines} globals)" puts "(Ignoring #{all_lines - ba_lines} assignments in conditions)" puts "(Ignoring #{all_lines - vau_lines} unused variables)" puts result.empty? ? 'No other errors' : result
TextMate.go_to :line => $1 if result =~ /line (\d+)/
This command will run ZCA several times, counting the ignored warnings, but not actually displaying them.