Imrove --xml-version option parsing.
Allow --xml-version parsing to recognize also version 1 and print errors about invalid values.
This commit is contained in:
parent
1118b132b9
commit
1da88de932
@ -210,11 +210,28 @@ bool CmdLineParser::ParseFromArgs(int argc, const char* const argv[])
|
|||||||
else if (strcmp(argv[i], "--xml") == 0)
|
else if (strcmp(argv[i], "--xml") == 0)
|
||||||
_settings->_xml = true;
|
_settings->_xml = true;
|
||||||
|
|
||||||
// Write results in xml2 format
|
// Define the XML file version (and enable XML output)
|
||||||
else if (strcmp(argv[i], "--xml-version=2") == 0)
|
else if (strncmp(argv[i], "--xml-version=", 14) == 0)
|
||||||
{
|
{
|
||||||
|
std::string numberString(argv[i]);
|
||||||
|
numberString = numberString.substr(14);
|
||||||
|
|
||||||
|
std::istringstream iss(numberString);
|
||||||
|
if (!(iss >> _settings->_xml_version))
|
||||||
|
{
|
||||||
|
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.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Enable also XML if version is set
|
||||||
_settings->_xml = true;
|
_settings->_xml = true;
|
||||||
_settings->_xml_version = 2;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Only print something when there are errors
|
// Only print something when there are errors
|
||||||
|
@ -81,6 +81,7 @@ private:
|
|||||||
TEST_CASE(templatesGcc);
|
TEST_CASE(templatesGcc);
|
||||||
TEST_CASE(templatesVs);
|
TEST_CASE(templatesVs);
|
||||||
TEST_CASE(xml);
|
TEST_CASE(xml);
|
||||||
|
TEST_CASE(xmlver1);
|
||||||
TEST_CASE(xmlver2);
|
TEST_CASE(xmlver2);
|
||||||
TEST_CASE(xmlver2both);
|
TEST_CASE(xmlver2both);
|
||||||
TEST_CASE(xmlver2both2);
|
TEST_CASE(xmlver2both2);
|
||||||
@ -587,6 +588,17 @@ private:
|
|||||||
ASSERT_EQUALS(1, settings._xml_version);
|
ASSERT_EQUALS(1, settings._xml_version);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void xmlver1()
|
||||||
|
{
|
||||||
|
REDIRECT;
|
||||||
|
const char *argv[] = {"cppcheck", "--xml-version=1", "file.cpp"};
|
||||||
|
Settings settings;
|
||||||
|
CmdLineParser parser(&settings);
|
||||||
|
ASSERT(parser.ParseFromArgs(3, argv));
|
||||||
|
ASSERT(settings._xml);
|
||||||
|
ASSERT_EQUALS(1, settings._xml_version);
|
||||||
|
}
|
||||||
|
|
||||||
void xmlver2()
|
void xmlver2()
|
||||||
{
|
{
|
||||||
REDIRECT;
|
REDIRECT;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user