f17b74679f
* fix cppcheck for 1.89+, and add column support In cppcheck 1.89 the output changed to be more like GCC. This commit forces any version of cppcheck to output in that same format. This also allows for ALE to pick up the linter's column information * Add parameters to tests. Vader passes. * Fix c cppcheck for v1.89
68 lines
2.7 KiB
Text
68 lines
2.7 KiB
Text
Before:
|
|
call ale#assert#SetUpLinterTest('c', 'cppcheck')
|
|
let b:command_tail = ' -q --language=c --template=''{file}:{line}:{column}: {severity}:{inconclusive:inconclusive:} {message} [{id}]\\n{code}'' --enable=style -I' . ale#Escape(ale#path#Simplify(g:dir)) .' %t'
|
|
|
|
After:
|
|
" Remove a test file we might open for some tests.
|
|
if &buftype != 'nofile'
|
|
:q!
|
|
set buftype=nofile
|
|
endif
|
|
|
|
unlet! b:command_tail
|
|
call ale#assert#TearDownLinterTest()
|
|
|
|
Execute(The executable should be configurable):
|
|
AssertLinter 'cppcheck', ale#Escape('cppcheck') . b:command_tail
|
|
|
|
let b:ale_c_cppcheck_executable = 'foobar'
|
|
|
|
AssertLinter 'foobar', ale#Escape('foobar') . b:command_tail
|
|
|
|
Execute(cppcheck for C should detect compile_commands.json files):
|
|
call ale#test#SetFilename('cppcheck_paths/one/foo.c')
|
|
|
|
AssertLinter 'cppcheck',
|
|
\ ale#path#CdString(ale#path#Simplify(g:dir . '/cppcheck_paths/one'))
|
|
\ . ale#Escape('cppcheck')
|
|
\ . ' -q --language=c'
|
|
\ . ' --template=''{file}:{line}:{column}: {severity}:{inconclusive:inconclusive:} {message} [{id}]\\n{code}'''
|
|
\ . ' --project=' . ale#Escape('compile_commands.json')
|
|
\ . ' --enable=style %t'
|
|
|
|
Execute(cppcheck for C should detect compile_commands.json files in build directories):
|
|
call ale#test#SetFilename('cppcheck_paths/with_build_dir/foo.cpp')
|
|
|
|
AssertLinter 'cppcheck',
|
|
\ ale#path#CdString(ale#path#Simplify(g:dir . '/cppcheck_paths/with_build_dir'))
|
|
\ . ale#Escape('cppcheck')
|
|
\ . ' -q --language=c'
|
|
\ . ' --template=''{file}:{line}:{column}: {severity}:{inconclusive:inconclusive:} {message} [{id}]\\n{code}'''
|
|
\ . ' --project=' . ale#Escape(ale#path#Simplify('build/compile_commands.json'))
|
|
\ . ' --enable=style %t'
|
|
|
|
Execute(cppcheck for C should include file dir if compile_commands.json file is not found):
|
|
call ale#test#SetFilename('cppcheck_paths/foo.cpp')
|
|
|
|
AssertLinter 'cppcheck',
|
|
\ ale#Escape('cppcheck')
|
|
\ . ' -q --language=c'
|
|
\ . ' --template=''{file}:{line}:{column}: {severity}:{inconclusive:inconclusive:} {message} [{id}]\\n{code}'''
|
|
\ . ' --enable=style'
|
|
\ . ' -I' . ale#Escape(ale#path#Simplify(g:dir . '/cppcheck_paths'))
|
|
\ . ' %t'
|
|
|
|
Execute(cppcheck for C should ignore compile_commands.json file if buffer is modified):
|
|
call ale#test#SetFilename('cppcheck_paths/one/foo.c')
|
|
|
|
set buftype=
|
|
set modified
|
|
|
|
AssertLinter 'cppcheck',
|
|
\ ale#path#CdString(ale#path#Simplify(g:dir . '/cppcheck_paths/one'))
|
|
\ . ale#Escape('cppcheck')
|
|
\ . ' -q --language=c'
|
|
\ . ' --template=''{file}:{line}:{column}: {severity}:{inconclusive:inconclusive:} {message} [{id}]\\n{code}'''
|
|
\ . ' --enable=style'
|
|
\ . ' -I' . ale#Escape(ale#path#Simplify(g:dir . '/cppcheck_paths/one'))
|
|
\ . ' %t'
|