Little improvements with cli messages and added new '--template' mode: 'edit'.
This option makes it possible opening correctly some editors like 'gedit' or 'vim' by copy-pasting the filename and the line to the command sequence.
This commit is contained in:
parent
42fd4e2f52
commit
0bb1ad8782
|
@ -117,8 +117,8 @@ bool CmdLineParser::ParseFromArgs(int argc, const char* const argv[])
|
|||
|
||||
// Enable all checks - will be removed in future
|
||||
else if (strcmp(argv[i], "-a") == 0 || strcmp(argv[i], "--all") == 0) {
|
||||
PrintMessage("cppcheck: -a/--all option is deprecated and will be removed in 1.55 release.");
|
||||
PrintMessage("cppcheck: please use --enable=all instead.");
|
||||
PrintMessage("cppcheck: '-a/--all' option is deprecated and will be removed in 1.55 release.");
|
||||
PrintMessage("cppcheck: please use '--enable=all' instead.");
|
||||
}
|
||||
|
||||
// Inconclusive checking (still in testing phase)
|
||||
|
@ -127,8 +127,8 @@ bool CmdLineParser::ParseFromArgs(int argc, const char* const argv[])
|
|||
|
||||
// Checking coding style - will be removed in the future
|
||||
else if (strcmp(argv[i], "-s") == 0 || strcmp(argv[i], "--style") == 0) {
|
||||
PrintMessage("cppcheck: -s/--style option is deprecated and will be removed in 1.55 release.");
|
||||
PrintMessage("cppcheck: please use --enable=style instead.");
|
||||
PrintMessage("cppcheck: '-s/--style' option is deprecated and will be removed in 1.55 release.");
|
||||
PrintMessage("cppcheck: please use '--enable=style' instead.");
|
||||
|
||||
const std::string errmsg = _settings->addEnabled("style");
|
||||
if (!errmsg.empty()) {
|
||||
|
@ -148,7 +148,7 @@ bool CmdLineParser::ParseFromArgs(int argc, const char* const argv[])
|
|||
|
||||
if (i >= argc || strncmp(argv[i], "-", 1) == 0 ||
|
||||
strncmp(argv[i], "--", 2) == 0) {
|
||||
PrintMessage("cppcheck: No filename specified for the --exitcode-suppressions option");
|
||||
PrintMessage("cppcheck: No filename specified for the '--exitcode-suppressions' option.");
|
||||
return false;
|
||||
}
|
||||
filename = argv[i];
|
||||
|
@ -160,7 +160,7 @@ bool CmdLineParser::ParseFromArgs(int argc, const char* const argv[])
|
|||
|
||||
std::ifstream f(filename.c_str());
|
||||
if (!f.is_open()) {
|
||||
PrintMessage("cppcheck: Couldn't open the file \"" + std::string(filename) + "\"");
|
||||
PrintMessage("cppcheck: Couldn't open the file: \"" + std::string(filename) + "\".");
|
||||
return false;
|
||||
}
|
||||
const std::string errmsg(_settings->nofail.parseFile(f));
|
||||
|
@ -176,9 +176,9 @@ bool CmdLineParser::ParseFromArgs(int argc, const char* const argv[])
|
|||
filename = filename.substr(20);
|
||||
std::ifstream f(filename.c_str());
|
||||
if (!f.is_open()) {
|
||||
std::string message("cppcheck: Couldn't open the file \"");
|
||||
std::string message("cppcheck: Couldn't open the file: \"");
|
||||
message += std::string(filename);
|
||||
message += "\"";
|
||||
message += "\".";
|
||||
PrintMessage(message);
|
||||
return false;
|
||||
}
|
||||
|
@ -196,15 +196,15 @@ bool CmdLineParser::ParseFromArgs(int argc, const char* const argv[])
|
|||
++i;
|
||||
|
||||
if (i >= argc) {
|
||||
PrintMessage("cppcheck: No file specified for the --suppressions option");
|
||||
PrintMessage("cppcheck: No file specified for the '--suppressions' option.");
|
||||
return false;
|
||||
}
|
||||
|
||||
std::ifstream f(argv[i]);
|
||||
if (!f.is_open()) {
|
||||
std::string message("cppcheck: Couldn't open the file \"");
|
||||
std::string message("cppcheck: Couldn't open the file: \"");
|
||||
message += std::string(argv[i]);
|
||||
message += "\"";
|
||||
message += "\".";
|
||||
PrintMessage(message);
|
||||
return false;
|
||||
}
|
||||
|
@ -248,13 +248,13 @@ bool CmdLineParser::ParseFromArgs(int argc, const char* const argv[])
|
|||
|
||||
std::istringstream iss(numberString);
|
||||
if (!(iss >> _settings->_xml_version)) {
|
||||
PrintMessage("cppcheck: argument to '--xml-version' is not a number");
|
||||
PrintMessage("cppcheck: argument to '--xml-version' is not a number.");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (_settings->_xml_version < 0 || _settings->_xml_version > 2) {
|
||||
// We only have xml versions 1 and 2
|
||||
PrintMessage("cppcheck: --xml-version can only be 1 or 2.");
|
||||
PrintMessage("cppcheck: '--xml-version' can only be 1 or 2.");
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -290,7 +290,7 @@ bool CmdLineParser::ParseFromArgs(int argc, const char* const argv[])
|
|||
std::istringstream iss(temp);
|
||||
if (!(iss >> _settings->_exitCode)) {
|
||||
_settings->_exitCode = 0;
|
||||
PrintMessage("cppcheck: Argument must be an integer. Try something like '--error-exitcode=1'");
|
||||
PrintMessage("cppcheck: Argument must be an integer. Try something like '--error-exitcode=1'.");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -304,7 +304,7 @@ bool CmdLineParser::ParseFromArgs(int argc, const char* const argv[])
|
|||
++i;
|
||||
if (i >= argc || strncmp(argv[i], "-", 1) == 0 ||
|
||||
strncmp(argv[i], "--", 2) == 0) {
|
||||
PrintMessage("cppcheck: argument to '-D' is missing");
|
||||
PrintMessage("cppcheck: argument to '-D' is missing.");
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -328,7 +328,7 @@ bool CmdLineParser::ParseFromArgs(int argc, const char* const argv[])
|
|||
if (strcmp(argv[i], "-I") == 0) {
|
||||
++i;
|
||||
if (i >= argc) {
|
||||
PrintMessage("cppcheck: argument to '-I' is missing");
|
||||
PrintMessage("cppcheck: argument to '-I' is missing.");
|
||||
return false;
|
||||
}
|
||||
path = argv[i];
|
||||
|
@ -365,7 +365,7 @@ bool CmdLineParser::ParseFromArgs(int argc, const char* const argv[])
|
|||
if (strcmp(argv[i], "-i") == 0) {
|
||||
++i;
|
||||
if (i >= argc) {
|
||||
PrintMessage("cppcheck: argument to '-i' is missing");
|
||||
PrintMessage("cppcheck: argument to '-i' is missing.");
|
||||
return false;
|
||||
}
|
||||
path = argv[i];
|
||||
|
@ -414,7 +414,7 @@ bool CmdLineParser::ParseFromArgs(int argc, const char* const argv[])
|
|||
// "--template path/"
|
||||
++i;
|
||||
if (i >= argc) {
|
||||
PrintMessage("cppcheck: argument to '--template' is missing");
|
||||
PrintMessage("cppcheck: argument to '--template' is missing.");
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -423,6 +423,8 @@ bool CmdLineParser::ParseFromArgs(int argc, const char* const argv[])
|
|||
_settings->_outputFormat = "{file}:{line}: {severity}: {message}";
|
||||
else if (_settings->_outputFormat == "vs")
|
||||
_settings->_outputFormat = "{file}({line}): {severity}: {message}";
|
||||
else if (_settings->_outputFormat == "edit")
|
||||
_settings->_outputFormat = "{file} +{line}: {severity}: {message}";
|
||||
}
|
||||
|
||||
// Checking threads
|
||||
|
@ -434,7 +436,7 @@ bool CmdLineParser::ParseFromArgs(int argc, const char* const argv[])
|
|||
if (strcmp(argv[i], "-j") == 0) {
|
||||
++i;
|
||||
if (i >= argc) {
|
||||
PrintMessage("cppcheck: argument to '-j' is missing");
|
||||
PrintMessage("cppcheck: argument to '-j' is missing.");
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -449,14 +451,14 @@ bool CmdLineParser::ParseFromArgs(int argc, const char* const argv[])
|
|||
|
||||
std::istringstream iss(numberString);
|
||||
if (!(iss >> _settings->_jobs)) {
|
||||
PrintMessage("cppcheck: argument to '-j' is not a number");
|
||||
PrintMessage("cppcheck: argument to '-j' is not a number.");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (_settings->_jobs > 10000) {
|
||||
// This limit is here just to catch typos. If someone has
|
||||
// need for more jobs, this value should be increased.
|
||||
PrintMessage("cppcheck: argument for '-j' is allowed to be 10000 at max");
|
||||
PrintMessage("cppcheck: argument for '-j' is allowed to be 10000 at max.");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -464,7 +466,7 @@ bool CmdLineParser::ParseFromArgs(int argc, const char* const argv[])
|
|||
// deprecated: auto deallocated classes..
|
||||
else if (strcmp(argv[i], "--auto-dealloc") == 0) {
|
||||
++i;
|
||||
PrintMessage("cppcheck: --auto-dealloc option is deprecated and will be removed in 1.55 release.");
|
||||
PrintMessage("cppcheck: '--auto-dealloc' option is deprecated and will be removed in 1.55 release.");
|
||||
}
|
||||
|
||||
// print all possible error messages..
|
||||
|
@ -573,9 +575,9 @@ bool CmdLineParser::ParseFromArgs(int argc, const char* const argv[])
|
|||
else if (platform == "unix64")
|
||||
_settings->platform(Settings::Unix64);
|
||||
else {
|
||||
std::string message("cppcheck: error: unrecognized platform\"");
|
||||
std::string message("cppcheck: error: unrecognized platform: \"");
|
||||
message += argv[i];
|
||||
message += "\"";
|
||||
message += "\".";
|
||||
PrintMessage(message);
|
||||
return false;
|
||||
}
|
||||
|
@ -587,12 +589,12 @@ bool CmdLineParser::ParseFromArgs(int argc, const char* const argv[])
|
|||
|
||||
std::istringstream iss(14+argv[i]);
|
||||
if (!(iss >> _settings->_maxConfigs)) {
|
||||
PrintMessage("cppcheck: argument to '--max-configs=' is not a number");
|
||||
PrintMessage("cppcheck: argument to '--max-configs=' is not a number.");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (_settings->_maxConfigs < 1) {
|
||||
PrintMessage("cppcheck: argument to '--max-configs=' must be greater than 0");
|
||||
PrintMessage("cppcheck: argument to '--max-configs=' must be greater than 0.");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -606,9 +608,9 @@ bool CmdLineParser::ParseFromArgs(int argc, const char* const argv[])
|
|||
}
|
||||
|
||||
else if (strncmp(argv[i], "-", 1) == 0 || strncmp(argv[i], "--", 2) == 0) {
|
||||
std::string message("cppcheck: error: unrecognized command line option \"");
|
||||
std::string message("cppcheck: error: unrecognized command line option: \"");
|
||||
message += argv[i];
|
||||
message += "\"";
|
||||
message += "\".";
|
||||
PrintMessage(message);
|
||||
return false;
|
||||
}
|
||||
|
@ -621,7 +623,7 @@ bool CmdLineParser::ParseFromArgs(int argc, const char* const argv[])
|
|||
}
|
||||
|
||||
if (_settings->isEnabled("unusedFunction") && _settings->_jobs > 1) {
|
||||
PrintMessage("cppcheck: unusedFunction check can't be used with -j option, so it was disabled.");
|
||||
PrintMessage("cppcheck: unusedFunction check can't be used with '-j' option, so it's disabled.");
|
||||
}
|
||||
|
||||
// FIXME: Make the _settings.test_2_pass thread safe
|
||||
|
@ -661,9 +663,9 @@ void CmdLineParser::PrintHelp()
|
|||
" --check-config Check cppcheck configuration. The normal code\n"
|
||||
" analysis is disabled by this flag.\n"
|
||||
" -D<ID> By default Cppcheck checks all configurations.\n"
|
||||
" Use -D to limit the checking. When -D is used the\n"
|
||||
" Use '-D' to limit the checking. When '-D' is used the\n"
|
||||
" checking is limited to the given configuration.\n"
|
||||
" Example: -DDEBUG=1 -D__cplusplus\n"
|
||||
" Example: '-DDEBUG=1 -D__cplusplus'.\n"
|
||||
" --enable=<id> Enable additional checks. The available ids are:\n"
|
||||
" * all\n"
|
||||
" Enable all checks\n"
|
||||
|
@ -681,26 +683,26 @@ void CmdLineParser::PrintHelp()
|
|||
" Check for unused functions\n"
|
||||
" * missingInclude\n"
|
||||
" Warn if there are missing includes.\n"
|
||||
" For detailed information use --check-config\n"
|
||||
" For detailed information, use '--check-config'.\n"
|
||||
" Several ids can be given if you separate them with\n"
|
||||
" commas.\n"
|
||||
" --error-exitcode=<n> If errors are found, integer [n] is returned instead\n"
|
||||
" of the default 0. " << EXIT_FAILURE << " is returned\n"
|
||||
" of the default '0'. '" << EXIT_FAILURE << "' is returned\n"
|
||||
" if arguments are not valid or if no input files are\n"
|
||||
" provided. Note that your operating system can\n"
|
||||
" modify this value, e.g. 256 can become 0.\n"
|
||||
" modify this value, e.g. '256' can become '0'.\n"
|
||||
" --errorlist Print a list of all the error messages in XML format.\n"
|
||||
" --exitcode-suppressions=<file>\n"
|
||||
" Used when certain messages should be displayed but\n"
|
||||
" should not cause a non-zero exitcode.\n"
|
||||
" --file-list=<file> Specify the files to check in a text file. Add one\n"
|
||||
" filename per line. When file is -, the file list will\n"
|
||||
" filename per line. When file is '-,' the file list will\n"
|
||||
" be read from standard input.\n"
|
||||
" -f, --force Force checking of all configurations in files. If used\n"
|
||||
" together with --max-ifdefs=, the last option is the one\n"
|
||||
" together with '--max-ifdefs=', the last option is the one\n"
|
||||
" that is effective.\n"
|
||||
" -h, --help Print this help.\n"
|
||||
" -I <dir> Give include path. Give several -I parameters to give\n"
|
||||
" -I <dir> Give include path. Give several '-I' parameters to give\n"
|
||||
" several paths. First given path is checked first. If\n"
|
||||
" paths are relative to source files, this is not needed.\n"
|
||||
" --includes-file=<file>\n"
|
||||
|
@ -711,13 +713,13 @@ void CmdLineParser::PrintHelp()
|
|||
" header files included by source files are not matched.\n"
|
||||
" Directory name is matched to all parts of the path.\n"
|
||||
" --inline-suppr Enable inline suppressions. Use them by placing one or\n"
|
||||
" more comments, like: // cppcheck-suppress warningId\n"
|
||||
" more comments, like: '// cppcheck-suppress warningId'\n"
|
||||
" on the lines before the warning to suppress.\n"
|
||||
" -j <jobs> Start [jobs] threads to do the checking simultaneously.\n"
|
||||
" --max-configs=<limit>\n"
|
||||
" Maximum number of configurations to check in a file\n"
|
||||
" before skipping it. Default is 12. If used together\n"
|
||||
" with --force, the last option is the one that is\n"
|
||||
" before skipping it. Default is '12'. If used together\n"
|
||||
" with '--force', the last option is the one that is\n"
|
||||
" effective.\n"
|
||||
" --platform=<type> Specifies platform specific types and sizes. The\n"
|
||||
" available platforms are:\n"
|
||||
|
@ -738,7 +740,7 @@ void CmdLineParser::PrintHelp()
|
|||
" --rule-file=<file> Use given rule file. For more information, see: \n"
|
||||
" https://sourceforge.net/projects/cppcheck/files/Articles/\n"
|
||||
#endif
|
||||
" -s, --style Deprecated, use --enable=style\n"
|
||||
" -s, --style Deprecated, please use '--enable=style' instead\n"
|
||||
" --std=<id> Environment. The available options are:\n"
|
||||
" * posix\n"
|
||||
" Use this if a posix environment is available\n"
|
||||
|
@ -758,7 +760,7 @@ void CmdLineParser::PrintHelp()
|
|||
" --template '<text>' Format the error messages. E.g.\n"
|
||||
" '{file}:{line},{severity},{id},{message}' or\n"
|
||||
" '{file}({line}):({severity}) {message}'\n"
|
||||
" Pre-defined templates: gcc, vs\n"
|
||||
" Pre-defined templates: gcc, vs, edit.\n"
|
||||
" -v, --verbose Output more detailed error information.\n"
|
||||
" --version Print out version number.\n"
|
||||
" --xml Write results in xml format to error stream (stderr).\n"
|
||||
|
|
|
@ -96,6 +96,7 @@ private:
|
|||
TEST_CASE(templates);
|
||||
TEST_CASE(templatesGcc);
|
||||
TEST_CASE(templatesVs);
|
||||
TEST_CASE(templatesEdit);
|
||||
TEST_CASE(xml);
|
||||
TEST_CASE(xmlver1);
|
||||
TEST_CASE(xmlver2);
|
||||
|
@ -731,6 +732,15 @@ private:
|
|||
ASSERT_EQUALS("{file}({line}): {severity}: {message}", settings._outputFormat);
|
||||
}
|
||||
|
||||
void templatesEdit() {
|
||||
REDIRECT;
|
||||
const char *argv[] = {"cppcheck", "--template", "edit", "file.cpp"};
|
||||
Settings settings;
|
||||
CmdLineParser parser(&settings);
|
||||
ASSERT(parser.ParseFromArgs(4, argv));
|
||||
ASSERT_EQUALS("{file} +{line}: {severity}: {message}", settings._outputFormat);
|
||||
}
|
||||
|
||||
void xml() {
|
||||
REDIRECT;
|
||||
const char *argv[] = {"cppcheck", "--xml", "file.cpp"};
|
||||
|
|
Loading…
Reference in New Issue