2018-08-25 12:13:42 -04:00
|
|
|
" Description: clazy linter for cpp files (clang-based and Qt-oriented)
|
|
|
|
|
|
|
|
call ale#Set('cpp_clazy_executable', 'clazy-standalone')
|
|
|
|
" Set this option to check the checks clazy will apply.
|
|
|
|
call ale#Set('cpp_clazy_checks', ['level1'])
|
|
|
|
" Set this option to manually set some options for clazy.
|
|
|
|
" This will disable compile_commands.json detection.
|
|
|
|
call ale#Set('cpp_clazy_options', '')
|
|
|
|
call ale#Set('c_build_dir', '')
|
|
|
|
|
|
|
|
function! ale_linters#cpp#clazy#GetCommand(buffer) abort
|
|
|
|
let l:checks = join(ale#Var(a:buffer, 'cpp_clazy_checks'), ',')
|
|
|
|
let l:build_dir = ale#c#GetBuildDirectory(a:buffer)
|
|
|
|
|
|
|
|
" Get the extra options if we couldn't find a build directory.
|
|
|
|
let l:options = ale#Var(a:buffer, 'cpp_clazy_options')
|
|
|
|
|
|
|
|
return '%e'
|
|
|
|
\ . (!empty(l:checks) ? ' -checks=' . ale#Escape(l:checks) : '')
|
|
|
|
\ . (!empty(l:build_dir) ? ' -p ' . ale#Escape(l:build_dir) : '')
|
|
|
|
\ . (!empty(l:options) ? ' ' . l:options : '')
|
|
|
|
\ . ' %s'
|
|
|
|
endfunction
|
|
|
|
|
|
|
|
call ale#linter#Define('cpp', {
|
|
|
|
\ 'name': 'clazy',
|
|
|
|
\ 'output_stream': 'stderr',
|
2019-03-08 06:04:56 -05:00
|
|
|
\ 'executable': {b -> ale#Var(b, 'cpp_clazy_executable')},
|
|
|
|
\ 'command': function('ale_linters#cpp#clazy#GetCommand'),
|
2018-08-25 12:13:42 -04:00
|
|
|
\ 'callback': 'ale#handlers#gcc#HandleGCCFormat',
|
|
|
|
\ 'lint_file': 1,
|
|
|
|
\})
|