diff --git a/ale_linters/sh/shellcheck.vim b/ale_linters/sh/shellcheck.vim index 3e60ad31..27c74531 100644 --- a/ale_linters/sh/shellcheck.vim +++ b/ale_linters/sh/shellcheck.vim @@ -71,7 +71,7 @@ function! ale_linters#sh#shellcheck#GetCommand(buffer, version_output) abort endfunction function! ale_linters#sh#shellcheck#Handle(buffer, lines) abort - let l:pattern = '\v^([a-zA-Z]?:?[^:]+):(\d+):(\d+)?:? ([^:]+): (.+)$' + let l:pattern = '\v^([a-zA-Z]?:?[^:]+):(\d+):(\d+)?:? ([^:]+): (.+) \[([^\]]+)\]$' let l:output = [] for l:match in ale#util#GetMatches(a:lines, l:pattern) @@ -87,6 +87,7 @@ function! ale_linters#sh#shellcheck#Handle(buffer, lines) abort \ 'lnum': str2nr(l:match[2]), \ 'type': l:type, \ 'text': l:match[5], + \ 'code': l:match[6], \} if !empty(l:match[3]) diff --git a/test/handler/test_shellcheck_handler.vader b/test/handler/test_shellcheck_handler.vader index 5a7607e8..bfb73ffa 100644 --- a/test/handler/test_shellcheck_handler.vader +++ b/test/handler/test_shellcheck_handler.vader @@ -11,13 +11,15 @@ Execute(The shellcheck handler should handle basic errors or warnings): \ 'lnum': 2, \ 'col': 1, \ 'type': 'W', - \ 'text': 'In POSIX sh, ''let'' is not supported. [SC2039]', + \ 'text': 'In POSIX sh, ''let'' is not supported.', + \ 'code': 'SC2039', \ }, \ { \ 'lnum': 2, \ 'col': 3, \ 'type': 'E', - \ 'text': 'Don''t put spaces around the = in assignments. [SC1068]', + \ 'text': 'Don''t put spaces around the = in assignments.', + \ 'code': 'SC1068', \ }, \ ], \ ale_linters#sh#shellcheck#Handle(bufnr(''), [ @@ -32,7 +34,8 @@ Execute(The shellcheck handler should handle notes): \ 'lnum': 3, \ 'col': 3, \ 'type': 'I', - \ 'text': 'Double quote to prevent globbing and word splitting. [SC2086]', + \ 'text': 'Double quote to prevent globbing and word splitting.', + \ 'code': 'SC2086', \ }, \ ], \ ale_linters#sh#shellcheck#Handle(bufnr(''), [