diff options
author | w0rp <devw0rp@gmail.com> | 2017-11-18 18:29:12 +0000 |
---|---|---|
committer | w0rp <devw0rp@gmail.com> | 2017-11-18 18:29:12 +0000 |
commit | 7455e2e97d0244c420c344ee1c737c93379bca4f (patch) | |
tree | 8b13a304d48552c2e04bb8c742a48304cfe34c5b | |
parent | 49ccfb1a00e09f6757b6e597883c95a34d612771 (diff) | |
download | ale-7455e2e97d0244c420c344ee1c737c93379bca4f.zip |
#852 - Capture error codes for checkstyle
-rw-r--r-- | ale_linters/java/checkstyle.vim | 26 | ||||
-rw-r--r-- | test/handler/test_checkstyle_handler.vader | 11 |
2 files changed, 15 insertions, 22 deletions
diff --git a/ale_linters/java/checkstyle.vim b/ale_linters/java/checkstyle.vim index d3d48842..8155170a 100644 --- a/ale_linters/java/checkstyle.vim +++ b/ale_linters/java/checkstyle.vim @@ -2,27 +2,17 @@ " Description: checkstyle for Java files function! ale_linters#java#checkstyle#Handle(buffer, lines) abort - let l:patterns = [ - \ '\v\[(WARN|ERROR)\] .*:(\d+):(\d+): (.*)', - \ '\v\[(WARN|ERROR)\] .*:(\d+): (.*)', - \] + let l:pattern = '\v\[(WARN|ERROR)\] [a-zA-Z]?:?[^:]+:(\d+):(\d+)?:? (.*) \[(.+)\]$' let l:output = [] - for l:match in ale#util#GetMatches(a:lines, l:patterns) - let l:args = { + for l:match in ale#util#GetMatches(a:lines, l:pattern) + call add(l:output, { + \ 'type': l:match[1] is? 'WARN' ? 'W' : 'E', \ 'lnum': l:match[2] + 0, - \ 'type': l:match[1] =~? 'WARN' ? 'W' : 'E' - \ } - - let l:col = l:match[3] + 0 - if l:col > 0 - let l:args['col'] = l:col - let l:args['text'] = l:match[4] - else - let l:args['text'] = l:match[3] - endif - - call add(l:output, l:args) + \ 'col': l:match[3] + 0, + \ 'text': l:match[4], + \ 'code': l:match[5], + \}) endfor return l:output diff --git a/test/handler/test_checkstyle_handler.vader b/test/handler/test_checkstyle_handler.vader index 03844516..2f1f0f8d 100644 --- a/test/handler/test_checkstyle_handler.vader +++ b/test/handler/test_checkstyle_handler.vader @@ -9,17 +9,20 @@ Execute(The checkstyle handler should parse lines correctly): \ [ \ { \ 'lnum': 101, - \ 'text': "'method def rcurly' has incorrect indentation level 4, expected level should be 2. [Indentation]", + \ 'col': 0, + \ 'text': '''method def rcurly'' has incorrect indentation level 4, expected level should be 2.', + \ 'code': 'Indentation', \ 'type': 'W', \ }, \ { \ 'lnum': 63, \ 'col': 3, - \ 'text': "Missing a Javadoc comment. [JavadocMethod]", + \ 'text': 'Missing a Javadoc comment.', + \ 'code': 'JavadocMethod', \ 'type': 'W', \ }, \ ], \ ale_linters#java#checkstyle#Handle(666, [ - \ "[WARN] whatever:101: 'method def rcurly' has incorrect indentation level 4, expected level should be 2. [Indentation]", - \ "[WARN] whatever:63:3: Missing a Javadoc comment. [JavadocMethod]", + \ '[WARN] whatever:101: ''method def rcurly'' has incorrect indentation level 4, expected level should be 2. [Indentation]', + \ '[WARN] whatever:63:3: Missing a Javadoc comment. [JavadocMethod]', \ ]) |