The GNU standard for long command line options is --option=value.
All other long options of cppcheck support this, so add it for
the template option, too.
--template xxx can be made obsolete later.
Should the documentation and tests also be changed now?
Signed-off-by: Stefan Weil <sw@weilnetz.de>
Keep a list of already seen directories.
The "udev" project f.e. has a directory with
a subdirectory that contains a symbolic link
back to the parent directory.
This is ment to be used for debugging false positive errors in Cppcheck.
Current implementation tries two alternatives. Without all headers or with all headers and prints out the option with
less code. In future versions this could try with individual headers or group of header files.
The "ExtraVersion" can be used for things like Git commit Id,
release tag (version control), release date etc. If the string
is empty, nothing is printed.
New help text emphasizes we are ignoring/excluding source files.
The header files (include via source files) are not touched.
Ticket: #2965 (CLI: need better description for -i option (applies only to source files))
Filename exclusion (with -i) works only for the source files.
Print a warning if user tries to exclude header file. The warning
instructs user to use --suppress for ignoring warnings from the
header files.
Initially I added logic that checked if excluded path was a file
we would accept. This works for source files, but when file with
"unknown" extension was given it was determined as a directory
name and ending slash was added. E.g. -ifile.h would end up
having ignored path file.h/.
This commit adds per-platform checks if the path points to the
file and if the file also exists.
We don't want to keep these deprecated options for ever. So lets
print a clear warning for the users and give also specific release
number when they will be removed. Users have a plenty of time to
update their scripts and environments before removal.
Ticket: #2515 (Print warning for deprecated command line options)
When user wants to see only errors printed (--quiet in CLI) we
must obey that. And not print unmatchedSuppressions list.
Ticket: #2895 (Cannot suppress unmatchedSuppression reports)
The ErrorLogger::reportStatus() is not lib code interface. The CLI
code does the looping through file list and gives one file at a
time for the core code. Hence lib has no any idea about the
progress and it can't provide such information.
Also the recent commit (6d858b6) caused a GUI build failure by
adding CLI code dependency to GUI. Which is big no-no.
This is admittedly a hack. But it allow us to build all modules
again.
Unify usage and API of CppCheck class. Allow only one file checked
at a time, instead of list of files. Clients can then handle file
lists more naturally and as they see fit. Also clients have better
knowledge of how checking status should be handled.
The single-threaded CLI checking was only one using the file list.
Other clients were giving files (to list) one file at a time.
When doing single-threaded checking give checked files to Cppcheck
class one file at a time. Like GUI and multithreaded checking
already do. This unifies how we call Cppcheck class from different
clients.
The source files for the class library "TinyXML" will only be included into
the build of the command line interface if the library "PCRE" was found before.
Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
The support for check rules will be automatically included in the generated
software if build settings were accordingly selected for PCRE.
https://sourceforge.net/apps/trac/cppcheck/ticket/2679
Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
Fixes#2656 (-i Give path to ignore does not ignore if start of the
path is different than checked path)
Simplify paths given as -i options. This makes it easier to match
the paths as simplifying removes redundant parts.
Ticket #2686 (regression/bug in path handling)
There are situations that paths given to command line can contain
quotation marks. In normal situations shell removes them. For
these cases they don't get removed add code to check paths from
quotation marks and remove them.