diff --git a/ale_linters/java/checkstyle.vim b/ale_linters/java/checkstyle.vim index d3d4884..8155170 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 0384451..2f1f0f8 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]', \ ])