diff options
author | Horacio Sanson <horacio@allm.net> | 2019-06-10 10:18:06 +0900 |
---|---|---|
committer | Horacio Sanson <horacio@allm.net> | 2019-06-12 10:53:28 +0900 |
commit | eb6a7b75164ae2a0acb87fc9a7402779dc3e3614 (patch) | |
tree | cfffe37c9c9b04f8d4001cfa3b5d1a7fe49472cd /ale_linters/java/checkstyle.vim | |
parent | 80ab12c7b645b392feb98723873d77b045a0a7e2 (diff) | |
download | ale-eb6a7b75164ae2a0acb87fc9a7402779dc3e3614.zip |
Fix checkstyle default configuration.
Checkstyle xml configuration is mandatory and not providing one causes
the tool to fail with the following error:
Must specify a config XML file.
Checkstyle itself contains a default configuration as part of its
assests named `/google_checks.xml`. Invoking checkstyle with this config
works even if such file does not exists in the file system:
checkstyle -c /google_checks.xml
This should be the default invocation to allow ALE to use checkstyle
with zero configuration.
Also when a user sets `g:ale_java_checkstyle_config` option, ALE should
use it to invoke checkstyle even such file does not exists in the
filesystem. This is because checkstyle is able to use configuration files
within JAR files defined in the CLASSPATH. The default `/google_checks.xml`
is an example of such configuration available within a JAR resource.
Diffstat (limited to 'ale_linters/java/checkstyle.vim')
-rw-r--r-- | ale_linters/java/checkstyle.vim | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/ale_linters/java/checkstyle.vim b/ale_linters/java/checkstyle.vim index ee3ca7a3..7901ff7e 100644 --- a/ale_linters/java/checkstyle.vim +++ b/ale_linters/java/checkstyle.vim @@ -2,7 +2,7 @@ " Description: checkstyle for Java files call ale#Set('java_checkstyle_executable', 'checkstyle') -call ale#Set('java_checkstyle_config', 'google_checks.xml') +call ale#Set('java_checkstyle_config', '/google_checks.xml') call ale#Set('java_checkstyle_options', '') function! ale_linters#java#checkstyle#Handle(buffer, lines) abort @@ -39,11 +39,21 @@ function! ale_linters#java#checkstyle#Handle(buffer, lines) abort return l:output endfunction +function! s:GetConfig(buffer, config) abort + if ale#path#IsAbsolute(a:config) + return a:config + endif + + let s:file = ale#path#FindNearestFile(a:buffer, a:config) + + return !empty(s:file) ? s:file : a:config +endfunction + function! ale_linters#java#checkstyle#GetCommand(buffer) abort let l:options = ale#Var(a:buffer, 'java_checkstyle_options') let l:config_option = ale#Var(a:buffer, 'java_checkstyle_config') let l:config = l:options !~# '\v(^| )-c' && !empty(l:config_option) - \ ? ale#path#FindNearestFile(a:buffer, l:config_option) + \ ? s:GetConfig(a:buffer, l:config_option) \ : '' return '%e' |