Add support for comments at end of suppression in suppression files (#2736)
This commit is contained in:
parent
a332062385
commit
27e40af06c
|
@ -169,8 +169,20 @@ std::vector<Suppressions::Suppression> Suppressions::parseMultiSuppressComment(c
|
||||||
|
|
||||||
std::string Suppressions::addSuppressionLine(const std::string &line)
|
std::string Suppressions::addSuppressionLine(const std::string &line)
|
||||||
{
|
{
|
||||||
std::istringstream lineStream(line);
|
std::istringstream lineStream;
|
||||||
Suppressions::Suppression suppression;
|
Suppressions::Suppression suppression;
|
||||||
|
|
||||||
|
// Strip any end of line comments
|
||||||
|
std::string::size_type endpos = std::min(line.find("#"), line.find("//"));
|
||||||
|
if (endpos != std::string::npos) {
|
||||||
|
while (endpos > 0 && std::isspace(line[endpos-1])) {
|
||||||
|
endpos--;
|
||||||
|
}
|
||||||
|
lineStream.str(line.substr(0, endpos));
|
||||||
|
} else {
|
||||||
|
lineStream.str(line);
|
||||||
|
}
|
||||||
|
|
||||||
if (std::getline(lineStream, suppression.errorId, ':')) {
|
if (std::getline(lineStream, suppression.errorId, ':')) {
|
||||||
if (std::getline(lineStream, suppression.fileName)) {
|
if (std::getline(lineStream, suppression.fileName)) {
|
||||||
// If there is not a dot after the last colon in "file" then
|
// If there is not a dot after the last colon in "file" then
|
||||||
|
|
|
@ -391,10 +391,10 @@ You can create a suppressions file. Example:
|
||||||
memleak:src/file1.cpp
|
memleak:src/file1.cpp
|
||||||
exceptNew:src/file1.cpp
|
exceptNew:src/file1.cpp
|
||||||
|
|
||||||
// suppress all uninitvar errors in all files
|
uninitvar // suppress all uninitvar errors in all files
|
||||||
uninitvar
|
|
||||||
|
|
||||||
Note that you may add empty lines and comments in the suppressions file.
|
Note that you may add empty lines and comments in the suppressions file.
|
||||||
|
Comments must start with `#` or `//` and be at the start of the line, or after the suppression line.
|
||||||
|
|
||||||
You can use the suppressions file like this:
|
You can use the suppressions file like this:
|
||||||
|
|
||||||
|
|
|
@ -493,6 +493,26 @@ private:
|
||||||
Suppressions suppressions2;
|
Suppressions suppressions2;
|
||||||
suppressions2.parseFile(file2);
|
suppressions2.parseFile(file2);
|
||||||
ASSERT_EQUALS(true, suppressions2.isSuppressed(errorMessage("abc", "test.cpp", 123)));
|
ASSERT_EQUALS(true, suppressions2.isSuppressed(errorMessage("abc", "test.cpp", 123)));
|
||||||
|
|
||||||
|
std::istringstream file3("abc // comment");
|
||||||
|
Suppressions suppressions3;
|
||||||
|
suppressions3.parseFile(file3);
|
||||||
|
ASSERT_EQUALS(true, suppressions3.isSuppressed(errorMessage("abc", "test.cpp", 123)));
|
||||||
|
|
||||||
|
std::istringstream file4("abc\t\t # comment");
|
||||||
|
Suppressions suppressions4;
|
||||||
|
suppressions4.parseFile(file4);
|
||||||
|
ASSERT_EQUALS(true, suppressions4.isSuppressed(errorMessage("abc", "test.cpp", 123)));
|
||||||
|
|
||||||
|
std::istringstream file5("abc:test.cpp\t\t # comment");
|
||||||
|
Suppressions suppressions5;
|
||||||
|
suppressions5.parseFile(file5);
|
||||||
|
ASSERT_EQUALS(true, suppressions5.isSuppressed(errorMessage("abc", "test.cpp", 123)));
|
||||||
|
|
||||||
|
std::istringstream file6("abc:test.cpp:123\t\t # comment with . inside");
|
||||||
|
Suppressions suppressions6;
|
||||||
|
suppressions6.parseFile(file6);
|
||||||
|
ASSERT_EQUALS(true, suppressions6.isSuppressed(errorMessage("abc", "test.cpp", 123)));
|
||||||
}
|
}
|
||||||
|
|
||||||
void inlinesuppress() {
|
void inlinesuppress() {
|
||||||
|
|
Loading…
Reference in New Issue