From 7086586b1776d2b5f3bf87a7f0c25595a5d7e1b0 Mon Sep 17 00:00:00 2001 From: David Sierra DiazGranados Date: Sun, 5 Nov 2017 13:53:12 -0500 Subject: [PATCH] Add executable option for phpmd linter (resolves #1076) (#1078) * Add executable option for phpmd linter (resolves #1076) * Add test for phpmd executable option --- ale_linters/php/phpmd.vim | 15 +++++++++++--- doc/ale-php.txt | 8 ++++++++ .../test_phpmd_command_callbacks.vader | 20 +++++++++++++++++++ 3 files changed, 40 insertions(+), 3 deletions(-) create mode 100644 test/command_callback/test_phpmd_command_callbacks.vader diff --git a/ale_linters/php/phpmd.vim b/ale_linters/php/phpmd.vim index e4192c70..e9450752 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 f09c95fd..455472f7 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 00000000..928b9771 --- /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(''))