diff options
author | w0rp <w0rp@users.noreply.github.com> | 2018-05-28 12:41:13 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-05-28 12:41:13 +0100 |
commit | eaf35bc6115694def260a1790b8eb62559af6785 (patch) | |
tree | b50780def8f2950c92aa210fb62559d7b350eec3 | |
parent | 29a9c9a2553911200b5f80d4159e8814e34eb8ab (diff) | |
parent | ae8dd39760f1d6e3d9a8110c1d2ec1e2034131c5 (diff) | |
download | ale-eaf35bc6115694def260a1790b8eb62559af6785.zip |
Merge pull request #1562 from haginaga/support_phan_client
Add support phan_client for php
-rw-r--r-- | ale_linters/php/phan.vim | 63 | ||||
-rw-r--r-- | doc/ale-php.txt | 18 |
2 files changed, 66 insertions, 15 deletions
diff --git a/ale_linters/php/phan.vim b/ale_linters/php/phan.vim index f3b3d48f..c6f16356 100644 --- a/ale_linters/php/phan.vim +++ b/ale_linters/php/phan.vim @@ -1,28 +1,65 @@ -" Author: diegoholiveira <https://github.com/diegoholiveira> +" Author: diegoholiveira <https://github.com/diegoholiveira>, haginaga <https://github.com/haginaga> " Description: static analyzer for PHP " Define the minimum severity let g:ale_php_phan_minimum_severity = get(g:, 'ale_php_phan_minimum_severity', 0) +let g:ale_php_phan_executable = get(g:, 'ale_php_phan_executable', 'phan') +let g:ale_php_phan_use_client = get(g:, 'ale_php_phan_use_client', 0) + +function! ale_linters#php#phan#GetExecutable(buffer) abort + let l:executable = ale#Var(a:buffer, 'php_phan_executable') + + if ale#Var(a:buffer, 'php_phan_use_client') == 1 && l:executable is# 'phan' + let l:executable = 'phan_client' + endif + + return l:executable +endfunction + function! ale_linters#php#phan#GetCommand(buffer) abort - return 'phan -y ' - \ . ale#Var(a:buffer, 'php_phan_minimum_severity') - \ . ' %s' + if ale#Var(a:buffer, 'php_phan_use_client') == 1 + let l:args = '-l ' + \ . ' %s' + else + let l:args = '-y ' + \ . ale#Var(a:buffer, 'php_phan_minimum_severity') + \ . ' %s' + endif + + let l:executable = ale_linters#php#phan#GetExecutable(a:buffer) + + return ale#Escape(l:executable) . ' ' . l:args endfunction function! ale_linters#php#phan#Handle(buffer, lines) abort " Matches against lines like the following: - " - " /path/to/some-filename.php:18 ERRORTYPE message - let l:pattern = '^.*:\(\d\+\)\s\(\w\+\)\s\(.\+\)$' + if ale#Var(a:buffer, 'php_phan_use_client') == 1 + " Phan error: ERRORTYPE: message in /path/to/some-filename.php on line nnn + let l:pattern = '^Phan error: \(\w\+\): \(.\+\) in \(.\+\) on line \(\d\+\)$' + else + " /path/to/some-filename.php:18 ERRORTYPE message + let l:pattern = '^.*:\(\d\+\)\s\(\w\+\)\s\(.\+\)$' + endif + let l:output = [] for l:match in ale#util#GetMatches(a:lines, l:pattern) - call add(l:output, { - \ 'lnum': l:match[1] + 0, - \ 'text': l:match[3], - \ 'type': 'W', - \}) + if ale#Var(a:buffer, 'php_phan_use_client') == 1 + let l:dict = { + \ 'lnum': l:match[4] + 0, + \ 'text': l:match[2], + \ 'type': 'W', + \} + else + let l:dict = { + \ 'lnum': l:match[1] + 0, + \ 'text': l:match[3], + \ 'type': 'W', + \} + endif + + call add(l:output, l:dict) endfor return l:output @@ -30,7 +67,7 @@ endfunction call ale#linter#Define('php', { \ 'name': 'phan', -\ 'executable': 'phan', +\ 'executable_callback': 'ale_linters#php#phan#GetExecutable', \ 'command_callback': 'ale_linters#php#phan#GetCommand', \ 'callback': 'ale_linters#php#phan#Handle', \}) diff --git a/doc/ale-php.txt b/doc/ale-php.txt index 1ba34388..33796f7c 100644 --- a/doc/ale-php.txt +++ b/doc/ale-php.txt @@ -48,7 +48,7 @@ g:ale_php_langserver_use_global *g:ale_php_langserver_use_global* =============================================================================== phan *ale-php-phan* -WARNING: please do not use this linter if you have an configuration file +WARNING: please use the phan_client linter if you have an configuration file for your project because the phan will look into your entirely project and ale will display in the current buffer warnings that may belong to other file. @@ -57,8 +57,22 @@ g:ale_php_phan_minimum_severity *g:ale_php_phan_minimum_severity* Type: |Number| Default: `0` - This variable defines the minimum severity level + This variable defines the minimum severity level. +g:ale_php_phan_executable *g:ale_php_phan_executable* + *b:ale_php_phan_executable* + Type: |String| + Default: `'phan'` + + This variable sets executable used for phan or phan_client. + +g:ale_php_phan_use_client *g:ale_php_phan_use_client* + *b:ale_php_phan_use_client* + Type: |Number| + Default: `get(g:, 'ale_php_phan_use_client', 0)` + + This variable can be set to 1 to use the phan_client with phan daemon mode + instead of the phan standalone. =============================================================================== phpcbf *ale-php-phpcbf* |