New linter: Flawfinder (#1361)

* Flawfinder support added for C and C++

A minor modification to gcc handler was made to support flawfinder's
single-line output format that does not have a space following the
colon denoting the warning level.  gcc handler still passes its
Vader tests after this modification.

* Documentation fixes

* Revert documentation regression

* Added Flawfinder to table of contents

* Removed trailing whitespace

* Follow ALE conventions better

Added additional documentation and Vader tests
This commit is contained in:
Christian-Gibbons 2018-02-25 09:11:04 -05:00 committed by w0rp
parent 478a2883a6
commit 82f8a04e18
9 changed files with 223 additions and 5 deletions

View file

@ -0,0 +1,51 @@
Before:
Save g:ale_c_flawfinder_executable
Save g:ale_c_flawfinder_options
Save g:ale_c_flawfinder_minlevel
unlet! g:ale_c_flawfinder_executable
unlet! b:ale_c_flawfinder_executable
unlet! g:ale_c_flawfinder_options
unlet! b:ale_c_flawfinder_options
unlet! g:ale_c_flawfinder_minlevel
unlet! b:ale_c_flawfinder_minlevel
runtime ale_linters/c/flawfinder.vim
After:
unlet! b:ale_c_flawfinder_executable
unlet! b:ale_c_flawfinder_options
unlet! b:ale_c_flawfinder_minlevel
Restore
call ale#linter#Reset()
Execute(The flawfinder command should be correct):
AssertEqual
\ ale#Escape('flawfinder')
\ . ' -CDQS --minlevel=1 %t',
\ ale_linters#c#flawfinder#GetCommand(bufnr(''))
Execute(The minlevel of flawfinder should be configurable):
let b:ale_c_flawfinder_minlevel = 8
AssertEqual
\ ale#Escape('flawfinder')
\ . ' -CDQS --minlevel=8 %t',
\ ale_linters#c#flawfinder#GetCommand(bufnr(''))
Execute(Additional flawfinder options should be configurable):
let b:ale_c_flawfinder_options = ' --foobar'
AssertEqual
\ ale#Escape('flawfinder')
\ . ' -CDQS --foobar --minlevel=1 %t',
\ ale_linters#c#flawfinder#GetCommand(bufnr(''))
Execute(The flawfinder exectable should be configurable):
let b:ale_c_flawfinder_executable = 'foo/bar'
AssertEqual
\ ale#Escape('foo/bar')
\ . ' -CDQS --minlevel=1 %t',
\ ale_linters#c#flawfinder#GetCommand(bufnr(''))

View file

@ -0,0 +1,51 @@
Before:
Save g:ale_cpp_flawfinder_executable
Save g:ale_cpp_flawfinder_options
Save g:ale_cpp_flawfinder_minlevel
unlet! g:ale_cpp_flawfinder_executable
unlet! b:ale_cpp_flawfinder_executable
unlet! g:ale_cpp_flawfinder_options
unlet! b:ale_cpp_flawfinder_options
unlet! g:ale_cpp_flawfinder_minlevel
unlet! b:ale_cpp_flawfinder_minlevel
runtime ale_linters/cpp/flawfinder.vim
After:
unlet! b:ale_cpp_flawfinder_executable
unlet! b:ale_cpp_flawfinder_options
unlet! b:ale_cpp_flawfinder_minlevel
Restore
call ale#linter#Reset()
Execute(The flawfinder command should be correct):
AssertEqual
\ ale#Escape('flawfinder')
\ . ' -CDQS --minlevel=1 %t',
\ ale_linters#cpp#flawfinder#GetCommand(bufnr(''))
Execute(The minlevel of flawfinder should be configurable):
let b:ale_cpp_flawfinder_minlevel = 8
AssertEqual
\ ale#Escape('flawfinder')
\ . ' -CDQS --minlevel=8 %t',
\ ale_linters#cpp#flawfinder#GetCommand(bufnr(''))
Execute(Additional flawfinder options should be configurable):
let b:ale_cpp_flawfinder_options = ' --foobar'
AssertEqual
\ ale#Escape('flawfinder')
\ . ' -CDQS --foobar --minlevel=1 %t',
\ ale_linters#cpp#flawfinder#GetCommand(bufnr(''))
Execute(The flawfinder exectable should be configurable):
let b:ale_cpp_flawfinder_executable = 'foo/bar'
AssertEqual
\ ale#Escape('foo/bar')
\ . ' -CDQS --minlevel=1 %t',
\ ale_linters#cpp#flawfinder#GetCommand(bufnr(''))