diff --git a/src/_cppcheck b/src/_cppcheck index 412f522..33ad96a 100644 --- a/src/_cppcheck +++ b/src/_cppcheck @@ -1,4 +1,4 @@ -#compdef cppcheck +#compdef cppcheck cppcheck-htmlreport # ------------------------------------------------------------------------------ # Copyright (c) 2019 Github zsh-users - https://github.com/zsh-users # All rights reserved. @@ -48,83 +48,100 @@ _cppcheck_files() { _path_files -/ -g "*.(c|cpp|cxx|h|hpp|C)" } -_cppcheck() { - local -a check_ids=( - all warning style performance portability information unusedFunction missingInclude - ) - local -a platforms=( - unix32 unix64 win32A win32W win64 avr8 elbrus-e1cp pic8 pic8-enhanced pic16 mips32 native unspecified - ) - local -a coding_standards=( - normal autosar cert-c-2016 cert-cpp-2016 misra-c-2012 misra-c-2023 misra-c-2025 - misra-cpp-2008 misra-cpp-2023 - ) - - _arguments \ - "--addon=[Execute addon]" \ - "--addon-python=[Specify the python interpreter]: :_files" \ - "--cppcheck-build-dir=[Analysis output directory]:directory:_files -/" \ - "--check-config[Check cppcheck configuration]" \ - "--check-level=[Configure how much valueflow analysis you want]:level:(reduced normal exhaustive)" \ - "--check-library[Show information when library files have incomplete info]" \ - "--checkers-report=[Write a report of all the active checkers to the given file]:file:_files" \ - "--clang=[Use clang parser instead of the builtin Cppcheck parser]: :_files" \ - "--config-exclude=[Path to be excluded from configuration checking]:directory:_files -/" \ - "--config-exclude-files=[A file that contains a list of config-excludes]:file:_files" \ - "--doc[Print a list of all available checks]" \ - '*--disable=[Disable individual checks]:id:($check_ids)' \ - "--dump[Dump xml data for each translation unit]" \ - "*-D[Define preprocessor symbol]:symbol" \ - "-E[Print preprocessor output on stdout and don't do any further processing]" \ - '--enable=[Enable additional checks]:id:($check_ids)' \ - "--error-exitcode=[Integer to return if errors are found]" \ - "--errorlist[Print a list of all the error messages in XML format]" \ - "--exitcode-suppressions=[Used when certain messages should be displayed but should not cause a non-zero exitcode]:_files" \ - "*--file-filter=[Analyze only those files matching the given filter str]:filter" \ - "--file-list=[Specify the files to check in a text file]:file:_files" \ - "(-f --force)"{-f,--force}"[Force checking of all configurations in files]" \ - "(--fsigned-char --funsigned-char)--fsigned-char[Treat char type as signed]" \ - "(--fsigned-char --funsigned-char)--funsigned-char[Treat char type as unsigned]" \ - "(- 1 *)"{-h,--help}"[Print help]" \ - "*-I[A file that contains a list of config-excludes]:directory:_files -/" \ - "--include-file=[Specify directory paths to search for included header files in a text file]:file:_files" \ - "--include=[Force inclusion of a file before the checked file]:file:_files" \ - "-i[Give a source file or source file directory to exclude from the check]:directory or file:_files" \ - "--inconclusive[Report even though the analysis is inconclusive]" \ - "--inline-suppr[Enable inline suppressions]" \ - "-j[Number of threads to do the checking simultaneously]::num" \ - "-l[No new threads should be started if the load average is exceeds this value]::load_avg" \ - {-x,--language=}"[Forces cppcheck to check all files as the given language]:language:(c c++)" \ - "--library=[Load config file that contains information about types and functions]:config:_files" \ - "--max-configs=[Maximum number of configurations to check in a file]" \ - "--max-ctu-depth=[Maximum depth in whole program analysis]:num" \ - "--output-file=[File to save results]:file:_files" \ - "--output-format=[Specify the output format]:format:(text sarif xml xmlv2 xmlv3)" \ - '--platform=[Specified platform specific types and sizes]:platform:($platforms)' \ - "--plist-output=[Generate Clang-plist output files in folder]:file:_files" \ - "--project=[Run Cppcheck on project]:file:_files" \ - "--project-configuration=[Limit the configuration cppcheck should check]:configuration" \ - "(-q --quiet)"{-q,--quiet}"[Do not show progress reports]" \ - {-rp,--relative-paths}"=[Use relative paths in output (separated with ;)]:file:_files" \ - "--report-progress[Report progress messages while checking a file]" \ - '--report-type=[Add guideline and classification fields for specified coding standard]:standard:($coding_standards)' \ - "--rule=[Match regular expression]:rule" \ - "--rule-file=[Use given rule file]:file:_files" \ - "--showtime=[show timing information]:type:(none file file-total summary top5_file top5_summary)" \ - "--std=[Set standard]:std:(c89 c99 c11 c++03 c++11 c++14 c++17 c++20)" \ - "--suppress=[Suppress warnings (format: \[error id\]:\[filename\]:\[line\])]" \ - "--suppressions-list=[Suppress warnings listed in the file]:file:_files" \ - "--suppress-xml=[Suppress warnings listed in a xml file]:file:_files" \ - "--template=[Format the error messages]:text" \ - "--template-location=[Format the error message location]:text" \ - "*-U[Undefine preprocessor symbol]:symbol" \ - "(-v --verbose)"{-v,--verbose}"[Output more detailed error information]" \ - "--version[Print out version number]" \ - "--xml[Write results in xml format to stderr]" \ - "*: :_cppcheck_files" +_cppcheck_author_information() { + local -a info=(name email date) + _values -s ',' 'info' $info } -_cppcheck "$@" +local -a check_ids=( + all warning style performance portability information unusedFunction missingInclude +) +local -a platforms=( + unix32 unix64 win32A win32W win64 avr8 elbrus-e1cp pic8 pic8-enhanced pic16 mips32 native unspecified +) +local -a coding_standards=( + normal autosar cert-c-2016 cert-cpp-2016 misra-c-2012 misra-c-2023 misra-c-2025 + misra-cpp-2008 misra-cpp-2023 +) + +case $service in + (cppcheck-htmlreport) + _arguments \ + '(- *)'{-h,--help}'[show help message and exit]' \ + '--title[Title of the project]:title' \ + '*--file[cppcheck xml output file to read defects from(default stdin)]:file:_files' \ + '--checkers-report-file[cppcheck checkers report file]:file:_files' \ + '--report-dir[Directory where the HTML report content is written]:dir:_files -/' \ + '--source-dir[Base directory where source code files can be found or a URL to a remote]:dir:_files -/' \ + '--add-author-information[Blame information to include(default "name,email,date")]:info:_cppcheck_author_information' \ + '--source-encoding[Encoding of source code]:encoding' \ + '--blame-options[Blame options which you can use to get author and author mail]:options' + ;; + (cppcheck) + _arguments \ + "--addon=[Execute addon]" \ + "--addon-python=[Specify the python interpreter]: :_files" \ + "--cppcheck-build-dir=[Analysis output directory]:directory:_files -/" \ + "--check-config[Check cppcheck configuration]" \ + "--check-level=[Configure how much valueflow analysis you want]:level:(reduced normal exhaustive)" \ + "--check-library[Show information when library files have incomplete info]" \ + "--checkers-report=[Write a report of all the active checkers to the given file]:file:_files" \ + "--clang=[Use clang parser instead of the builtin Cppcheck parser]: :_files" \ + "--config-exclude=[Path to be excluded from configuration checking]:directory:_files -/" \ + "--config-exclude-files=[A file that contains a list of config-excludes]:file:_files" \ + "--doc[Print a list of all available checks]" \ + '*--disable=[Disable individual checks]:id:($check_ids)' \ + "--dump[Dump xml data for each translation unit]" \ + "*-D[Define preprocessor symbol]:symbol" \ + "-E[Print preprocessor output on stdout and don't do any further processing]" \ + '--enable=[Enable additional checks]:id:($check_ids)' \ + "--error-exitcode=[Integer to return if errors are found]" \ + "--errorlist[Print a list of all the error messages in XML format]" \ + "--exitcode-suppressions=[Used when certain messages should be displayed but should not cause a non-zero exitcode]:_files" \ + "*--file-filter=[Analyze only those files matching the given filter str]:filter" \ + "--file-list=[Specify the files to check in a text file]:file:_files" \ + "(-f --force)"{-f,--force}"[Force checking of all configurations in files]" \ + "(--fsigned-char --funsigned-char)--fsigned-char[Treat char type as signed]" \ + "(--fsigned-char --funsigned-char)--funsigned-char[Treat char type as unsigned]" \ + "(- 1 *)"{-h,--help}"[Print help]" \ + "*-I[A file that contains a list of config-excludes]:directory:_files -/" \ + "--include-file=[Specify directory paths to search for included header files in a text file]:file:_files" \ + "--include=[Force inclusion of a file before the checked file]:file:_files" \ + "-i[Give a source file or source file directory to exclude from the check]:directory or file:_files" \ + "--inconclusive[Report even though the analysis is inconclusive]" \ + "--inline-suppr[Enable inline suppressions]" \ + "-j[Number of threads to do the checking simultaneously]::num" \ + "-l[No new threads should be started if the load average is exceeds this value]::load_avg" \ + {-x,--language=}"[Forces cppcheck to check all files as the given language]:language:(c c++)" \ + "--library=[Load config file that contains information about types and functions]:config:_files" \ + "--max-configs=[Maximum number of configurations to check in a file]" \ + "--max-ctu-depth=[Maximum depth in whole program analysis]:num" \ + "--output-file=[File to save results]:file:_files" \ + "--output-format=[Specify the output format]:format:(text sarif xml xmlv2 xmlv3)" \ + '--platform=[Specified platform specific types and sizes]:platform:($platforms)' \ + "--plist-output=[Generate Clang-plist output files in folder]:file:_files" \ + "--project=[Run Cppcheck on project]:file:_files" \ + "--project-configuration=[Limit the configuration cppcheck should check]:configuration" \ + "(-q --quiet)"{-q,--quiet}"[Do not show progress reports]" \ + {-rp,--relative-paths}"=[Use relative paths in output (separated with ;)]:file:_files" \ + "--report-progress[Report progress messages while checking a file]" \ + '--report-type=[Add guideline and classification fields for specified coding standard]:standard:($coding_standards)' \ + "--rule=[Match regular expression]:rule" \ + "--rule-file=[Use given rule file]:file:_files" \ + "--showtime=[show timing information]:type:(none file file-total summary top5_file top5_summary)" \ + "--std=[Set standard]:std:(c89 c99 c11 c++03 c++11 c++14 c++17 c++20)" \ + "--suppress=[Suppress warnings (format: \[error id\]:\[filename\]:\[line\])]" \ + "--suppressions-list=[Suppress warnings listed in the file]:file:_files" \ + "--suppress-xml=[Suppress warnings listed in a xml file]:file:_files" \ + "--template=[Format the error messages]:text" \ + "--template-location=[Format the error message location]:text" \ + "*-U[Undefine preprocessor symbol]:symbol" \ + "(-v --verbose)"{-v,--verbose}"[Output more detailed error information]" \ + "--version[Print out version number]" \ + "--xml[Write results in xml format to stderr]" \ + "*: :_cppcheck_files" + ;; +esac # Local Variables: # mode: Shell-Script