Add a function for getting matches, and use it to simplify a lot of code
This commit is contained in:
parent
e237add9fd
commit
bdad25eefd
53 changed files with 224 additions and 411 deletions
|
@ -13,21 +13,11 @@ function! ale_linters#asm#gcc#Handle(buffer, lines) abort
|
||||||
let l:pattern = '^.\+:\(\d\+\): \([^:]\+\): \(.\+\)$'
|
let l:pattern = '^.\+:\(\d\+\): \([^:]\+\): \(.\+\)$'
|
||||||
let l:output = []
|
let l:output = []
|
||||||
|
|
||||||
for l:line in a:lines
|
for l:match in ale#util#GetMatches(a:lines, l:pattern)
|
||||||
let l:match = matchlist(l:line, l:pattern)
|
|
||||||
|
|
||||||
if len(l:match) == 0
|
|
||||||
continue
|
|
||||||
endif
|
|
||||||
|
|
||||||
call add(l:output, {
|
call add(l:output, {
|
||||||
\ 'bufnr': a:buffer,
|
|
||||||
\ 'lnum': l:match[1] + 0,
|
\ 'lnum': l:match[1] + 0,
|
||||||
\ 'vcol': 0,
|
|
||||||
\ 'col': 0,
|
|
||||||
\ 'text': l:match[3],
|
|
||||||
\ 'type': l:match[2] =~? 'error' ? 'E' : 'W',
|
\ 'type': l:match[2] =~? 'error' ? 'E' : 'W',
|
||||||
\ 'nr': -1,
|
\ 'text': l:match[3],
|
||||||
\})
|
\})
|
||||||
endfor
|
endfor
|
||||||
|
|
||||||
|
|
|
@ -13,19 +13,11 @@ function! ale_linters#chef#foodcritic#Handle(buffer, lines) abort
|
||||||
let l:pattern = '^\(.\+:\s.\+\):\s\(.\+\):\(\d\+\)$'
|
let l:pattern = '^\(.\+:\s.\+\):\s\(.\+\):\(\d\+\)$'
|
||||||
let l:output = []
|
let l:output = []
|
||||||
|
|
||||||
for l:line in a:lines
|
for l:match in ale#util#GetMatches(a:lines, l:pattern)
|
||||||
let l:match = matchlist(l:line, l:pattern)
|
|
||||||
|
|
||||||
if len(l:match) == 0
|
|
||||||
continue
|
|
||||||
endif
|
|
||||||
|
|
||||||
let l:text = l:match[1]
|
let l:text = l:match[1]
|
||||||
|
|
||||||
call add(l:output, {
|
call add(l:output, {
|
||||||
\ 'bufnr': a:buffer,
|
|
||||||
\ 'lnum': l:match[3] + 0,
|
\ 'lnum': l:match[3] + 0,
|
||||||
\ 'col': 0,
|
|
||||||
\ 'text': l:text,
|
\ 'text': l:text,
|
||||||
\ 'type': 'W',
|
\ 'type': 'W',
|
||||||
\})
|
\})
|
||||||
|
|
|
@ -24,22 +24,11 @@ function! ale_linters#coffee#coffeelint#Handle(buffer, lines) abort
|
||||||
let l:pattern = 'stdin,\(\d\+\),\(\d*\),\(.\{-1,}\),\(.\+\)'
|
let l:pattern = 'stdin,\(\d\+\),\(\d*\),\(.\{-1,}\),\(.\+\)'
|
||||||
let l:output = []
|
let l:output = []
|
||||||
|
|
||||||
for l:line in a:lines
|
for l:match in ale#util#GetMatches(a:lines, l:pattern)
|
||||||
let l:match = matchlist(l:line, l:pattern)
|
|
||||||
|
|
||||||
if len(l:match) == 0
|
|
||||||
continue
|
|
||||||
endif
|
|
||||||
|
|
||||||
let l:line = l:match[1] + 0
|
|
||||||
let l:type = l:match[3] ==# 'error' ? 'E' : 'W'
|
|
||||||
let l:text = l:match[4]
|
|
||||||
|
|
||||||
call add(l:output, {
|
call add(l:output, {
|
||||||
\ 'bufnr': a:buffer,
|
\ 'lnum': str2nr(l:match[1]),
|
||||||
\ 'lnum': l:line,
|
\ 'type': l:match[3] ==# 'error' ? 'E' : 'W',
|
||||||
\ 'text': l:text,
|
\ 'text': l:match[4],
|
||||||
\ 'type': l:type,
|
|
||||||
\})
|
\})
|
||||||
endfor
|
endfor
|
||||||
|
|
||||||
|
|
|
@ -11,15 +11,8 @@ function! ale_linters#cs#mcs#Handle(buffer, lines) abort
|
||||||
let l:pattern = '^.\+.cs(\(\d\+\),\(\d\+\)): \(.\+\): \(.\+\)'
|
let l:pattern = '^.\+.cs(\(\d\+\),\(\d\+\)): \(.\+\): \(.\+\)'
|
||||||
let l:output = []
|
let l:output = []
|
||||||
|
|
||||||
for l:line in a:lines
|
for l:match in ale#util#GetMatches(a:lines, l:pattern)
|
||||||
let l:match = matchlist(l:line, l:pattern)
|
|
||||||
|
|
||||||
if len(l:match) == 0
|
|
||||||
continue
|
|
||||||
endif
|
|
||||||
|
|
||||||
call add(l:output, {
|
call add(l:output, {
|
||||||
\ 'bufnr': a:buffer,
|
|
||||||
\ 'lnum': l:match[1] + 0,
|
\ 'lnum': l:match[1] + 0,
|
||||||
\ 'col': l:match[2] + 0,
|
\ 'col': l:match[2] + 0,
|
||||||
\ 'text': l:match[3] . ': ' . l:match[4],
|
\ 'text': l:match[3] . ': ' . l:match[4],
|
||||||
|
|
|
@ -56,24 +56,12 @@ function! ale_linters#d#dmd#Handle(buffer, lines) abort
|
||||||
let l:pattern = '^[^(]\+(\([0-9]\+\)\,\?\([0-9]*\)): \([^:]\+\): \(.\+\)'
|
let l:pattern = '^[^(]\+(\([0-9]\+\)\,\?\([0-9]*\)): \([^:]\+\): \(.\+\)'
|
||||||
let l:output = []
|
let l:output = []
|
||||||
|
|
||||||
for l:line in a:lines
|
for l:match in ale#util#GetMatches(a:lines, l:pattern)
|
||||||
let l:match = matchlist(l:line, l:pattern)
|
|
||||||
|
|
||||||
if len(l:match) == 0
|
|
||||||
break
|
|
||||||
endif
|
|
||||||
|
|
||||||
let l:line = l:match[1] + 0
|
|
||||||
let l:column = l:match[2] + 0
|
|
||||||
let l:type = l:match[3]
|
|
||||||
let l:text = l:match[4]
|
|
||||||
|
|
||||||
call add(l:output, {
|
call add(l:output, {
|
||||||
\ 'bufnr': bufnr('%'),
|
\ 'lnum': l:match[1],
|
||||||
\ 'lnum': l:line,
|
\ 'col': l:match[2],
|
||||||
\ 'col': l:column,
|
\ 'type': l:match[3] ==# 'Warning' ? 'W' : 'E',
|
||||||
\ 'text': l:text,
|
\ 'text': l:match[4],
|
||||||
\ 'type': l:type ==# 'Warning' ? 'W' : 'E',
|
|
||||||
\})
|
\})
|
||||||
endfor
|
endfor
|
||||||
|
|
||||||
|
|
|
@ -7,13 +7,7 @@ function! ale_linters#dockerfile#hadolint#Handle(buffer, lines) abort
|
||||||
let l:pattern = '\v^/dev/stdin:?(\d+)? (\S+) (.+)$'
|
let l:pattern = '\v^/dev/stdin:?(\d+)? (\S+) (.+)$'
|
||||||
let l:output = []
|
let l:output = []
|
||||||
|
|
||||||
for l:line in a:lines
|
for l:match in ale#util#GetMatches(a:lines, l:pattern)
|
||||||
let l:match = matchlist(l:line, l:pattern)
|
|
||||||
|
|
||||||
if len(l:match) == 0
|
|
||||||
continue
|
|
||||||
endif
|
|
||||||
|
|
||||||
let l:lnum = 0
|
let l:lnum = 0
|
||||||
|
|
||||||
if l:match[1] !=# ''
|
if l:match[1] !=# ''
|
||||||
|
|
|
@ -7,13 +7,7 @@ function! ale_linters#elixir#credo#Handle(buffer, lines) abort
|
||||||
let l:pattern = '\v:(\d+):?(\d+)?: (.): (.+)$'
|
let l:pattern = '\v:(\d+):?(\d+)?: (.): (.+)$'
|
||||||
let l:output = []
|
let l:output = []
|
||||||
|
|
||||||
for l:line in a:lines
|
for l:match in ale#util#GetMatches(a:lines, l:pattern)
|
||||||
let l:match = matchlist(l:line, l:pattern)
|
|
||||||
|
|
||||||
if len(l:match) == 0
|
|
||||||
continue
|
|
||||||
endif
|
|
||||||
|
|
||||||
let l:type = l:match[3]
|
let l:type = l:match[3]
|
||||||
let l:text = l:match[4]
|
let l:text = l:match[4]
|
||||||
|
|
||||||
|
|
|
@ -7,13 +7,7 @@ function! ale_linters#elixir#dogma#Handle(buffer, lines) abort
|
||||||
let l:pattern = '\v:(\d+):?(\d+)?: (.): (.+)$'
|
let l:pattern = '\v:(\d+):?(\d+)?: (.): (.+)$'
|
||||||
let l:output = []
|
let l:output = []
|
||||||
|
|
||||||
for l:line in a:lines
|
for l:match in ale#util#GetMatches(a:lines, l:pattern)
|
||||||
let l:match = matchlist(l:line, l:pattern)
|
|
||||||
|
|
||||||
if len(l:match) == 0
|
|
||||||
continue
|
|
||||||
endif
|
|
||||||
|
|
||||||
let l:type = l:match[3]
|
let l:type = l:match[3]
|
||||||
let l:text = l:match[4]
|
let l:text = l:match[4]
|
||||||
|
|
||||||
|
|
|
@ -7,15 +7,8 @@ function! ale_linters#haml#hamllint#Handle(buffer, lines) abort
|
||||||
let l:pattern = '\v^.*:(\d+) \[([EW])\] (.+)$'
|
let l:pattern = '\v^.*:(\d+) \[([EW])\] (.+)$'
|
||||||
let l:output = []
|
let l:output = []
|
||||||
|
|
||||||
for l:line in a:lines
|
for l:match in ale#util#GetMatches(a:lines, l:pattern)
|
||||||
let l:match = matchlist(l:line, l:pattern)
|
|
||||||
|
|
||||||
if len(l:match) == 0
|
|
||||||
continue
|
|
||||||
endif
|
|
||||||
|
|
||||||
call add(l:output, {
|
call add(l:output, {
|
||||||
\ 'bufnr': a:buffer,
|
|
||||||
\ 'lnum': l:match[1] + 0,
|
\ 'lnum': l:match[1] + 0,
|
||||||
\ 'type': l:match[2],
|
\ 'type': l:match[2],
|
||||||
\ 'text': l:match[3]
|
\ 'text': l:match[3]
|
||||||
|
|
|
@ -43,20 +43,13 @@ function! ale_linters#html#tidy#Handle(buffer, lines) abort
|
||||||
let l:pattern = '^line \(\d\+\) column \(\d\+\) - \(Warning\|Error\): \(.\+\)$'
|
let l:pattern = '^line \(\d\+\) column \(\d\+\) - \(Warning\|Error\): \(.\+\)$'
|
||||||
let l:output = []
|
let l:output = []
|
||||||
|
|
||||||
for l:line in a:lines
|
for l:match in ale#util#GetMatches(a:lines, l:pattern)
|
||||||
let l:match = matchlist(l:line, l:pattern)
|
|
||||||
|
|
||||||
if len(l:match) == 0
|
|
||||||
continue
|
|
||||||
endif
|
|
||||||
|
|
||||||
let l:line = l:match[1] + 0
|
let l:line = l:match[1] + 0
|
||||||
let l:col = l:match[2] + 0
|
let l:col = l:match[2] + 0
|
||||||
let l:type = l:match[3] ==# 'Error' ? 'E' : 'W'
|
let l:type = l:match[3] ==# 'Error' ? 'E' : 'W'
|
||||||
let l:text = l:match[4]
|
let l:text = l:match[4]
|
||||||
|
|
||||||
call add(l:output, {
|
call add(l:output, {
|
||||||
\ 'bufnr': a:buffer,
|
|
||||||
\ 'lnum': l:line,
|
\ 'lnum': l:line,
|
||||||
\ 'col': l:col,
|
\ 'col': l:col,
|
||||||
\ 'text': l:text,
|
\ 'text': l:text,
|
||||||
|
|
|
@ -28,15 +28,8 @@ function! ale_linters#java#javac#Handle(buffer, lines) abort
|
||||||
let l:pattern = '^.*\:\(\d\+\):\ \(.*\):\(.*\)$'
|
let l:pattern = '^.*\:\(\d\+\):\ \(.*\):\(.*\)$'
|
||||||
let l:output = []
|
let l:output = []
|
||||||
|
|
||||||
for l:line in a:lines
|
for l:match in ale#util#GetMatches(a:lines, l:pattern)
|
||||||
let l:match = matchlist(l:line, l:pattern)
|
|
||||||
|
|
||||||
if len(l:match) == 0
|
|
||||||
continue
|
|
||||||
endif
|
|
||||||
|
|
||||||
call add(l:output, {
|
call add(l:output, {
|
||||||
\ 'bufnr': a:buffer,
|
|
||||||
\ 'lnum': l:match[1] + 0,
|
\ 'lnum': l:match[1] + 0,
|
||||||
\ 'text': l:match[2] . ':' . l:match[3],
|
\ 'text': l:match[2] . ':' . l:match[3],
|
||||||
\ 'type': l:match[2] ==# 'error' ? 'E' : 'W',
|
\ 'type': l:match[2] ==# 'error' ? 'E' : 'W',
|
||||||
|
|
|
@ -66,18 +66,7 @@ function! ale_linters#javascript#eslint#Handle(buffer, lines) abort
|
||||||
let l:parsing_pattern = '^.*:\(\d\+\):\(\d\+\): \(.\+\)$'
|
let l:parsing_pattern = '^.*:\(\d\+\):\(\d\+\): \(.\+\)$'
|
||||||
let l:output = []
|
let l:output = []
|
||||||
|
|
||||||
for l:line in a:lines
|
for l:match in ale#util#GetMatches(a:lines, [l:pattern, l:parsing_pattern])
|
||||||
let l:match = matchlist(l:line, l:pattern)
|
|
||||||
|
|
||||||
if len(l:match) == 0
|
|
||||||
" Try the parsing pattern for parsing errors.
|
|
||||||
let l:match = matchlist(l:line, l:parsing_pattern)
|
|
||||||
endif
|
|
||||||
|
|
||||||
if len(l:match) == 0
|
|
||||||
continue
|
|
||||||
endif
|
|
||||||
|
|
||||||
let l:type = 'Error'
|
let l:type = 'Error'
|
||||||
let l:text = l:match[3]
|
let l:text = l:match[3]
|
||||||
|
|
||||||
|
|
|
@ -37,13 +37,7 @@ function! ale_linters#javascript#standard#Handle(buffer, lines) abort
|
||||||
let l:pattern = '^.*:\(\d\+\):\(\d\+\): \(.\+\)$'
|
let l:pattern = '^.*:\(\d\+\):\(\d\+\): \(.\+\)$'
|
||||||
let l:output = []
|
let l:output = []
|
||||||
|
|
||||||
for l:line in a:lines
|
for l:match in ale#util#GetMatches(a:lines, l:pattern)
|
||||||
let l:match = matchlist(l:line, l:pattern)
|
|
||||||
|
|
||||||
if len(l:match) == 0
|
|
||||||
continue
|
|
||||||
endif
|
|
||||||
|
|
||||||
let l:type = 'Error'
|
let l:type = 'Error'
|
||||||
let l:text = l:match[3]
|
let l:text = l:match[3]
|
||||||
|
|
||||||
|
|
|
@ -7,19 +7,11 @@ function! ale_linters#json#jsonlint#Handle(buffer, lines) abort
|
||||||
let l:pattern = '^line \(\d\+\), col \(\d*\), \(.\+\)$'
|
let l:pattern = '^line \(\d\+\), col \(\d*\), \(.\+\)$'
|
||||||
let l:output = []
|
let l:output = []
|
||||||
|
|
||||||
for l:line in a:lines
|
for l:match in ale#util#GetMatches(a:lines, l:pattern)
|
||||||
let l:match = matchlist(l:line, l:pattern)
|
|
||||||
|
|
||||||
if len(l:match) == 0
|
|
||||||
continue
|
|
||||||
endif
|
|
||||||
|
|
||||||
call add(l:output, {
|
call add(l:output, {
|
||||||
\ 'bufnr': a:buffer,
|
|
||||||
\ 'lnum': l:match[1] + 0,
|
\ 'lnum': l:match[1] + 0,
|
||||||
\ 'col': l:match[2] + 0,
|
\ 'col': l:match[2] + 0,
|
||||||
\ 'text': l:match[3],
|
\ 'text': l:match[3],
|
||||||
\ 'type': 'E',
|
|
||||||
\})
|
\})
|
||||||
endfor
|
endfor
|
||||||
|
|
||||||
|
|
|
@ -21,15 +21,8 @@ function! ale_linters#lua#luacheck#Handle(buffer, lines) abort
|
||||||
let l:pattern = '^.*:\(\d\+\):\(\d\+\): (\([WE]\)\d\+) \(.\+\)$'
|
let l:pattern = '^.*:\(\d\+\):\(\d\+\): (\([WE]\)\d\+) \(.\+\)$'
|
||||||
let l:output = []
|
let l:output = []
|
||||||
|
|
||||||
for l:line in a:lines
|
for l:match in ale#util#GetMatches(a:lines, l:pattern)
|
||||||
let l:match = matchlist(l:line, l:pattern)
|
|
||||||
|
|
||||||
if len(l:match) == 0
|
|
||||||
continue
|
|
||||||
endif
|
|
||||||
|
|
||||||
call add(l:output, {
|
call add(l:output, {
|
||||||
\ 'bufnr': a:buffer,
|
|
||||||
\ 'lnum': l:match[1] + 0,
|
\ 'lnum': l:match[1] + 0,
|
||||||
\ 'col': l:match[2] + 0,
|
\ 'col': l:match[2] + 0,
|
||||||
\ 'text': l:match[4],
|
\ 'text': l:match[4],
|
||||||
|
|
|
@ -6,17 +6,9 @@ function! ale_linters#markdown#mdl#Handle(buffer, lines) abort
|
||||||
let l:pattern = ':\(\d*\): \(.*\)$'
|
let l:pattern = ':\(\d*\): \(.*\)$'
|
||||||
let l:output = []
|
let l:output = []
|
||||||
|
|
||||||
for l:line in a:lines
|
for l:match in ale#util#GetMatches(a:lines, l:pattern)
|
||||||
let l:match = matchlist(l:line, l:pattern)
|
|
||||||
|
|
||||||
if len(l:match) == 0
|
|
||||||
continue
|
|
||||||
endif
|
|
||||||
|
|
||||||
call add(l:output, {
|
call add(l:output, {
|
||||||
\ 'bufnr': a:buffer,
|
|
||||||
\ 'lnum': l:match[1] + 0,
|
\ 'lnum': l:match[1] + 0,
|
||||||
\ 'col': 0,
|
|
||||||
\ 'text': l:match[2],
|
\ 'text': l:match[2],
|
||||||
\ 'type': 'W',
|
\ 'type': 'W',
|
||||||
\})
|
\})
|
||||||
|
|
|
@ -22,13 +22,7 @@ function! ale_linters#matlab#mlint#Handle(buffer, lines) abort
|
||||||
let l:pattern = '^L \(\d\+\) (C \([0-9-]\+\)): \([A-Z]\+\): \(.\+\)$'
|
let l:pattern = '^L \(\d\+\) (C \([0-9-]\+\)): \([A-Z]\+\): \(.\+\)$'
|
||||||
let l:output = []
|
let l:output = []
|
||||||
|
|
||||||
for l:line in a:lines
|
for l:match in ale#util#GetMatches(a:lines, l:pattern)
|
||||||
let l:match = matchlist(l:line, l:pattern)
|
|
||||||
|
|
||||||
if len(l:match) == 0
|
|
||||||
continue
|
|
||||||
endif
|
|
||||||
|
|
||||||
let l:lnum = l:match[1] + 0
|
let l:lnum = l:match[1] + 0
|
||||||
let l:col = l:match[2] + 0
|
let l:col = l:match[2] + 0
|
||||||
let l:code = l:match[3]
|
let l:code = l:match[3]
|
||||||
|
|
|
@ -6,13 +6,7 @@ function! ale_linters#nim#nimcheck#Handle(buffer, lines) abort
|
||||||
let l:pattern = '^\(.\+\.nim\)(\(\d\+\), \(\d\+\)) \(.\+\)'
|
let l:pattern = '^\(.\+\.nim\)(\(\d\+\), \(\d\+\)) \(.\+\)'
|
||||||
let l:output = []
|
let l:output = []
|
||||||
|
|
||||||
for l:line in a:lines
|
for l:match in ale#util#GetMatches(a:lines, l:pattern)
|
||||||
let l:match = matchlist(l:line, l:pattern)
|
|
||||||
|
|
||||||
if len(l:match) == 0
|
|
||||||
continue
|
|
||||||
endif
|
|
||||||
|
|
||||||
" Only show errors of the current buffer
|
" Only show errors of the current buffer
|
||||||
" NOTE: Checking filename only is OK because nim enforces unique
|
" NOTE: Checking filename only is OK because nim enforces unique
|
||||||
" module names.
|
" module names.
|
||||||
|
|
|
@ -5,15 +5,8 @@ function! ale_linters#nix#nix#Handle(buffer, lines) abort
|
||||||
let l:pattern = '^\(.\+\): \(.\+\), at .*:\(\d\+\):\(\d\+\)$'
|
let l:pattern = '^\(.\+\): \(.\+\), at .*:\(\d\+\):\(\d\+\)$'
|
||||||
let l:output = []
|
let l:output = []
|
||||||
|
|
||||||
for l:line in a:lines
|
for l:match in ale#util#GetMatches(a:lines, l:pattern)
|
||||||
let l:match = matchlist(l:line, l:pattern)
|
|
||||||
|
|
||||||
if len(l:match) == 0
|
|
||||||
continue
|
|
||||||
endif
|
|
||||||
|
|
||||||
call add(l:output, {
|
call add(l:output, {
|
||||||
\ 'bufnr': a:buffer,
|
|
||||||
\ 'lnum': l:match[3] + 0,
|
\ 'lnum': l:match[3] + 0,
|
||||||
\ 'col': l:match[4] + 0,
|
\ 'col': l:match[4] + 0,
|
||||||
\ 'text': l:match[1] . ': ' . l:match[2],
|
\ 'text': l:match[1] . ': ' . l:match[2],
|
||||||
|
|
|
@ -21,19 +21,12 @@ function! ale_linters#perl#perl#Handle(buffer, lines) abort
|
||||||
let l:pattern = '\(.\+\) at \(.\+\) line \(\d\+\)'
|
let l:pattern = '\(.\+\) at \(.\+\) line \(\d\+\)'
|
||||||
let l:output = []
|
let l:output = []
|
||||||
|
|
||||||
for l:line in a:lines
|
for l:match in ale#util#GetMatches(a:lines, l:pattern)
|
||||||
let l:match = matchlist(l:line, l:pattern)
|
|
||||||
|
|
||||||
if len(l:match) == 0
|
|
||||||
continue
|
|
||||||
endif
|
|
||||||
|
|
||||||
let l:line = l:match[3]
|
let l:line = l:match[3]
|
||||||
let l:text = l:match[1]
|
let l:text = l:match[1]
|
||||||
let l:type = 'E'
|
let l:type = 'E'
|
||||||
|
|
||||||
call add(l:output, {
|
call add(l:output, {
|
||||||
\ 'bufnr': a:buffer,
|
|
||||||
\ 'lnum': l:line,
|
\ 'lnum': l:line,
|
||||||
\ 'text': l:text,
|
\ 'text': l:text,
|
||||||
\ 'type': l:type,
|
\ 'type': l:type,
|
||||||
|
|
|
@ -5,22 +5,10 @@ function! ale_linters#perl#perlcritic#Handle(buffer, lines) abort
|
||||||
let l:pattern = '\(.\+\) at \(.\+\) line \(\d\+\)'
|
let l:pattern = '\(.\+\) at \(.\+\) line \(\d\+\)'
|
||||||
let l:output = []
|
let l:output = []
|
||||||
|
|
||||||
for l:line in a:lines
|
for l:match in ale#util#GetMatches(a:lines, l:pattern)
|
||||||
let l:match = matchlist(l:line, l:pattern)
|
|
||||||
|
|
||||||
if len(l:match) == 0
|
|
||||||
continue
|
|
||||||
endif
|
|
||||||
|
|
||||||
let l:line = l:match[3]
|
|
||||||
let l:text = l:match[1]
|
|
||||||
let l:type = 'E'
|
|
||||||
|
|
||||||
call add(l:output, {
|
call add(l:output, {
|
||||||
\ 'bufnr': a:buffer,
|
\ 'text': l:match[1],
|
||||||
\ 'lnum': l:line,
|
\ 'lnum': l:match[3],
|
||||||
\ 'text': l:text,
|
|
||||||
\ 'type': l:type,
|
|
||||||
\})
|
\})
|
||||||
endfor
|
endfor
|
||||||
|
|
||||||
|
|
|
@ -5,23 +5,15 @@ function! ale_linters#php#hack#Handle(buffer, lines) abort
|
||||||
let l:pattern = '^\(.*\):\(\d\+\):\(\d\+\),\(\d\+\): \(.\+])\)$'
|
let l:pattern = '^\(.*\):\(\d\+\):\(\d\+\),\(\d\+\): \(.\+])\)$'
|
||||||
let l:output = []
|
let l:output = []
|
||||||
|
|
||||||
for l:line in a:lines
|
for l:match in ale#util#GetMatches(a:lines, l:pattern)
|
||||||
let l:match = matchlist(l:line, l:pattern)
|
|
||||||
|
|
||||||
if len(l:match) == 0
|
|
||||||
continue
|
|
||||||
endif
|
|
||||||
|
|
||||||
if a:buffer != bufnr(l:match[1])
|
if a:buffer != bufnr(l:match[1])
|
||||||
continue
|
continue
|
||||||
endif
|
endif
|
||||||
|
|
||||||
call add(l:output, {
|
call add(l:output, {
|
||||||
\ 'bufnr': a:buffer,
|
|
||||||
\ 'lnum': l:match[2] + 0,
|
\ 'lnum': l:match[2] + 0,
|
||||||
\ 'col': l:match[3] + 0,
|
\ 'col': l:match[3] + 0,
|
||||||
\ 'text': l:match[5],
|
\ 'text': l:match[5],
|
||||||
\ 'type': 'E',
|
|
||||||
\})
|
\})
|
||||||
endfor
|
endfor
|
||||||
|
|
||||||
|
|
|
@ -9,19 +9,11 @@ function! ale_linters#php#php#Handle(buffer, lines) abort
|
||||||
|
|
||||||
let l:output = []
|
let l:output = []
|
||||||
|
|
||||||
for l:line in a:lines
|
for l:match in ale#util#GetMatches(a:lines, l:pattern)
|
||||||
let l:match = matchlist(l:line, l:pattern)
|
|
||||||
|
|
||||||
if len(l:match) == 0
|
|
||||||
continue
|
|
||||||
endif
|
|
||||||
|
|
||||||
call add(l:output, {
|
call add(l:output, {
|
||||||
\ 'bufnr': a:buffer,
|
|
||||||
\ 'lnum': l:match[3] + 0,
|
\ 'lnum': l:match[3] + 0,
|
||||||
\ 'col': empty(l:match[2]) ? 0 : stridx(getline(l:match[3]), l:match[2]) + 1,
|
\ 'col': empty(l:match[2]) ? 0 : stridx(getline(l:match[3]), l:match[2]) + 1,
|
||||||
\ 'text': l:match[1],
|
\ 'text': l:match[1],
|
||||||
\ 'type': 'E',
|
|
||||||
\})
|
\})
|
||||||
endfor
|
endfor
|
||||||
|
|
||||||
|
|
|
@ -19,18 +19,11 @@ function! ale_linters#php#phpcs#Handle(buffer, lines) abort
|
||||||
let l:pattern = '^.*:\(\d\+\):\(\d\+\): \(.\+\) - \(.\+\) \(\(.\+\)\)$'
|
let l:pattern = '^.*:\(\d\+\):\(\d\+\): \(.\+\) - \(.\+\) \(\(.\+\)\)$'
|
||||||
let l:output = []
|
let l:output = []
|
||||||
|
|
||||||
for l:line in a:lines
|
for l:match in ale#util#GetMatches(a:lines, l:pattern)
|
||||||
let l:match = matchlist(l:line, l:pattern)
|
|
||||||
|
|
||||||
if len(l:match) == 0
|
|
||||||
continue
|
|
||||||
endif
|
|
||||||
|
|
||||||
let l:text = l:match[4]
|
let l:text = l:match[4]
|
||||||
let l:type = l:match[3]
|
let l:type = l:match[3]
|
||||||
|
|
||||||
call add(l:output, {
|
call add(l:output, {
|
||||||
\ 'bufnr': a:buffer,
|
|
||||||
\ 'lnum': l:match[1] + 0,
|
\ 'lnum': l:match[1] + 0,
|
||||||
\ 'col': l:match[2] + 0,
|
\ 'col': l:match[2] + 0,
|
||||||
\ 'text': l:text,
|
\ 'text': l:text,
|
||||||
|
|
|
@ -17,17 +17,9 @@ function! ale_linters#php#phpmd#Handle(buffer, lines) abort
|
||||||
let l:pattern = '^.*:\(\d\+\)\t\(.\+\)$'
|
let l:pattern = '^.*:\(\d\+\)\t\(.\+\)$'
|
||||||
let l:output = []
|
let l:output = []
|
||||||
|
|
||||||
for l:line in a:lines
|
for l:match in ale#util#GetMatches(a:lines, l:pattern)
|
||||||
let l:match = matchlist(l:line, l:pattern)
|
|
||||||
|
|
||||||
if len(l:match) == 0
|
|
||||||
continue
|
|
||||||
endif
|
|
||||||
|
|
||||||
call add(l:output, {
|
call add(l:output, {
|
||||||
\ 'bufnr': a:buffer,
|
|
||||||
\ 'lnum': l:match[1] + 0,
|
\ 'lnum': l:match[1] + 0,
|
||||||
\ 'col': 0,
|
|
||||||
\ 'text': l:match[2],
|
\ 'text': l:match[2],
|
||||||
\ 'type': 'W',
|
\ 'type': 'W',
|
||||||
\})
|
\})
|
||||||
|
|
|
@ -7,19 +7,11 @@ function! ale_linters#puppet#puppet#Handle(buffer, lines) abort
|
||||||
let l:pattern = '^Error: .*: \(.\+\) at .\+:\(\d\+\):\(\d\+\)$'
|
let l:pattern = '^Error: .*: \(.\+\) at .\+:\(\d\+\):\(\d\+\)$'
|
||||||
let l:output = []
|
let l:output = []
|
||||||
|
|
||||||
for l:line in a:lines
|
for l:match in ale#util#GetMatches(a:lines, l:pattern)
|
||||||
let l:match = matchlist(l:line, l:pattern)
|
|
||||||
|
|
||||||
if len(l:match) == 0
|
|
||||||
continue
|
|
||||||
endif
|
|
||||||
|
|
||||||
call add(l:output, {
|
call add(l:output, {
|
||||||
\ 'bufnr': a:buffer,
|
|
||||||
\ 'lnum': l:match[2] + 0,
|
\ 'lnum': l:match[2] + 0,
|
||||||
\ 'col': l:match[3] + 0,
|
\ 'col': l:match[3] + 0,
|
||||||
\ 'text': l:match[1],
|
\ 'text': l:match[1],
|
||||||
\ 'type': 'E',
|
|
||||||
\})
|
\})
|
||||||
endfor
|
endfor
|
||||||
|
|
||||||
|
|
|
@ -28,13 +28,7 @@ function! ale_linters#python#mypy#Handle(buffer, lines) abort
|
||||||
let l:pattern = '^' . s:path_pattern . ':\(\d\+\):\?\(\d\+\)\?: \([^:]\+\): \(.\+\)$'
|
let l:pattern = '^' . s:path_pattern . ':\(\d\+\):\?\(\d\+\)\?: \([^:]\+\): \(.\+\)$'
|
||||||
let l:output = []
|
let l:output = []
|
||||||
|
|
||||||
for l:line in a:lines
|
for l:match in ale#util#GetMatches(a:lines, l:pattern)
|
||||||
let l:match = matchlist(l:line, l:pattern)
|
|
||||||
|
|
||||||
if len(l:match) == 0
|
|
||||||
continue
|
|
||||||
endif
|
|
||||||
|
|
||||||
if l:match[4] =~# 'Stub files are from'
|
if l:match[4] =~# 'Stub files are from'
|
||||||
" The lines telling us where to get stub files from make it so
|
" The lines telling us where to get stub files from make it so
|
||||||
" we can't read the actual errors, so exclude them.
|
" we can't read the actual errors, so exclude them.
|
||||||
|
@ -42,7 +36,6 @@ function! ale_linters#python#mypy#Handle(buffer, lines) abort
|
||||||
endif
|
endif
|
||||||
|
|
||||||
call add(l:output, {
|
call add(l:output, {
|
||||||
\ 'bufnr': a:buffer,
|
|
||||||
\ 'lnum': l:match[1] + 0,
|
\ 'lnum': l:match[1] + 0,
|
||||||
\ 'col': l:match[2] + 0,
|
\ 'col': l:match[2] + 0,
|
||||||
\ 'text': l:match[4],
|
\ 'text': l:match[4],
|
||||||
|
|
|
@ -9,18 +9,11 @@ function! ale_linters#ruby#rubocop#Handle(buffer, lines) abort
|
||||||
let l:pattern = '\v:(\d+):(\d+): (.): (.+)'
|
let l:pattern = '\v:(\d+):(\d+): (.): (.+)'
|
||||||
let l:output = []
|
let l:output = []
|
||||||
|
|
||||||
for l:line in a:lines
|
for l:match in ale#util#GetMatches(a:lines, l:pattern)
|
||||||
let l:match = matchlist(l:line, l:pattern)
|
|
||||||
|
|
||||||
if len(l:match) == 0
|
|
||||||
continue
|
|
||||||
endif
|
|
||||||
|
|
||||||
let l:text = l:match[4]
|
let l:text = l:match[4]
|
||||||
let l:type = l:match[3]
|
let l:type = l:match[3]
|
||||||
|
|
||||||
call add(l:output, {
|
call add(l:output, {
|
||||||
\ 'bufnr': a:buffer,
|
|
||||||
\ 'lnum': l:match[1] + 0,
|
\ 'lnum': l:match[1] + 0,
|
||||||
\ 'col': l:match[2] + 0,
|
\ 'col': l:match[2] + 0,
|
||||||
\ 'text': l:text,
|
\ 'text': l:text,
|
||||||
|
|
|
@ -19,7 +19,6 @@ function! ale_linters#ruby#ruby#Handle(buffer, lines) abort
|
||||||
endif
|
endif
|
||||||
else
|
else
|
||||||
call add(l:output, {
|
call add(l:output, {
|
||||||
\ 'bufnr': a:buffer,
|
|
||||||
\ 'lnum': l:match[1] + 0,
|
\ 'lnum': l:match[1] + 0,
|
||||||
\ 'col': 0,
|
\ 'col': 0,
|
||||||
\ 'text': l:match[2] . l:match[3],
|
\ 'text': l:match[2] . l:match[3],
|
||||||
|
|
|
@ -26,7 +26,6 @@ function! ale_linters#scala#scalac#Handle(buffer, lines) abort
|
||||||
endif
|
endif
|
||||||
|
|
||||||
call add(l:output, {
|
call add(l:output, {
|
||||||
\ 'bufnr': a:buffer,
|
|
||||||
\ 'lnum': l:match[1] + 0,
|
\ 'lnum': l:match[1] + 0,
|
||||||
\ 'col': l:col + 1,
|
\ 'col': l:col + 1,
|
||||||
\ 'text': l:text,
|
\ 'text': l:text,
|
||||||
|
|
|
@ -8,20 +8,13 @@ function! ale_linters#scss#scsslint#Handle(buffer, lines) abort
|
||||||
let l:pattern = '^.*:\(\d\+\):\(\d*\) \[\([^\]]\+\)\] \(.\+\)$'
|
let l:pattern = '^.*:\(\d\+\):\(\d*\) \[\([^\]]\+\)\] \(.\+\)$'
|
||||||
let l:output = []
|
let l:output = []
|
||||||
|
|
||||||
for l:line in a:lines
|
for l:match in ale#util#GetMatches(a:lines, l:pattern)
|
||||||
let l:match = matchlist(l:line, l:pattern)
|
|
||||||
|
|
||||||
if len(l:match) == 0
|
|
||||||
continue
|
|
||||||
endif
|
|
||||||
|
|
||||||
if g:ale_warn_about_trailing_whitespace && l:match[4] =~# '^TrailingWhitespace'
|
if g:ale_warn_about_trailing_whitespace && l:match[4] =~# '^TrailingWhitespace'
|
||||||
" Skip trailing whitespace warnings if that option is on.
|
" Skip trailing whitespace warnings if that option is on.
|
||||||
continue
|
continue
|
||||||
endif
|
endif
|
||||||
|
|
||||||
call add(l:output, {
|
call add(l:output, {
|
||||||
\ 'bufnr': a:buffer,
|
|
||||||
\ 'lnum': l:match[1] + 0,
|
\ 'lnum': l:match[1] + 0,
|
||||||
\ 'col': l:match[2] + 0,
|
\ 'col': l:match[2] + 0,
|
||||||
\ 'text': l:match[4],
|
\ 'text': l:match[4],
|
||||||
|
|
|
@ -41,22 +41,10 @@ function! ale_linters#sh#shell#Handle(buffer, lines) abort
|
||||||
let l:pattern = '\v(line |: ?)(\d+): (.+)$'
|
let l:pattern = '\v(line |: ?)(\d+): (.+)$'
|
||||||
let l:output = []
|
let l:output = []
|
||||||
|
|
||||||
for l:line in a:lines
|
for l:match in ale#util#GetMatches(a:lines, l:pattern)
|
||||||
let l:match = matchlist(l:line, l:pattern)
|
|
||||||
|
|
||||||
if len(l:match) == 0
|
|
||||||
continue
|
|
||||||
endif
|
|
||||||
|
|
||||||
let l:line = l:match[2] + 0
|
|
||||||
let l:text = l:match[3]
|
|
||||||
let l:type = 'E'
|
|
||||||
|
|
||||||
call add(l:output, {
|
call add(l:output, {
|
||||||
\ 'bufnr': a:buffer,
|
\ 'lnum': str2nr(l:match[2]),
|
||||||
\ 'lnum': l:line,
|
\ 'text': l:match[3],
|
||||||
\ 'text': l:text,
|
|
||||||
\ 'type': l:type,
|
|
||||||
\})
|
\})
|
||||||
endfor
|
endfor
|
||||||
|
|
||||||
|
|
|
@ -7,15 +7,8 @@ function! ale_linters#slim#slimlint#Handle(buffer, lines) abort
|
||||||
let l:pattern = '\v^.*:(\d+) \[([EW])\] (.+)$'
|
let l:pattern = '\v^.*:(\d+) \[([EW])\] (.+)$'
|
||||||
let l:output = []
|
let l:output = []
|
||||||
|
|
||||||
for l:line in a:lines
|
for l:match in ale#util#GetMatches(a:lines, l:pattern)
|
||||||
let l:match = matchlist(l:line, l:pattern)
|
|
||||||
|
|
||||||
if len(l:match) == 0
|
|
||||||
continue
|
|
||||||
endif
|
|
||||||
|
|
||||||
call add(l:output, {
|
call add(l:output, {
|
||||||
\ 'bufnr': a:buffer,
|
|
||||||
\ 'lnum': l:match[1] + 0,
|
\ 'lnum': l:match[1] + 0,
|
||||||
\ 'type': l:match[2],
|
\ 'type': l:match[2],
|
||||||
\ 'text': l:match[3]
|
\ 'text': l:match[3]
|
||||||
|
|
|
@ -8,13 +8,7 @@ function! ale_linters#sql#sqlint#Handle(buffer, lines) abort
|
||||||
let l:pattern = '\v^[^:]+:(\d+):(\d+):(\u+) (.*)'
|
let l:pattern = '\v^[^:]+:(\d+):(\d+):(\u+) (.*)'
|
||||||
let l:output = []
|
let l:output = []
|
||||||
|
|
||||||
for l:line in a:lines
|
for l:match in ale#util#GetMatches(a:lines, l:pattern)
|
||||||
let l:match = matchlist(l:line, l:pattern)
|
|
||||||
|
|
||||||
if empty(l:match)
|
|
||||||
continue
|
|
||||||
endif
|
|
||||||
|
|
||||||
call add(l:output, {
|
call add(l:output, {
|
||||||
\ 'lnum': l:match[1] + 0,
|
\ 'lnum': l:match[1] + 0,
|
||||||
\ 'col': l:match[2] + 0,
|
\ 'col': l:match[2] + 0,
|
||||||
|
|
|
@ -34,15 +34,8 @@ function! ale_linters#tex#chktex#Handle(buffer, lines) abort
|
||||||
let l:pattern = '^stdin:\(\d\+\):\(\d\+\):\(\d\+\):\(.\+\)$'
|
let l:pattern = '^stdin:\(\d\+\):\(\d\+\):\(\d\+\):\(.\+\)$'
|
||||||
let l:output = []
|
let l:output = []
|
||||||
|
|
||||||
for l:line in a:lines
|
for l:match in ale#util#GetMatches(a:lines, l:pattern)
|
||||||
let l:match = matchlist(l:line, l:pattern)
|
|
||||||
|
|
||||||
if len(l:match) == 0
|
|
||||||
continue
|
|
||||||
endif
|
|
||||||
|
|
||||||
call add(l:output, {
|
call add(l:output, {
|
||||||
\ 'bufnr': a:buffer,
|
|
||||||
\ 'lnum': l:match[1] + 0,
|
\ 'lnum': l:match[1] + 0,
|
||||||
\ 'col': l:match[2] + 0,
|
\ 'col': l:match[2] + 0,
|
||||||
\ 'text': l:match[4] . ' (' . (l:match[3]+0) . ')',
|
\ 'text': l:match[4] . ' (' . (l:match[3]+0) . ')',
|
||||||
|
|
|
@ -21,13 +21,7 @@ function! ale_linters#tex#lacheck#Handle(buffer, lines) abort
|
||||||
let l:pattern = '^".\+", line \(\d\+\): \(.\+\)$'
|
let l:pattern = '^".\+", line \(\d\+\): \(.\+\)$'
|
||||||
let l:output = []
|
let l:output = []
|
||||||
|
|
||||||
for l:line in a:lines
|
for l:match in ale#util#GetMatches(a:lines, l:pattern)
|
||||||
let l:match = matchlist(l:line, l:pattern)
|
|
||||||
|
|
||||||
if len(l:match) == 0
|
|
||||||
continue
|
|
||||||
endif
|
|
||||||
|
|
||||||
" lacheck follows `\input{}` commands. If the cwd is not the same as the
|
" lacheck follows `\input{}` commands. If the cwd is not the same as the
|
||||||
" file in the buffer then it will fail to find the inputed items. We do not
|
" file in the buffer then it will fail to find the inputed items. We do not
|
||||||
" want warnings from those items anyway
|
" want warnings from those items anyway
|
||||||
|
@ -36,9 +30,7 @@ function! ale_linters#tex#lacheck#Handle(buffer, lines) abort
|
||||||
endif
|
endif
|
||||||
|
|
||||||
call add(l:output, {
|
call add(l:output, {
|
||||||
\ 'bufnr': a:buffer,
|
|
||||||
\ 'lnum': l:match[1] + 0,
|
\ 'lnum': l:match[1] + 0,
|
||||||
\ 'col': 0,
|
|
||||||
\ 'text': l:match[2],
|
\ 'text': l:match[2],
|
||||||
\ 'type': 'W',
|
\ 'type': 'W',
|
||||||
\})
|
\})
|
||||||
|
|
|
@ -25,24 +25,15 @@ function! ale_linters#typescript#tslint#Handle(buffer, lines) abort
|
||||||
let l:pattern = '.\+' . l:ext . '\[\(\d\+\), \(\d\+\)\]: \(.\+\)'
|
let l:pattern = '.\+' . l:ext . '\[\(\d\+\), \(\d\+\)\]: \(.\+\)'
|
||||||
let l:output = []
|
let l:output = []
|
||||||
|
|
||||||
for l:line in a:lines
|
for l:match in ale#util#GetMatches(a:lines, l:pattern)
|
||||||
let l:match = matchlist(l:line, l:pattern)
|
|
||||||
|
|
||||||
if len(l:match) == 0
|
|
||||||
continue
|
|
||||||
endif
|
|
||||||
|
|
||||||
let l:line = l:match[1] + 0
|
let l:line = l:match[1] + 0
|
||||||
let l:column = l:match[2] + 0
|
let l:column = l:match[2] + 0
|
||||||
let l:type = 'E'
|
|
||||||
let l:text = l:match[3]
|
let l:text = l:match[3]
|
||||||
|
|
||||||
call add(l:output, {
|
call add(l:output, {
|
||||||
\ 'bufnr': a:buffer,
|
|
||||||
\ 'lnum': l:line,
|
\ 'lnum': l:line,
|
||||||
\ 'col': l:column,
|
\ 'col': l:column,
|
||||||
\ 'text': l:text,
|
\ 'text': l:text,
|
||||||
\ 'type': l:type,
|
|
||||||
\})
|
\})
|
||||||
endfor
|
endfor
|
||||||
|
|
||||||
|
|
|
@ -10,24 +10,15 @@ function! ale_linters#typescript#typecheck#Handle(buffer, lines) abort
|
||||||
let l:pattern = '.\+\.ts\[\(\d\+\), \(\d\+\)\]: \(.\+\)'
|
let l:pattern = '.\+\.ts\[\(\d\+\), \(\d\+\)\]: \(.\+\)'
|
||||||
let l:output = []
|
let l:output = []
|
||||||
|
|
||||||
for l:line in a:lines
|
for l:match in ale#util#GetMatches(a:lines, l:pattern)
|
||||||
let l:match = matchlist(l:line, l:pattern)
|
|
||||||
|
|
||||||
if len(l:match) == 0
|
|
||||||
continue
|
|
||||||
endif
|
|
||||||
|
|
||||||
let l:line = l:match[1] + 0
|
let l:line = l:match[1] + 0
|
||||||
let l:column = l:match[2] + 0
|
let l:column = l:match[2] + 0
|
||||||
let l:type = 'E'
|
|
||||||
let l:text = l:match[3]
|
let l:text = l:match[3]
|
||||||
|
|
||||||
call add(l:output, {
|
call add(l:output, {
|
||||||
\ 'bufnr': a:buffer,
|
|
||||||
\ 'lnum': l:line,
|
\ 'lnum': l:line,
|
||||||
\ 'col': l:column,
|
\ 'col': l:column,
|
||||||
\ 'text': l:text,
|
\ 'text': l:text,
|
||||||
\ 'type': l:type,
|
|
||||||
\})
|
\})
|
||||||
endfor
|
endfor
|
||||||
|
|
||||||
|
|
|
@ -11,19 +11,12 @@ function! ale_linters#verilog#iverilog#Handle(buffer, lines) abort
|
||||||
let l:pattern = '^[^:]\+:\(\d\+\): \(warning\|error\|syntax error\)\(: \(.\+\)\)\?'
|
let l:pattern = '^[^:]\+:\(\d\+\): \(warning\|error\|syntax error\)\(: \(.\+\)\)\?'
|
||||||
let l:output = []
|
let l:output = []
|
||||||
|
|
||||||
for l:line in a:lines
|
for l:match in ale#util#GetMatches(a:lines, l:pattern)
|
||||||
let l:match = matchlist(l:line, l:pattern)
|
|
||||||
|
|
||||||
if len(l:match) == 0
|
|
||||||
continue
|
|
||||||
endif
|
|
||||||
|
|
||||||
let l:line = l:match[1] + 0
|
let l:line = l:match[1] + 0
|
||||||
let l:type = l:match[2] =~# 'error' ? 'E' : 'W'
|
let l:type = l:match[2] =~# 'error' ? 'E' : 'W'
|
||||||
let l:text = l:match[2] ==# 'syntax error' ? 'syntax error' : l:match[4]
|
let l:text = l:match[2] ==# 'syntax error' ? 'syntax error' : l:match[4]
|
||||||
|
|
||||||
call add(l:output, {
|
call add(l:output, {
|
||||||
\ 'bufnr': a:buffer,
|
|
||||||
\ 'lnum': l:line,
|
\ 'lnum': l:line,
|
||||||
\ 'text': l:text,
|
\ 'text': l:text,
|
||||||
\ 'type': l:type,
|
\ 'type': l:type,
|
||||||
|
|
|
@ -23,13 +23,7 @@ function! ale_linters#verilog#verilator#Handle(buffer, lines) abort
|
||||||
let l:pattern = '^%\(Warning\|Error\)[^:]*:\([^:]\+\):\(\d\+\): \(.\+\)$'
|
let l:pattern = '^%\(Warning\|Error\)[^:]*:\([^:]\+\):\(\d\+\): \(.\+\)$'
|
||||||
let l:output = []
|
let l:output = []
|
||||||
|
|
||||||
for l:line in a:lines
|
for l:match in ale#util#GetMatches(a:lines, l:pattern)
|
||||||
let l:match = matchlist(l:line, l:pattern)
|
|
||||||
|
|
||||||
if len(l:match) == 0
|
|
||||||
continue
|
|
||||||
endif
|
|
||||||
|
|
||||||
let l:line = l:match[3] + 0
|
let l:line = l:match[3] + 0
|
||||||
let l:type = l:match[1] ==# 'Error' ? 'E' : 'W'
|
let l:type = l:match[1] ==# 'Error' ? 'E' : 'W'
|
||||||
let l:text = l:match[4]
|
let l:text = l:match[4]
|
||||||
|
@ -37,7 +31,6 @@ function! ale_linters#verilog#verilator#Handle(buffer, lines) abort
|
||||||
|
|
||||||
if l:file =~# '_verilator_linted.v'
|
if l:file =~# '_verilator_linted.v'
|
||||||
call add(l:output, {
|
call add(l:output, {
|
||||||
\ 'bufnr': a:buffer,
|
|
||||||
\ 'lnum': l:line,
|
\ 'lnum': l:line,
|
||||||
\ 'text': l:text,
|
\ 'text': l:text,
|
||||||
\ 'type': l:type,
|
\ 'type': l:type,
|
||||||
|
|
|
@ -23,20 +23,13 @@ function! ale_linters#yaml#yamllint#Handle(buffer, lines) abort
|
||||||
let l:pattern = '^.*:\(\d\+\):\(\d\+\): \[\(error\|warning\)\] \(.\+\)$'
|
let l:pattern = '^.*:\(\d\+\):\(\d\+\): \[\(error\|warning\)\] \(.\+\)$'
|
||||||
let l:output = []
|
let l:output = []
|
||||||
|
|
||||||
for l:line in a:lines
|
for l:match in ale#util#GetMatches(a:lines, l:pattern)
|
||||||
let l:match = matchlist(l:line, l:pattern)
|
|
||||||
|
|
||||||
if len(l:match) == 0
|
|
||||||
continue
|
|
||||||
endif
|
|
||||||
|
|
||||||
let l:line = l:match[1] + 0
|
let l:line = l:match[1] + 0
|
||||||
let l:col = l:match[2] + 0
|
let l:col = l:match[2] + 0
|
||||||
let l:type = l:match[3]
|
let l:type = l:match[3]
|
||||||
let l:text = l:match[4]
|
let l:text = l:match[4]
|
||||||
|
|
||||||
call add(l:output, {
|
call add(l:output, {
|
||||||
\ 'bufnr': a:buffer,
|
|
||||||
\ 'lnum': l:line,
|
\ 'lnum': l:line,
|
||||||
\ 'col': l:col,
|
\ 'col': l:col,
|
||||||
\ 'text': l:text,
|
\ 'text': l:text,
|
||||||
|
|
|
@ -101,3 +101,27 @@ endfunction
|
||||||
function! ale#util#ClockMilliseconds() abort
|
function! ale#util#ClockMilliseconds() abort
|
||||||
return float2nr(reltimefloat(reltime()) * 1000)
|
return float2nr(reltimefloat(reltime()) * 1000)
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
" Given a single line, or a List of lines, and a single pattern, or a List
|
||||||
|
" of patterns, return all of the matches for the lines(s) from the given
|
||||||
|
" patterns, using matchlist().
|
||||||
|
"
|
||||||
|
" Only the first pattern which matches a line will be returned.
|
||||||
|
function! ale#util#GetMatches(lines, patterns) abort
|
||||||
|
let l:matches = []
|
||||||
|
let l:lines = type(a:lines) == type([]) ? a:lines : [a:lines]
|
||||||
|
let l:patterns = type(a:patterns) == type([]) ? a:patterns : [a:patterns]
|
||||||
|
|
||||||
|
for l:line in l:lines
|
||||||
|
for l:pattern in l:patterns
|
||||||
|
let l:match = matchlist(l:line, l:pattern)
|
||||||
|
|
||||||
|
if !empty(l:match)
|
||||||
|
call add(l:matches, l:match)
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
endfor
|
||||||
|
|
||||||
|
return l:matches
|
||||||
|
endfunction
|
||||||
|
|
|
@ -4,22 +4,14 @@ Execute(The asm GCC handler should parse lines from GCC 6.3.1 correctly):
|
||||||
AssertEqual
|
AssertEqual
|
||||||
\ [
|
\ [
|
||||||
\ {
|
\ {
|
||||||
\ 'bufnr': 357,
|
|
||||||
\ 'lnum': 38,
|
\ 'lnum': 38,
|
||||||
\ 'vcol': 0,
|
|
||||||
\ 'col': 0,
|
|
||||||
\ 'text': "too many memory references for `mov'",
|
\ 'text': "too many memory references for `mov'",
|
||||||
\ 'type': 'E',
|
\ 'type': 'E',
|
||||||
\ 'nr': -1,
|
|
||||||
\ },
|
\ },
|
||||||
\ {
|
\ {
|
||||||
\ 'bufnr': 357,
|
|
||||||
\ 'lnum': 42,
|
\ 'lnum': 42,
|
||||||
\ 'vcol': 0,
|
|
||||||
\ 'col': 0,
|
|
||||||
\ 'text': "incorrect register `%ax' used with `l' suffix",
|
\ 'text': "incorrect register `%ax' used with `l' suffix",
|
||||||
\ 'type': 'E',
|
\ 'type': 'E',
|
||||||
\ 'nr': -1,
|
|
||||||
\ },
|
\ },
|
||||||
\ ],
|
\ ],
|
||||||
\ ale_linters#asm#gcc#Handle(357, [
|
\ ale_linters#asm#gcc#Handle(357, [
|
||||||
|
|
|
@ -4,7 +4,6 @@ Execute(The coffeelint handler should parse lines correctly):
|
||||||
AssertEqual
|
AssertEqual
|
||||||
\ [
|
\ [
|
||||||
\ {
|
\ {
|
||||||
\ 'bufnr': 347,
|
|
||||||
\ 'lnum': 125,
|
\ 'lnum': 125,
|
||||||
\ 'text': "Line exceeds maximum allowed length Length is 122, max is 120.",
|
\ 'text': "Line exceeds maximum allowed length Length is 122, max is 120.",
|
||||||
\ 'type': 'E',
|
\ 'type': 'E',
|
||||||
|
|
|
@ -4,14 +4,12 @@ Execute(The mypy handler should parse lines correctly):
|
||||||
AssertEqual
|
AssertEqual
|
||||||
\ [
|
\ [
|
||||||
\ {
|
\ {
|
||||||
\ 'bufnr': 347,
|
|
||||||
\ 'lnum': 4,
|
\ 'lnum': 4,
|
||||||
\ 'col': 0,
|
\ 'col': 0,
|
||||||
\ 'text': "No library stub file for module 'django.db'",
|
\ 'text': "No library stub file for module 'django.db'",
|
||||||
\ 'type': 'E',
|
\ 'type': 'E',
|
||||||
\ },
|
\ },
|
||||||
\ {
|
\ {
|
||||||
\ 'bufnr': 347,
|
|
||||||
\ 'lnum': 40,
|
\ 'lnum': 40,
|
||||||
\ 'col': 5,
|
\ 'col': 5,
|
||||||
\ 'text': "Some other problem",
|
\ 'text': "Some other problem",
|
||||||
|
|
|
@ -4,14 +4,12 @@ Execute(The nix handler should parse nix-instantiate error messages correctly):
|
||||||
AssertEqual
|
AssertEqual
|
||||||
\ [
|
\ [
|
||||||
\ {
|
\ {
|
||||||
\ 'bufnr': 47,
|
|
||||||
\ 'lnum': 23,
|
\ 'lnum': 23,
|
||||||
\ 'col': 14,
|
\ 'col': 14,
|
||||||
\ 'text': 'error: syntax error, unexpected IN',
|
\ 'text': 'error: syntax error, unexpected IN',
|
||||||
\ 'type': 'E',
|
\ 'type': 'E',
|
||||||
\ },
|
\ },
|
||||||
\ {
|
\ {
|
||||||
\ 'bufnr': 47,
|
|
||||||
\ 'lnum': 3,
|
\ 'lnum': 3,
|
||||||
\ 'col': 12,
|
\ 'col': 12,
|
||||||
\ 'text': 'error: syntax error, unexpected ''='', expecting '';''',
|
\ 'text': 'error: syntax error, unexpected ''='', expecting '';''',
|
||||||
|
|
|
@ -11,53 +11,39 @@ Execute(The php handler should parse lines correctly):
|
||||||
AssertEqual
|
AssertEqual
|
||||||
\ [
|
\ [
|
||||||
\ {
|
\ {
|
||||||
\ 'bufnr': 347,
|
|
||||||
\ 'lnum': 1,
|
\ 'lnum': 1,
|
||||||
\ 'col': 5,
|
\ 'col': 5,
|
||||||
\ 'text': "syntax error, unexpected ';', expecting ']'",
|
\ 'text': "syntax error, unexpected ';', expecting ']'",
|
||||||
\ 'type': 'E',
|
|
||||||
\ },
|
\ },
|
||||||
\ {
|
\ {
|
||||||
\ 'bufnr': 347,
|
|
||||||
\ 'lnum': 2,
|
\ 'lnum': 2,
|
||||||
\ 'col': 13,
|
\ 'col': 13,
|
||||||
\ 'text': "syntax error, unexpected '/', expecting function (T_FUNCTION) or const (T_CONST)",
|
\ 'text': "syntax error, unexpected '/', expecting function (T_FUNCTION) or const (T_CONST)",
|
||||||
\ 'type': 'E',
|
|
||||||
\ },
|
\ },
|
||||||
\ {
|
\ {
|
||||||
\ 'bufnr': 347,
|
|
||||||
\ 'lnum': 3,
|
\ 'lnum': 3,
|
||||||
\ 'col': 5,
|
\ 'col': 5,
|
||||||
\ 'text': "syntax error, unexpected ')'",
|
\ 'text': "syntax error, unexpected ')'",
|
||||||
\ 'type': 'E',
|
|
||||||
\ },
|
\ },
|
||||||
\ {
|
\ {
|
||||||
\ 'bufnr': 347,
|
|
||||||
\ 'lnum': 4,
|
\ 'lnum': 4,
|
||||||
\ 'col': 8,
|
\ 'col': 8,
|
||||||
\ 'text': "syntax error, unexpected ''bar'' (T_CONSTANT_ENCAPSED_STRING), expecting ']'",
|
\ 'text': "syntax error, unexpected ''bar'' (T_CONSTANT_ENCAPSED_STRING), expecting ']'",
|
||||||
\ 'type': 'E',
|
|
||||||
\ },
|
\ },
|
||||||
\ {
|
\ {
|
||||||
\ 'bufnr': 347,
|
|
||||||
\ 'lnum': 5,
|
\ 'lnum': 5,
|
||||||
\ 'col': 0,
|
\ 'col': 0,
|
||||||
\ 'text': "Cannot redeclare count()",
|
\ 'text': "Cannot redeclare count()",
|
||||||
\ 'type': 'E',
|
|
||||||
\ },
|
\ },
|
||||||
\ {
|
\ {
|
||||||
\ 'bufnr': 347,
|
|
||||||
\ 'lnum': 21,
|
\ 'lnum': 21,
|
||||||
\ 'col': 0,
|
\ 'col': 0,
|
||||||
\ 'text': "syntax error, unexpected end of file",
|
\ 'text': "syntax error, unexpected end of file",
|
||||||
\ 'type': 'E',
|
|
||||||
\ },
|
\ },
|
||||||
\ {
|
\ {
|
||||||
\ 'bufnr': 347,
|
|
||||||
\ 'lnum': 47,
|
\ 'lnum': 47,
|
||||||
\ 'col': 0,
|
\ 'col': 0,
|
||||||
\ 'text': "Invalid numeric literal",
|
\ 'text': "Invalid numeric literal",
|
||||||
\ 'type': 'E',
|
|
||||||
\ },
|
\ },
|
||||||
\ ],
|
\ ],
|
||||||
\ ale_linters#php#php#Handle(347, [
|
\ ale_linters#php#php#Handle(347, [
|
||||||
|
|
|
@ -4,28 +4,24 @@ Execute(The rubocop handler should parse lines correctly):
|
||||||
AssertEqual
|
AssertEqual
|
||||||
\ [
|
\ [
|
||||||
\ {
|
\ {
|
||||||
\ 'bufnr': 347,
|
|
||||||
\ 'lnum': 83,
|
\ 'lnum': 83,
|
||||||
\ 'col': 29,
|
\ 'col': 29,
|
||||||
\ 'text': 'Prefer single-quoted strings...',
|
\ 'text': 'Prefer single-quoted strings...',
|
||||||
\ 'type': 'W',
|
\ 'type': 'W',
|
||||||
\ },
|
\ },
|
||||||
\ {
|
\ {
|
||||||
\ 'bufnr': 347,
|
|
||||||
\ 'lnum': 12,
|
\ 'lnum': 12,
|
||||||
\ 'col': 2,
|
\ 'col': 2,
|
||||||
\ 'text': 'Some error',
|
\ 'text': 'Some error',
|
||||||
\ 'type': 'E',
|
\ 'type': 'E',
|
||||||
\ },
|
\ },
|
||||||
\ {
|
\ {
|
||||||
\ 'bufnr': 347,
|
|
||||||
\ 'lnum': 10,
|
\ 'lnum': 10,
|
||||||
\ 'col': 5,
|
\ 'col': 5,
|
||||||
\ 'text': 'Regular warning',
|
\ 'text': 'Regular warning',
|
||||||
\ 'type': 'W',
|
\ 'type': 'W',
|
||||||
\ },
|
\ },
|
||||||
\ {
|
\ {
|
||||||
\ 'bufnr': 347,
|
|
||||||
\ 'lnum': 11,
|
\ 'lnum': 11,
|
||||||
\ 'col': 1,
|
\ 'col': 1,
|
||||||
\ 'text': 'Another error',
|
\ 'text': 'Another error',
|
||||||
|
|
|
@ -7,21 +7,18 @@ Execute(The ruby handler should parse lines correctly and add the column if it c
|
||||||
\ [
|
\ [
|
||||||
\ {
|
\ {
|
||||||
\ 'lnum': 6,
|
\ 'lnum': 6,
|
||||||
\ 'bufnr': 255,
|
|
||||||
\ 'col': 13,
|
\ 'col': 13,
|
||||||
\ 'type': 'E',
|
\ 'type': 'E',
|
||||||
\ 'text': 'syntax error, unexpected '';'''
|
\ 'text': 'syntax error, unexpected '';'''
|
||||||
\ },
|
\ },
|
||||||
\ {
|
\ {
|
||||||
\ 'lnum': 9,
|
\ 'lnum': 9,
|
||||||
\ 'bufnr': 255,
|
|
||||||
\ 'col': 0,
|
\ 'col': 0,
|
||||||
\ 'type': 'W',
|
\ 'type': 'W',
|
||||||
\ 'text': 'warning: statement not reached'
|
\ 'text': 'warning: statement not reached'
|
||||||
\ },
|
\ },
|
||||||
\ {
|
\ {
|
||||||
\ 'lnum': 12,
|
\ 'lnum': 12,
|
||||||
\ 'bufnr': 255,
|
|
||||||
\ 'col': 0,
|
\ 'col': 0,
|
||||||
\ 'type': 'E',
|
\ 'type': 'E',
|
||||||
\ 'text': 'syntax error, unexpected end-of-input, expecting keyword_end'
|
\ 'text': 'syntax error, unexpected end-of-input, expecting keyword_end'
|
||||||
|
|
|
@ -7,40 +7,28 @@ Execute(The shell handler should parse lines correctly):
|
||||||
AssertEqual
|
AssertEqual
|
||||||
\ [
|
\ [
|
||||||
\ {
|
\ {
|
||||||
\ 'bufnr': 347,
|
|
||||||
\ 'lnum': 13,
|
\ 'lnum': 13,
|
||||||
\ 'text': 'syntax error near unexpected token d',
|
\ 'text': 'syntax error near unexpected token d',
|
||||||
\ 'type': 'E',
|
|
||||||
\ },
|
\ },
|
||||||
\ {
|
\ {
|
||||||
\ 'bufnr': 347,
|
|
||||||
\ 'lnum': 7,
|
\ 'lnum': 7,
|
||||||
\ 'text': 'line 42: line 36:',
|
\ 'text': 'line 42: line 36:',
|
||||||
\ 'type': 'E',
|
|
||||||
\ },
|
\ },
|
||||||
\ {
|
\ {
|
||||||
\ 'bufnr': 347,
|
|
||||||
\ 'lnum': 11,
|
\ 'lnum': 11,
|
||||||
\ 'text': 'Syntax error: "(" unexpected',
|
\ 'text': 'Syntax error: "(" unexpected',
|
||||||
\ 'type': 'E',
|
|
||||||
\ },
|
\ },
|
||||||
\ {
|
\ {
|
||||||
\ 'bufnr': 347,
|
|
||||||
\ 'lnum': 95,
|
\ 'lnum': 95,
|
||||||
\ 'text': 'parse error near `out=$(( $1 / 1024. )...',
|
\ 'text': 'parse error near `out=$(( $1 / 1024. )...',
|
||||||
\ 'type': 'E',
|
|
||||||
\ },
|
\ },
|
||||||
\ {
|
\ {
|
||||||
\ 'bufnr': 347,
|
|
||||||
\ 'lnum': 22,
|
\ 'lnum': 22,
|
||||||
\ 'text': ':11: :33: :44:',
|
\ 'text': ':11: :33: :44:',
|
||||||
\ 'type': 'E',
|
|
||||||
\ },
|
\ },
|
||||||
\ {
|
\ {
|
||||||
\ 'bufnr': 347,
|
|
||||||
\ 'lnum': 9,
|
\ 'lnum': 9,
|
||||||
\ 'text': '`done'' unexpected',
|
\ 'text': '`done'' unexpected',
|
||||||
\ 'type': 'E',
|
|
||||||
\ },
|
\ },
|
||||||
\ ],
|
\ ],
|
||||||
\ ale_linters#sh#shell#Handle(347, [
|
\ ale_linters#sh#shell#Handle(347, [
|
||||||
|
|
|
@ -6,19 +6,16 @@ Execute(The slim handler should parse lines correctly):
|
||||||
AssertEqual
|
AssertEqual
|
||||||
\ [
|
\ [
|
||||||
\ {
|
\ {
|
||||||
\ 'bufnr': 347,
|
|
||||||
\ 'lnum': 1,
|
\ 'lnum': 1,
|
||||||
\ 'text': 'RedundantDiv: `div` is redundant when class attribute shortcut is present',
|
\ 'text': 'RedundantDiv: `div` is redundant when class attribute shortcut is present',
|
||||||
\ 'type': 'W',
|
\ 'type': 'W',
|
||||||
\ },
|
\ },
|
||||||
\ {
|
\ {
|
||||||
\ 'bufnr': 347,
|
|
||||||
\ 'lnum': 2,
|
\ 'lnum': 2,
|
||||||
\ 'text': 'LineLength: Line is too long. [136/80]',
|
\ 'text': 'LineLength: Line is too long. [136/80]',
|
||||||
\ 'type': 'W',
|
\ 'type': 'W',
|
||||||
\ },
|
\ },
|
||||||
\ {
|
\ {
|
||||||
\ 'bufnr': 347,
|
|
||||||
\ 'lnum': 3,
|
\ 'lnum': 3,
|
||||||
\ 'text': 'Invalid syntax',
|
\ 'text': 'Invalid syntax',
|
||||||
\ 'type': 'E',
|
\ 'type': 'E',
|
||||||
|
|
|
@ -4,18 +4,14 @@ Execute(The typecheck handler should parse lines correctly):
|
||||||
AssertEqual
|
AssertEqual
|
||||||
\ [
|
\ [
|
||||||
\ {
|
\ {
|
||||||
\ 'bufnr': 347,
|
|
||||||
\ 'lnum': 16,
|
\ 'lnum': 16,
|
||||||
\ 'col': 7,
|
\ 'col': 7,
|
||||||
\ 'text': "Type 'A' is not assignable to type 'B'",
|
\ 'text': "Type 'A' is not assignable to type 'B'",
|
||||||
\ 'type': 'E',
|
|
||||||
\ },
|
\ },
|
||||||
\ {
|
\ {
|
||||||
\ 'bufnr': 347,
|
|
||||||
\ 'lnum': 7,
|
\ 'lnum': 7,
|
||||||
\ 'col': 41,
|
\ 'col': 41,
|
||||||
\ 'text': "Property 'a' does not exist on type 'A'",
|
\ 'text': "Property 'a' does not exist on type 'A'",
|
||||||
\ 'type': 'E',
|
|
||||||
\ },
|
\ },
|
||||||
\ ],
|
\ ],
|
||||||
\ ale_linters#typescript#typecheck#Handle(347, [
|
\ ale_linters#typescript#typecheck#Handle(347, [
|
||||||
|
|
148
test/test_getmatches.vader
Normal file
148
test/test_getmatches.vader
Normal file
|
@ -0,0 +1,148 @@
|
||||||
|
Execute (ale#util#GetMatches should return matches for many lines):
|
||||||
|
AssertEqual
|
||||||
|
\ [
|
||||||
|
\ [
|
||||||
|
\ '/path/to/some-filename.js:47:14: Missing trailing comma. [Warning/comma-dangle]',
|
||||||
|
\ '47',
|
||||||
|
\ '14',
|
||||||
|
\ 'Missing trailing comma.',
|
||||||
|
\ 'Warning/comma-dangle',
|
||||||
|
\ '',
|
||||||
|
\ '',
|
||||||
|
\ '',
|
||||||
|
\ '',
|
||||||
|
\ '',
|
||||||
|
\ ],
|
||||||
|
\ [
|
||||||
|
\ '/path/to/some-filename.js:56:41: Missing semicolon. [Error/semi]',
|
||||||
|
\ '56',
|
||||||
|
\ '41',
|
||||||
|
\ 'Missing semicolon.',
|
||||||
|
\ 'Error/semi',
|
||||||
|
\ '',
|
||||||
|
\ '',
|
||||||
|
\ '',
|
||||||
|
\ '',
|
||||||
|
\ '',
|
||||||
|
\ ],
|
||||||
|
\ ],
|
||||||
|
\ ale#util#GetMatches(
|
||||||
|
\ [
|
||||||
|
\ '/path/to/some-filename.js:47:14: Missing trailing comma. [Warning/comma-dangle]',
|
||||||
|
\ '/path/to/some-filename.js:56:41: Missing semicolon. [Error/semi]',
|
||||||
|
\ ],
|
||||||
|
\ [
|
||||||
|
\ '^.*:\(\d\+\):\(\d\+\): \(.\+\) \[\(.\+\)\]$',
|
||||||
|
\ ]
|
||||||
|
\ )
|
||||||
|
|
||||||
|
Execute (ale#util#GetMatches should accept a string for a single pattern):
|
||||||
|
AssertEqual
|
||||||
|
\ [
|
||||||
|
\ [
|
||||||
|
\ '/path/to/some-filename.js:47:14: Missing trailing comma. [Warning/comma-dangle]',
|
||||||
|
\ '47',
|
||||||
|
\ '14',
|
||||||
|
\ 'Missing trailing comma.',
|
||||||
|
\ 'Warning/comma-dangle',
|
||||||
|
\ '',
|
||||||
|
\ '',
|
||||||
|
\ '',
|
||||||
|
\ '',
|
||||||
|
\ '',
|
||||||
|
\ ],
|
||||||
|
\ [
|
||||||
|
\ '/path/to/some-filename.js:56:41: Missing semicolon. [Error/semi]',
|
||||||
|
\ '56',
|
||||||
|
\ '41',
|
||||||
|
\ 'Missing semicolon.',
|
||||||
|
\ 'Error/semi',
|
||||||
|
\ '',
|
||||||
|
\ '',
|
||||||
|
\ '',
|
||||||
|
\ '',
|
||||||
|
\ '',
|
||||||
|
\ ],
|
||||||
|
\ ],
|
||||||
|
\ ale#util#GetMatches(
|
||||||
|
\ [
|
||||||
|
\ '/path/to/some-filename.js:47:14: Missing trailing comma. [Warning/comma-dangle]',
|
||||||
|
\ '/path/to/some-filename.js:56:41: Missing semicolon. [Error/semi]',
|
||||||
|
\ ],
|
||||||
|
\ '^.*:\(\d\+\):\(\d\+\): \(.\+\) \[\(.\+\)\]$'
|
||||||
|
\ )
|
||||||
|
|
||||||
|
Execute (ale#util#GetMatches should accept a single line as a string):
|
||||||
|
AssertEqual
|
||||||
|
\ [
|
||||||
|
\ [
|
||||||
|
\ '/path/to/some-filename.js:47:14: Missing trailing comma. [Warning/comma-dangle]',
|
||||||
|
\ '47',
|
||||||
|
\ '14',
|
||||||
|
\ 'Missing trailing comma.',
|
||||||
|
\ 'Warning/comma-dangle',
|
||||||
|
\ '',
|
||||||
|
\ '',
|
||||||
|
\ '',
|
||||||
|
\ '',
|
||||||
|
\ '',
|
||||||
|
\ ],
|
||||||
|
\ ],
|
||||||
|
\ ale#util#GetMatches(
|
||||||
|
\ '/path/to/some-filename.js:47:14: Missing trailing comma. [Warning/comma-dangle]',
|
||||||
|
\ [
|
||||||
|
\ '^.*:\(\d\+\):\(\d\+\): \(.\+\) \[\(.\+\)\]$',
|
||||||
|
\ ]
|
||||||
|
\ )
|
||||||
|
|
||||||
|
Execute (ale#util#GetMatches should match multiple patterns correctly):
|
||||||
|
AssertEqual
|
||||||
|
\ [
|
||||||
|
\ [
|
||||||
|
\ '/path/to/some-filename.js:47:14: Missing trailing comma. [Warning/comma-dangle]',
|
||||||
|
\ '47',
|
||||||
|
\ '14',
|
||||||
|
\ 'Missing trailing comma.',
|
||||||
|
\ 'Warning/comma-dangle',
|
||||||
|
\ '',
|
||||||
|
\ '',
|
||||||
|
\ '',
|
||||||
|
\ '',
|
||||||
|
\ '',
|
||||||
|
\ ],
|
||||||
|
\ [
|
||||||
|
\ '/path/to/some-filename.js:56:41: Missing semicolon. [Error/semi]',
|
||||||
|
\ '56',
|
||||||
|
\ '41',
|
||||||
|
\ 'Missing semicolon.',
|
||||||
|
\ 'Error/semi',
|
||||||
|
\ '',
|
||||||
|
\ '',
|
||||||
|
\ '',
|
||||||
|
\ '',
|
||||||
|
\ '',
|
||||||
|
\ ],
|
||||||
|
\ [
|
||||||
|
\ '/path/to/some-filename.js:13:3: Parsing error: Unexpected token',
|
||||||
|
\ '13',
|
||||||
|
\ '3',
|
||||||
|
\ 'Parsing error: Unexpected token',
|
||||||
|
\ '',
|
||||||
|
\ '',
|
||||||
|
\ '',
|
||||||
|
\ '',
|
||||||
|
\ '',
|
||||||
|
\ '',
|
||||||
|
\ ],
|
||||||
|
\ ],
|
||||||
|
\ ale#util#GetMatches(
|
||||||
|
\ [
|
||||||
|
\ '/path/to/some-filename.js:47:14: Missing trailing comma. [Warning/comma-dangle]',
|
||||||
|
\ '/path/to/some-filename.js:56:41: Missing semicolon. [Error/semi]',
|
||||||
|
\ '/path/to/some-filename.js:13:3: Parsing error: Unexpected token',
|
||||||
|
\ ],
|
||||||
|
\ [
|
||||||
|
\ '^.*:\(\d\+\):\(\d\+\): \(.\+\) \[\(.\+\)\]$',
|
||||||
|
\ '^.*:\(\d\+\):\(\d\+\): \(.\+\)$',
|
||||||
|
\ ]
|
||||||
|
\ )
|
Reference in a new issue