summaryrefslogtreecommitdiff
path: root/ale_linters/java/checkstyle.vim
diff options
context:
space:
mode:
authorHoracio Sanson <horacio@allm.net>2019-06-10 10:18:06 +0900
committerHoracio Sanson <horacio@allm.net>2019-06-12 10:53:28 +0900
commiteb6a7b75164ae2a0acb87fc9a7402779dc3e3614 (patch)
treecfffe37c9c9b04f8d4001cfa3b5d1a7fe49472cd /ale_linters/java/checkstyle.vim
parent80ab12c7b645b392feb98723873d77b045a0a7e2 (diff)
downloadale-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.vim14
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'