diff --git a/plugins/axivion/axivionplugin.cpp b/plugins/axivion/axivionplugin.cpp index ced5d37597c..c431af66e7a 100644 --- a/plugins/axivion/axivionplugin.cpp +++ b/plugins/axivion/axivionplugin.cpp @@ -60,6 +60,26 @@ public: static AxivionPlugin *s_instance = nullptr; static AxivionPluginPrivate *dd = nullptr; +class AxivionTextMark : public TextEditor::TextMark +{ +public: + AxivionTextMark(const Utils::FilePath &filePath, const ShortIssue &issue); + +private: + QString m_id; +}; + +AxivionTextMark::AxivionTextMark(const Utils::FilePath &filePath, const ShortIssue &issue) + : TextEditor::TextMark(filePath, issue.lineNumber, {Tr::tr("Axivion"), AxivionTextMarkId}) + , m_id(issue.id) +{ + const QString markText = issue.entity.isEmpty() ? issue.message + : issue.entity + ": " + issue.message; + setToolTip(issue.errorNumber + " " + markText); + setPriority(TextEditor::TextMark::NormalPriority); + setLineAnnotation(markText); +} + AxivionPlugin::AxivionPlugin() { s_instance = this; @@ -298,13 +318,7 @@ void AxivionPluginPrivate::handleIssuesForFile(const IssuesList &issues) // FIXME the line location can be wrong (even the whole issue could be wrong) // depending on whether this line has been changed since the last axivion run and the // current state of the file - some magic has to happen here - auto mark = new TextEditor::TextMark(filePath, issue.lineNumber, - {Tr::tr("Axivion"), axivionId}); - const QString markText = issue.entity.isEmpty() ? issue.message - : issue.entity + ": " + issue.message; - mark->setToolTip(issue.errorNumber + " " + markText); - mark->setPriority(TextEditor::TextMark::NormalPriority); - mark->setLineAnnotation(markText); + new AxivionTextMark(filePath, issue); } } diff --git a/plugins/axivion/axivionresultparser.cpp b/plugins/axivion/axivionresultparser.cpp index 9c7da845883..e2b9713f576 100644 --- a/plugins/axivion/axivionresultparser.cpp +++ b/plugins/axivion/axivionresultparser.cpp @@ -307,6 +307,7 @@ static void parseCsvIssue(const QByteArray &csv, QList *issues) QTC_ASSERT(match.hasMatch(), continue); // FIXME: some of these are not present for all issue kinds! Limited to SV for now ShortIssue issue; + issue.id = match.captured("Id"); issue.state = match.captured("State"); issue.errorNumber = match.captured("ErrorNumber"); issue.message = match.captured("Message"); diff --git a/plugins/axivion/axivionresultparser.h b/plugins/axivion/axivionresultparser.h index b187a23afaf..c4b0c376f75 100644 --- a/plugins/axivion/axivionresultparser.h +++ b/plugins/axivion/axivionresultparser.h @@ -73,6 +73,7 @@ public: class ShortIssue : public BaseResult { public: + QString id; QString state; QString errorNumber; QString message;