diff --git a/gui/projectfile.cpp b/gui/projectfile.cpp index fce386ee8..60872dac3 100644 --- a/gui/projectfile.cpp +++ b/gui/projectfile.cpp @@ -719,6 +719,11 @@ void ProjectFile::setSuppressions(const QList &suppre mSuppressions = suppressions; } +void ProjectFile::addSuppression(const Suppressions::Suppression &suppression) +{ + mSuppressions.append(suppression); +} + void ProjectFile::setAddons(const QStringList &addons) { mAddons = addons; @@ -1027,13 +1032,3 @@ QString ProjectFile::getAddonFilePath(QString filesDir, const QString &addon) return QString(); } - -void ProjectFile::suppressCppcheckId(std::size_t cppcheckId) -{ - if (cppcheckId > 0) { - Suppressions::Suppression s; - s.cppcheckId = cppcheckId; - mSuppressions.append(s); - write(); - } -} diff --git a/gui/projectfile.h b/gui/projectfile.h index fc1effc00..1a92f994e 100644 --- a/gui/projectfile.h +++ b/gui/projectfile.h @@ -55,9 +55,6 @@ public: mActiveProject = this; } - /** Suppress warning with Cppcheck-ID */ - void suppressCppcheckId(std::size_t cppcheckId); - /** * @brief Read the project file. * @param filename Filename (can be also given to constructor). @@ -312,6 +309,9 @@ public: */ void setSuppressions(const QList &suppressions); + /** Add suppression */ + void addSuppression(const Suppressions::Suppression &suppression); + /** * @brief Set list of addons. * @param addons List of addons. diff --git a/gui/resultstree.cpp b/gui/resultstree.cpp index a9202bde0..27274c176 100644 --- a/gui/resultstree.cpp +++ b/gui/resultstree.cpp @@ -1059,16 +1059,27 @@ void ResultsTree::suppressCppcheckID() selectedWarnings.insert(item); } + bool changed = false; ProjectFile *projectFile = ProjectFile::getActiveProject(); for (QStandardItem *item: selectedWarnings) { QStandardItem *fileItem = item->parent(); const QVariantMap data = item->data().toMap(); - if (projectFile && data.contains("cppcheckId")) - projectFile->suppressCppcheckId(data["cppcheckId"].toULongLong()); + if (projectFile && data.contains("cppcheckId")) { + Suppressions::Suppression suppression; + suppression.cppcheckId = data["cppcheckId"].toULongLong(); + suppression.errorId = data["id"].toString().toStdString(); + suppression.fileName = data["file"].toString().toStdString(); + suppression.lineNumber = data["line"].toInt(); + projectFile->addSuppression(suppression); + changed = true; + } fileItem->removeRow(item->row()); if (fileItem->rowCount() == 0) mModel.removeRow(fileItem->row()); } + + if (changed) + projectFile->write(); } void ResultsTree::openContainingFolder()