Skip to content

Commit ad3ddca

Browse files
committed
1
1 parent fe537a7 commit ad3ddca

File tree

4 files changed

+38
-5
lines changed

4 files changed

+38
-5
lines changed

gui/resultitem.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,20 @@ class ResultItem : public QStandardItem
4141
Type getType() const {
4242
return mType;
4343
}
44+
45+
void setIconFileName(const QString& iconFileName) {
46+
mIconFileName = iconFileName;
47+
if (!mIconFileName.isEmpty())
48+
setIcon(QIcon(iconFileName));
49+
}
50+
51+
QString getIconFileName() const {
52+
return mIconFileName;
53+
}
4454
private:
4555
const Type mType;
4656
const int mErrorPathIndex;
57+
QString mIconFileName;
4758
};
4859

4960
#endif // RESULTITEM_H

gui/resultstree.cpp

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,10 @@ static QStringList getLabels() {
126126
QObject::tr("CWE")};
127127
}
128128

129+
static Severity getSeverity(ReportType reportType, const ErrorItem& errorItem) {
130+
return reportType == ReportType::normal ? errorItem.severity : getSeverityFromClassification(errorItem.classification);
131+
}
132+
129133
ResultsTree::ResultsTree(QWidget * parent) :
130134
QTreeView(parent),
131135
mModel(new QStandardItemModel)
@@ -160,6 +164,7 @@ void ResultsTree::setReportType(ReportType reportType) {
160164
QSharedPointer<ErrorItem>& errorItem = dynamic_cast<ResultItem*>(fileItem->child(j,0))->errorItem;
161165
errorItem->guideline = getGuideline(mReportType, mGuideline, errorItem->errorId, errorItem->severity);
162166
errorItem->classification = getClassification(mReportType, errorItem->guideline);
167+
dynamic_cast<ResultItem*>(fileItem->child(j, COLUMN_FILE))->setIconFileName(severityToIcon(getSeverity(reportType, *errorItem)));
163168
fileItem->child(j, COLUMN_CERT_LEVEL)->setText(errorItem->classification);
164169
fileItem->child(j, COLUMN_CERT_RULE)->setText(errorItem->guideline);
165170
fileItem->child(j, COLUMN_MISRA_CLASSIFICATION)->setText(errorItem->classification);
@@ -264,7 +269,7 @@ bool ResultsTree::addErrorItem(const ErrorItem& errorItem)
264269
ResultItem* stditem = addBacktraceFiles(fileItem,
265270
errorItemPtr,
266271
!showItem,
267-
severityToIcon(errorItemPtr->severity),
272+
severityToIcon(getSeverity(mReportType, *errorItemPtr)),
268273
ResultItem::Type::message,
269274
errorItemPtr->getMainLocIndex());
270275

@@ -317,6 +322,7 @@ ResultItem *ResultsTree::addBacktraceFiles(ResultItem *parent,
317322
const int numberOfColumns = getLabels().size();
318323
QList<ResultItem*> columns(numberOfColumns);
319324
columns[COLUMN_FILE] = createFilenameItem(errorItem, type, errorPathIndex);
325+
columns[COLUMN_FILE]->setIconFileName(icon);
320326
columns[COLUMN_LINE] = createLineNumberItem(loc.line, errorItem, type, errorPathIndex);
321327
columns[COLUMN_SEVERITY] = createNormalItem(itemSeverity, errorItem, type, errorPathIndex);
322328
columns[COLUMN_SUMMARY] = createNormalItem(text, errorItem, type, errorPathIndex);
@@ -340,10 +346,6 @@ ResultItem *ResultsTree::addBacktraceFiles(ResultItem *parent,
340346

341347
setRowHidden(parent->rowCount() - 1, parent->index(), hide);
342348

343-
if (!icon.isEmpty()) {
344-
list[COLUMN_FILE]->setIcon(QIcon(icon));
345-
}
346-
347349
return columns[COLUMN_FILE];
348350
}
349351

gui/test/resultstree/testresultstree.cpp

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,25 @@ void TestResultsTree::testReportType() const
292292
"missingReturn,Mandatory,17.4");
293293
}
294294

295+
void TestResultsTree::testReportTypeIcon() const {
296+
ResultsTree tree(nullptr);
297+
tree.setReportType(ReportType::misraC2012);
298+
tree.addErrorItem(createErrorItem("file1.c", 10, Severity::style, "some rule text", "premium-misra-c-2012-1.1")); // Required
299+
tree.addErrorItem(createErrorItem("file1.c", 20, Severity::style, "some rule text", "premium-misra-c-2012-1.2")); // Advisory
300+
tree.addErrorItem(createErrorItem("file1.c", 30, Severity::style, "some rule text", "premium-misra-c-2012-9.1")); // Mandatory
301+
302+
const auto* model = dynamic_cast<QStandardItemModel*>(tree.model());
303+
QVERIFY(model != nullptr);
304+
const ResultItem* fileItem = dynamic_cast<ResultItem*>(model->item(0,0));
305+
306+
const ResultItem* err1 = dynamic_cast<ResultItem*>(fileItem->child(0,0));
307+
const ResultItem* err2 = dynamic_cast<ResultItem*>(fileItem->child(1,0));
308+
const ResultItem* err3 = dynamic_cast<ResultItem*>(fileItem->child(2,0));
309+
310+
QCOMPARE(err1->getIconFileName(), ":images/dialog-warning.png");
311+
QCOMPARE(err2->getIconFileName(), "style");
312+
QCOMPARE(err3->getIconFileName(), "error");
313+
}
295314

296315
void TestResultsTree::testGetGuidelineError() const
297316
{

gui/test/resultstree/testresultstree.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ private slots:
2727
void multiLineResult() const;
2828
void resultsInSameFile() const;
2929
void testReportType() const;
30+
void testReportTypeIcon() const;
3031
void testGetGuidelineError() const;
3132
void misraCReportShowClassifications() const;
3233
};

0 commit comments

Comments
 (0)