Skip to content

[Error detected] flawfinder ale_cpp_flawfinder_options misses space #5155

Description

@Spixmaster

Information

VIM version

VIM - Vi IMproved 9.2 (2026 Feb 14 kompiliert am Jul 24 2026 20:21:32)
Inklusive der Patches: 1-849

Operating System:

Arch Linux

What went wrong

Setting ale_cpp_flawfinder_options needs a prefix space to work.

Reproducing the bug

  1. let g:ale_cpp_flawfinder_options = ' --allowlink --followdotdir'
  2. produces unrecognised option -CDQS

Error source

return '%e -CDQS'

:ALEInfo

Expand Current Filetype: cpp Available Linters: ['astgrep', 'cc', 'ccls', 'clangcheck', 'clangd', 'clangtidy', 'clazy', 'cppcheck', 'cpplint', 'cquery', 'cspell', 'flawfinder'] Linter Aliases: 'cc' -> ['gcc', 'clang', 'g++', 'clang++'] Enabled Linters: ['clangtidy', 'flawfinder'] Ignored Linters: [] Suggested Fixers: 'ast-grep' - Apply ast-grep rules. 'astyle' - Fix C/C++ with astyle. 'clang-format' - Fix C, C++, C#, CUDA, Java, JavaScript, JSON, ObjectiveC and Protobuf 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. 'replace_emdash' - Replace em dash with -- ASCII characters. '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_cpp_clangtidy_checks = []
let g:ale_cpp_clangtidy_executable = 'clang-tidy'
let g:ale_cpp_clangtidy_extra_options = '--config-file=/home/matheus/.config/clang/clang-tidy.yaml'
let g:ale_cpp_clangtidy_options = ''
let g:ale_cpp_flawfinder_executable = 'flawfinder'
let g:ale_cpp_flawfinder_minlevel = 0
let g:ale_cpp_flawfinder_options = '--allowlink --followdotdir'

Global Variables:
let g:ale_cache_executable_check_failures = v:null
let g:ale_change_sign_column_color = v:false
let g:ale_command_wrapper = ''
let g:ale_completion_delay = v:null
let g:ale_completion_enabled = v:false
let g:ale_completion_max_suggestions = v:null
let g:ale_disable_lsp = 'auto'
let g:ale_echo_cursor = v:true
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 = 1
let g:ale_fixers = {'vim': ['remove_trailing_lines', 'trim_whitespace'], 'typescript': ['dprint', 'remove_trailing_lines', 'trim_whitespace'], 'cmake': ['cmakeformat', 'remove_trailing_lines', 'trim_whitespace'], 'html': ['remove_trailing_lines', 'tidy', 'trim_whitespace'], 'cpp': ['clang-format', 'remove_trailing_lines', 'trim_whitespace'], 'markdown': ['dprint', 'remove_trailing_lines', 'trim_whitespace'], 'lua': ['remove_trailing_lines', 'stylua', 'trim_whitespace'], 'yaml': ['remove_trailing_lines', 'trim_whitespace', 'yamlfmt'], 'po': ['remove_trailing_lines', 'trim_whitespace'], 'jinja': ['remove_trailing_lines', 'tidy', 'trim_whitespace'], 'bib': ['bibclean', 'remove_trailing_lines', 'trim_whitespace'], 'tex': ['remove_trailing_lines', 'tex-fmt', 'trim_whitespace'], 'zsh': ['remove_trailing_lines', 'shfmt', 'trim_whitespace'], 'toml': ['remove_trailing_lines', 'tombi_format', 'trim_whitespace'], 'PKGBUILD': ['remove_trailing_lines', 'shfmt', 'trim_whitespace'], 'sh': ['remove_trailing_lines', 'shfmt', 'trim_whitespace'], 'systemd': ['remove_trailing_lines', 'trim_whitespace'], 'gitcommit': ['remove_trailing_lines', 'trim_whitespace'], 'make': ['remove_trailing_lines', 'trim_whitespace'], 'css': ['dprint', 'remove_trailing_lines', 'trim_whitespace'], 'xml': ['remove_trailing_lines', 'trim_whitespace', 'xmllint'], 'jsonc': ['dprint', 'remove_trailing_lines', 'trim_whitespace'], 'json': ['dprint', 'remove_trailing_lines', 'trim_whitespace'], 'sql': ['remove_trailing_lines', 'sqlfluff', 'trim_whitespace'], '*': ['remove_trailing_lines', 'trim_whitespace'], 'desktop': ['remove_trailing_lines', 'trim_whitespace']}
let g:ale_history_enabled = v:true
let g:ale_info_default_mode = 'preview'
let g:ale_history_log_output = v:true
let g:ale_keep_list_window_open = 0
let g:ale_lint_delay = 200
let g:ale_lint_on_enter = v:true
let g:ale_lint_on_filetype_changed = v:true
let g:ale_lint_on_insert_leave = v:true
let g:ale_lint_on_save = v:true
let g:ale_lint_on_text_changed = 'normal'
let g:ale_linter_aliases = {'jinja': ['html', 'jinja'], 'jsonc': ['json'], 'zsh': ['sh'], 'html': ['html', 'jinja'], 'PKGBUILD': ['sh']}
let g:ale_linters = {'vim': ['vint'], 'typescript': ['biome'], 'cmake': ['cmake_lint', 'cmakelint'], 'html': ['htmlhint', 'j2lint', 'tidy'], 'cpp': ['clangtidy', 'flawfinder'], 'markdown': ['rumdl'], 'lua': ['luac', 'selene'], 'yaml': ['yamllint'], 'po': ['msgfmt'], 'jinja': ['j2lint', 'tidy'], 'bib': ['bibclean'], 'tex': ['chktex'], 'zsh': ['shell', 'shellcheck'], 'toml': [], 'PKGBUILD': ['shell', 'shellcheck'], 'sh': ['shell', 'shellcheck'], 'systemd': ['systemd_analyze'], 'gitcommit': ['gitlint'], 'make': ['checkmake'], 'xml': ['xmllint'], 'jsonc': ['biome'], 'json': ['biome'], 'sql': ['sqlfluff'], 'css': ['stylelint'], 'desktop': ['desktop_file_validate']}
let g:ale_linters_explicit = 1
let g:ale_linters_ignore = {}
let g:ale_list_vertical = v:false
let g:ale_list_window_size = 10
let g:ale_loclist_msg_format = '%code: %%s'
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 = v:false
let g:ale_pattern_options = v:null
let g:ale_pattern_options_enabled = v:null
let g:ale_root = {}
let g:ale_set_balloons = v:false
let g:ale_set_highlights = v:true
let g:ale_set_loclist = v:true
let g:ale_set_quickfix = v:false
let g:ale_set_signs = v:true
let g:ale_sign_column_always = v:false
let g:ale_sign_error = 'E'
let g:ale_sign_info = 'I'
let g:ale_sign_offset = 1000000
let g:ale_sign_style_error = 'E'
let g:ale_sign_style_warning = 'W'
let g:ale_sign_warning = 'W'
let g:ale_sign_highlight_linenrs = v:false
let g:ale_type_map = {}
let g:ale_use_neovim_diagnostics_api = v:false
let g:ale_use_global_executables = v:null
let g:ale_virtualtext_cursor = 0
let g:ale_warn_about_trailing_blank_lines = v:true
let g:ale_warn_about_trailing_whitespace = v:true

Command History:

(executable check - success) flawfinder
(finished - exit code 16) ['/bin/zsh', '-c', '''flawfinder'' -CDQS--allowlink --followdotdir --minlevel=0 ''/tmp/vJQr8bs/0/a.cpp''']

<<>>
*** getopt error: option -- not recognized

flawfinder [--help | -h] [--version] [--listrules]
[--allowlink] [--followdotdir] [--nolink]
[--exclude PATTERN]
[--patch filename | -P filename]
[--inputs | -I] [--minlevel X | -m X]
[--falsepositive | -F] [--neverignore | -n]
[--context | -c] [--columns | -C] [--dataonly | -D]
[--html | -H] [--immediate | -i] [--sarif | --sonar]
[--singleline | -S] [--omittime] [--quiet | -Q]
[--loadhitlist F] [--savehitlist F] [--diffhitlist F]
[--] [source code file or source root directory]+

The options cover various aspects of flawfinder as follows.

Documentation:
--help | -h Show this usage help.
--version Show version number.
--listrules List the rules in the ruleset (rule database).

Selecting Input Data:
--allowlink Allow symbolic links.
--followdotdir
Follow directories whose names begin with ".".
Normally they are ignored.
--nolink Skip symbolic links (ignored).
--exclude PATTERN
Skip files or directories whose path matches PATTERN
(a glob pattern matched against the full path).
May be repeated to exclude multiple patterns.
Example: --exclude '/third_party/'
--patch F | -P F
Display information related to the patch F
(patch must be already applied).

Selecting Hits to Display:
--inputs | -I
Show only functions that obtain data from outside the program;
this also sets minlevel to 0.
-m X | --minlevel=X
Set minimum risk level to X for inclusion in hitlist. This
can be from 0 (no risk'') to 5 (maximum risk''); the
default is 1.
--falsepositive | -F
Do not include hits that are likely to be false positives.
Currently, this means that function names are ignored if
they're not followed by "(", and that declarations of char-
acter arrays aren't noted. Thus, if you have use a vari-
able named "access" everywhere, this will eliminate refer-
ences to this ordinary variable. This isn't the default,
because this also increases the likelihood of missing
important hits; in particular, function names in #define
clauses and calls through function pointers will be missed.
--neverignore | -n
Never ignore security issues, even if they have an ``ignore''
directive in a comment.
--regex PATTERN | -e PATTERN
Only report hits that match the regular expression PATTERN.

Selecting Output Format:
--columns | -C
Show the column number (as well as the file name and
line number) of each hit; this is shown after the line number
by adding a colon and the column number in the line (the first
character in a line is column number 1).
--context | -c
Show context (the line having the "hit"/potential flaw)
--dataonly | -D
Don't display the headers and footers of the analysis;
use this along with --quiet to get just the results.
--html | -H
Display as HTML output.
--immediate | -i
Immediately display hits (don't just wait until the end).
--sarif Generate output in SARIF format.
--sonar Generate output in SonarQube format.
--singleline | -S
Single-line output.
--omittime Omit time to run.
--quiet | -Q
Don't display status information (i.e., which files are being
examined) while the analysis is going on.
--error-level=LEVEL
Return a nonzero (false) error code if there is at least one
hit of LEVEL or higher. If a diffhitlist is provided,
hits noted in it are ignored.
This option can be useful within a continuous integration script,
especially if you mark known-okay lines as "flawfinder: ignore".
Usually you want level to be fairly high, such as 4 or 5.
By default, flawfinder returns 0 (true) on a successful run.

Hitlist Management:
--savehitlist=F
Save all hits (the "hitlist") to F.
--loadhitlist=F
Load hits from F instead of analyzing source programs.
Only use hitlists you created; untrusted hitlists could
contain misleading results.
--diffhitlist=F
Show only hits (loaded or analyzed) not in F.
Only use hitlists you created; untrusted hitlists could
contain misleading results.

For more information, please consult the manpage or available
documentation.

<<>>

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions