diff --git a/analyzers/cppcheck/problemmodel.h b/analyzers/cppcheck/problemmodel.h --- a/analyzers/cppcheck/problemmodel.h +++ b/analyzers/cppcheck/problemmodel.h @@ -52,6 +52,7 @@ void forceFullUpdate() override; private: + void setNotification(const QString& message); void fixProblemFinalLocation(KDevelop::IProblem::Ptr problem); using KDevelop::ProblemModel::setProblems; diff --git a/analyzers/cppcheck/problemmodel.cpp b/analyzers/cppcheck/problemmodel.cpp --- a/analyzers/cppcheck/problemmodel.cpp +++ b/analyzers/cppcheck/problemmodel.cpp @@ -21,6 +21,7 @@ #include "problemmodel.h" #include "plugin.h" +#include "problem.h" #include "utils.h" #include @@ -85,6 +86,7 @@ if (m_problems.isEmpty()) { maxLength = 0; + clearProblems(); // Remove starting notification } for (auto problem : problems) { @@ -101,9 +103,23 @@ } } +void ProblemModel::setNotification(const QString& message) +{ + KDevelop::IProblem::Ptr notificationProblem(new CppcheckProblem); + notificationProblem->setSeverity(KDevelop::IProblem::Hint); + notificationProblem->setDescription(message); + + fixProblemFinalLocation(notificationProblem); + setProblems({ notificationProblem }); +} + void ProblemModel::setProblems() { - setProblems(m_problems); + if (m_problems.isEmpty()) { + setNotification(i18n("Analysis of (%1) completed, no problems detected.", prettyPathName(m_path))); + } else { + setProblems(m_problems); + } } void ProblemModel::reset() @@ -119,9 +135,11 @@ clearProblems(); m_problems.clear(); - QString tooltip = i18nc("@info:tooltip", "Re-run last Cppcheck analyze"); + QString tooltip = i18nc("@info:tooltip", "Re-Run Last Cppcheck Analysis"); if (m_project) { - tooltip += QString(" (%1)").arg(prettyPathName(m_path)); + QString target = prettyPathName(m_path); + tooltip += QString(" (%1)").arg(target); + setNotification(i18n("Analysis of (%1) started, expect problems to come...", target)); } setFullUpdateTooltip(tooltip); }