Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ALE misses -include flags in compile_commands.json #3317

Closed
Kimplul opened this issue Aug 27, 2020 · 1 comment
Closed

ALE misses -include flags in compile_commands.json #3317

Kimplul opened this issue Aug 27, 2020 · 1 comment
Labels

Comments

@Kimplul
Copy link
Contributor

Kimplul commented Aug 27, 2020

Information

VIM version

NVIM v0.4.4
Build type: Release

Operating System: Debian 10

What went wrong

ALE doesn't include -include flags found in compile_commands.json in the compilation command.
Example compile_commands.json:

[
    {
        "arguments": [
            "gcc",
            "-c",
            "-include",
            "/home/user/some/dir",
            "c.c"
        ],
        "directory": "/home/user/Documents/Projects/minimalale",
        "file": "c.c"
    }
]

Command ALE uses:

...
(executable check - success) gcc
(finished - exit code 1) ['/bin/bash', '-c', '''gcc'' -S -x c -o /dev/null -iquote ''/home/kimi/Documents/Projects/minimalale'' -std=c11 -Wall - < ''/tmp/nvimM9REtn/2/c.c''']
...

(Sidenote: I fixed this by adding \ || stridx(l:option, '-include') == 0 to line 136 in autoload/ale/c.vim, should I open up a PR?)

Reproducing the bug

  1. Use compile_commands.json file that has '-include' flags

:ALEInfo

 Current Filetype: c
Available Linters: ['cc', 'ccls', 'clangd', 'clangtidy', 'cppcheck', 'cquery', 'flawfinder']
   Linter Aliases:
'cc' -> ['gcc', 'clang']
  Enabled Linters: ['cc', 'ccls', 'clangd', 'clangtidy', 'cppcheck', 'cquery', 'flawfinder']
 Suggested Fixers: 
  'astyle' - Fix C/C++ with astyle.
  'clang-format' - Fix C/C++ and cuda files with clang-format.
  'clangtidy' - Fix C/C++ and ObjectiveC files with clang-tidy.
  'remove_trailing_lines' - Remove all blank lines at the end of a file.
  'trim_whitespace' - Remove all trailing whitespace characters at the end of every line.
  'uncrustify' - Fix C, C++, C#, ObjectiveC, ObjectiveC++, D, Java, Pawn, and VALA files with uncrustify.
 Linter Variables:

let g:ale_c_build_dir = ''
let g:ale_c_build_dir_names = ['build', 'bin']
let g:ale_c_cc_executable = 'gcc'
let g:ale_c_cc_options = '-std=c11 -Wall'
let g:ale_c_ccls_executable = 'ccls'
let g:ale_c_ccls_init_options = {}
let g:ale_c_clangd_executable = 'clangd'
let g:ale_c_clangd_options = ''
let g:ale_c_clangtidy_checks = []
let g:ale_c_clangtidy_executable = 'clang-tidy'
let g:ale_c_clangtidy_extra_options = ''
let g:ale_c_clangtidy_options = ''
let g:ale_c_cppcheck_executable = 'cppcheck'
let g:ale_c_cppcheck_options = '--enable=style'
let g:ale_c_cquery_cache_directory = '/home/kimi/.cache/cquery'
let g:ale_c_cquery_executable = 'cquery'
let g:ale_c_flawfinder_error_severity = 6
let g:ale_c_flawfinder_executable = 'flawfinder'
let g:ale_c_flawfinder_minlevel = 1
let g:ale_c_flawfinder_options = ''
let g:ale_c_parse_compile_commands = 1
let g:ale_c_parse_makefile = 0
 Global Variables:

let g:ale_cache_executable_check_failures = v:null
let g:ale_change_sign_column_color = 0
let g:ale_command_wrapper = ''
let g:ale_completion_delay = v:null
let g:ale_completion_enabled = 0
let g:ale_completion_max_suggestions = v:null
let g:ale_echo_cursor = 1
let g:ale_echo_msg_error_str = 'Error'
let g:ale_echo_msg_format = '%code: %%s'
let g:ale_echo_msg_info_str = 'Info'
let g:ale_echo_msg_warning_str = 'Warning'
let g:ale_enabled = 1
let g:ale_fix_on_save = 0
let g:ale_fixers = {'*': ['remove_trailing_lines', 'trim_whitespace'], 'python': ['autopep8']}
let g:ale_history_enabled = 1
let g:ale_history_log_output = 1
let g:ale_keep_list_window_open = 0
let g:ale_lint_delay = 200
let g:ale_lint_on_enter = 1
let g:ale_lint_on_filetype_changed = 1
let g:ale_lint_on_insert_leave = 1
let g:ale_lint_on_save = 1
let g:ale_lint_on_text_changed = 'normal'
let g:ale_linter_aliases = {}
let g:ale_linters = {}
let g:ale_linters_explicit = 0
let g:ale_list_vertical = 0
let g:ale_list_window_size = 10
let g:ale_loclist_msg_format = '%code: %%s'
let g:ale_lsp_root = {}
let g:ale_max_buffer_history_size = 20
let g:ale_max_signs = -1
let g:ale_maximum_file_size = v:null
let g:ale_open_list = 0
let g:ale_pattern_options = v:null
let g:ale_pattern_options_enabled = v:null
let g:ale_set_balloons = 0
let g:ale_set_highlights = 1
let g:ale_set_loclist = 1
let g:ale_set_quickfix = 0
let g:ale_set_signs = 1
let g:ale_sign_column_always = 0
let g:ale_sign_error = '>>'
let g:ale_sign_info = '--'
let g:ale_sign_offset = 1000000
let g:ale_sign_style_error = '>>'
let g:ale_sign_style_warning = '--'
let g:ale_sign_warning = '--'
let g:ale_sign_highlight_linenrs = 0
let g:ale_statusline_format = v:null
let g:ale_type_map = {}
let g:ale_use_global_executables = v:null
let g:ale_virtualtext_cursor = 0
let g:ale_warn_about_trailing_blank_lines = 1
let g:ale_warn_about_trailing_whitespace = 1
  Command History:

(executable check - success) gcc
(finished - exit code 0) ['/bin/bash', '-c', '''gcc'' -S -x c -o /dev/null -iquote ''/home/user/Documents/Projects/minimalale'' -std=c11 -Wall - < ''/tmp/nvimtyDk0v/2/c.c''']

<<<NO OUTPUT RETURNED>>>

(executable check - failure) ccls
(executable check - failure) clangd
(executable check - success) clang-tidy
(finished - exit code 1) ['/bin/bash', '-c', '''clang-tidy'' ''/home/user/Documents/Projects/minimalale/c.c'' -p ''/home/user/Documents/Projects/minimalale''']

<<<OUTPUT STARTS>>>
error: '/home/kimi/some/dir' file not found [clang-diagnostic-error]
<<<OUTPUT ENDS>>>

(executable check - failure) cppcheck
(executable check - failure) cquery
(executable check - failure) flawfinder
@Kimplul Kimplul added the bug label Aug 27, 2020
@w0rp w0rp closed this as completed in 1760577 Aug 27, 2020
@w0rp
Copy link
Member

w0rp commented Aug 27, 2020

I have fixed that now. The function for parsing flags tends to only pull in specific flags, to avoid running compilers with anything potentially dangerous.

@w0rp w0rp mentioned this issue Aug 27, 2020
12 tasks
jsit added a commit to jsit/ale that referenced this issue Aug 28, 2020
* master: (195 commits)
  Close dense-analysis#3285 - lint_file is now dynamic
  Close dense-analysis#3309 - Add b:ale_lint_delay
  Fix dense-analysis#3323 - Set default for g:ale_filename_mappings
  Add sql-lint to supported tools
  dense-analysis#3324 - Enable rls by default
  Set prettier working directory to where .prettierignore is (dense-analysis#3101)
  Fix dense-analysis#3319 - Force modifications to buffers
  Fix dense-analysis#3318 - Escape macros when parsing C flags
  Fix C flag parsing and tests on Windows
  Mention --fast, and document running Windows tests locally
  dense-analysis#3318 Refactor C flag parsing to set up for quoting arguments
  dense-analysis#3266 - Catch echo visual selection errors
  Label the test cases more clearly
  Fix dense-analysis#3317 - Parse -include from C flags
  Fix dense-analysis#3316 - Repeat -relative for ALERepeatSelection
  Fix dense-analysis#3307 - Handle compile_commands paths better
  Fix a typo
  dense-analysis#3314 - Tell people how to make new plug mappings
  dense-analysis#3312 - Just check if additionalTextEdits is non-empty
  Fix dense-analysis#3312 - Fix a false positive for auto imports
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants