diff --git a/ale_linters/cpp/clangcheck.vim b/ale_linters/cpp/clangcheck.vim index 936204d8..4b6169c8 100644 --- a/ale_linters/cpp/clangcheck.vim +++ b/ale_linters/cpp/clangcheck.vim @@ -19,10 +19,14 @@ function! ale_linters#cpp#clangcheck#GetCommand(buffer) abort let l:build_dir = ale#c#FindCompileCommands(a:buffer) endif + " The extra arguments in the command are used to prevent .plist files from + " being generated. These are only added if no build directory can be + " detected. return ale#Escape(ale_linters#cpp#clangcheck#GetExecutable(a:buffer)) \ . ' -analyze %s' \ . (!empty(l:user_options) ? ' ' . l:user_options : '') \ . (!empty(l:build_dir) ? ' -p ' . ale#Escape(l:build_dir) : '') + \ . (empty(l:build_dir) ? ' -extra-arg -Xanalyzer -extra-arg -analyzer-output=text' : '') endfunction call ale#linter#Define('cpp', { diff --git a/test/command_callback/test_cpp_clangcheck_command_callbacks.vader b/test/command_callback/test_cpp_clangcheck_command_callbacks.vader index e51ba3d2..34b87fc6 100644 --- a/test/command_callback/test_cpp_clangcheck_command_callbacks.vader +++ b/test/command_callback/test_cpp_clangcheck_command_callbacks.vader @@ -26,20 +26,28 @@ Execute(The executable should be configurable): Execute(The executable should be used in the command): AssertEqual - \ ale#Escape('clang-check') . ' -analyze %s', + \ ale#Escape('clang-check') + \ . ' -analyze %s' + \ . ' -extra-arg -Xanalyzer -extra-arg -analyzer-output=text', \ ale_linters#cpp#clangcheck#GetCommand(bufnr('')) let b:ale_cpp_clangcheck_executable = 'foobar' + " The extra arguments in the command are used to prevent .plist files from + " being generated. AssertEqual - \ ale#Escape('foobar') . ' -analyze %s', + \ ale#Escape('foobar') + \ . ' -analyze %s' + \ . ' -extra-arg -Xanalyzer -extra-arg -analyzer-output=text', \ ale_linters#cpp#clangcheck#GetCommand(bufnr('')) Execute(The options should be configurable): let b:ale_cpp_clangcheck_options = '--something' AssertEqual - \ ale#Escape('clang-check') . ' -analyze %s --something', + \ ale#Escape('clang-check') + \ . ' -analyze %s --something' + \ . ' -extra-arg -Xanalyzer -extra-arg -analyzer-output=text', \ ale_linters#cpp#clangcheck#GetCommand(bufnr('')) Execute(The build directory should be used when set):