diff --git a/ale_linters/php/phpmd.vim b/ale_linters/php/phpmd.vim index e4192c7..e945075 100644 --- a/ale_linters/php/phpmd.vim +++ b/ale_linters/php/phpmd.vim @@ -1,11 +1,20 @@ -" Author: medains +" Author: medains , David Sierra " Description: phpmd for PHP files +let g:ale_php_phpmd_executable = get(g:, 'ale_php_phpmd_executable', 'phpmd') + " Set to change the ruleset let g:ale_php_phpmd_ruleset = get(g:, 'ale_php_phpmd_ruleset', 'cleancode,codesize,controversial,design,naming,unusedcode') +function! ale_linters#php#phpmd#GetExecutable(buffer) abort + return ale#Var(a:buffer, 'php_phpmd_executable') +endfunction + function! ale_linters#php#phpmd#GetCommand(buffer) abort - return 'phpmd %s text ' + let l:executable = ale_linters#php#phpmd#GetExecutable(a:buffer) + + return ale#Escape(l:executable) + \ . ' %s text ' \ . ale#Var(a:buffer, 'php_phpmd_ruleset') \ . ' --ignore-violations-on-exit %t' endfunction @@ -30,7 +39,7 @@ endfunction call ale#linter#Define('php', { \ 'name': 'phpmd', -\ 'executable': 'phpmd', +\ 'executable_callback': 'ale_linters#php#phpmd#GetExecutable', \ 'command_callback': 'ale_linters#php#phpmd#GetCommand', \ 'callback': 'ale_linters#php#phpmd#Handle', \}) diff --git a/doc/ale-php.txt b/doc/ale-php.txt index f09c95f..455472f 100644 --- a/doc/ale-php.txt +++ b/doc/ale-php.txt @@ -121,6 +121,14 @@ g:ale_php_phpcs_use_global *g:ale_php_phpcs_use_global* =============================================================================== phpmd *ale-php-phpmd* +g:ale_php_phpmd_executable *g:ale_php_phpmd_executable* + *b:ale_php_phpmd_executable* + Type: |String| + Default: `'phpmd'` + + This variable sets executable used for phpmd. + + g:ale_php_phpmd_ruleset *g:ale_php_phpmd_ruleset* *b:ale_php_phpmd_ruleset* Type: |String| diff --git a/test/command_callback/test_phpmd_command_callbacks.vader b/test/command_callback/test_phpmd_command_callbacks.vader new file mode 100644 index 0000000..928b977 --- /dev/null +++ b/test/command_callback/test_phpmd_command_callbacks.vader @@ -0,0 +1,20 @@ +Before: + Save g:ale_php_phpmd_executable + + unlet! g:ale_php_phpmd_executable + + runtime ale_linters/php/phpmd.vim + +After: + Restore + + call ale#linter#Reset() + +Execute(Custom executables should be used for the executable and command): + let g:ale_php_phpmd_executable = 'phpmd_test' + + AssertEqual 'phpmd_test', ale_linters#php#phpmd#GetExecutable(bufnr('')) + AssertEqual + \ ale#Escape('phpmd_test') + \ . ' %s text cleancode,codesize,controversial,design,naming,unusedcode --ignore-violations-on-exit %t', + \ ale_linters#php#phpmd#GetCommand(bufnr(''))