Add cppcheck support

This commit is contained in:
Georgy Komarov 2019-10-23 22:46:30 +03:00
parent 8def5f1583
commit f6eff10118
1 changed files with 112 additions and 0 deletions

112
src/_cppcheck Normal file
View File

@ -0,0 +1,112 @@
#compdef cppcheck
# ------------------------------------------------------------------------------
# Copyright (c) 2019 Github zsh-users - http://github.com/zsh-users
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# * Neither the name of the zsh-users nor the
# names of its contributors may be used to endorse or promote products
# derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL ZSH-USERS BE LIABLE FOR ANY
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
# ------------------------------------------------------------------------------
# Description
# -----------
#
# Completion script for cppcheck -- a tool for static C/C++ code analysis (http://cppcheck.sourceforge.net)
#
# ------------------------------------------------------------------------------
# Authors
# -------
#
# * Georgy Komarov (https://github.com/jubnzv)
#
# ------------------------------------------------------------------------------
# Notes
# -----
#
# Created for Cppcheck version 1.90.
#
# ------------------------------------------------------------------------------
_cppcheck() {
local curcontext="$curcontext" state line
typeset -A opt_args
_arguments -C \
":command:->command" \
"*::options:->options" \
"--addon=[Execute addon]" \
"--cppcheck-build-dir=[Analysis output directory]:directory:_files -/" \
"--check-config[Check cppcheck configuration]" \
"--check-library[Show information when library files have incomplete info]" \
"--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]" \
"--dump[Dump xml data for each translation unit]" \
"-D[Define preprocessor symbol]" \
"-U[Undefine preprocessor symbol]" \
"-E[Print preprocessor output on stdout and don't do any further processing]" \
"--enable[Enable additional checks]:id:(all warning style performance portability information unusedFunction missingInclude)" \
"--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-list=[Specify the files to check in a text file]:_files" \
{-f,--force}"[Force checking of all configurations in files]" \
{-h,--help}"[Print this 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]" \
"-l[No new threads should be started if the load average is exceeds this value]" \
{-x,--language=}"[Forces cppcheck to check all files as the given language]:language:(c c++)" \
"--cfg=[Load file that contains information about types and functions]" \
"--max-ctu-depth=[Maximum depth in whole program analysis]" \
"--output-file=[File to save results]:file:_files" \
"--project=[Run Cppcheck on project]:file:_files" \
"--max-configs=[Maximum number of configurations to check in a file]" \
"--platform=[Set platform specific types and sizes]:platforms:(unix32 unix64 win32A win32W win64 native unspecified)" \
"--plist-output=[Generate Clang-plist output files in folder]:_files" \
{-q,--quiet}"[Do not show progress reports]" \
{-rp,--relative-paths}"[Use relative paths in output]" \
{-rp,--relative-paths}"=[Use relative paths in output (separated with ;)]:_files" \
"--report-progress[Report progress messages while checking a file]" \
"--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]:_files" \
"--template=[Format the error messages]" \
"--template=[Format the error message location]" \
{-v,--verbose}"[Output more detailed error information]" \
"--version[Print out version number]" \
"--xml[Write results in xml format to stderr]" \
"--xml-version=[Select the XML file version]"
}
_cppcheck "$@"
# Local Variables:
# mode: Shell-Script
# sh-indentation: 2
# indent-tabs-mode: nil
# sh-basic-offset: 2
# End:
# vim: ft=zsh sw=2 ts=2 et