Skip to content

Commit

Permalink
Surface warnings from Zeek linter (#4883)
Browse files Browse the repository at this point in the history
In addition to errors Zeek's parsing can also expose warning messages,
e.g., for the following code

```zeek
event http_stats(c: connection, stats: http_stats_rec) {
    c$removal_hooks;
}
```

a warning is emitted

```
warning in /tmp/foo.zeek, line 2: expression value ignored (c$removal_hooks)
```

This patch adds parsing and propagation of these warning messages.
  • Loading branch information
bbannier authored Dec 29, 2024
1 parent 65b49c1 commit 6e4f01f
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 5 deletions.
7 changes: 4 additions & 3 deletions ale_linters/zeek/zeek.vim
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,12 @@
call ale#Set('zeek_zeek_executable', 'zeek')

function! ale_linters#zeek#zeek#HandleErrors(buffer, lines) abort
let l:pattern = 'error in \v.*, line (\d+): (.*)$'
let l:pattern = '\(error\|warning\) in \v.*, line (\d+): (.*)$'

return map(ale#util#GetMatches(a:lines, l:pattern), "{
\ 'lnum': str2nr(v:val[1]),
\ 'text': v:val[2],
\ 'lnum': str2nr(v:val[2]),
\ 'text': v:val[3],
\ 'type': (v:val[1] is# 'error') ? 'E': 'W',
\}")
endfunction

Expand Down
18 changes: 16 additions & 2 deletions test/handler/test_zeek_handler.vader
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,28 @@ Before:
After:
call ale#linter#Reset()

Execute(The zeek handler should parse input correctly):
Execute(The zeek handler should parse errors correctly):
AssertEqual
\ [
\ {
\ 'lnum': 2,
\ 'text': 'unknown identifier bar, at or near "bar"'
\ 'text': 'unknown identifier bar, at or near "bar"',
\ 'type': 'E',
\ },
\ ],
\ ale_linters#zeek#zeek#HandleErrors(bufnr(''), [
\ 'error in /tmp/foo.zeek, line 2: unknown identifier bar, at or near "bar"'
\ ])

Execute(The zeek handler should parse warnings correctly):
AssertEqual
\ [
\ {
\ 'lnum': 11,
\ 'text': 'expression value ignored (c$removal_hooks)',
\ 'type': 'W',
\ },
\ ],
\ ale_linters#zeek#zeek#HandleErrors(bufnr(''), [
\ 'warning in /tmp/bar.zeek, line 11: expression value ignored (c$removal_hooks)'
\ ])

0 comments on commit 6e4f01f

Please sign in to comment.