Skip to content

Commit c49090f

Browse files
committed
show misra warnings
1 parent bc5d287 commit c49090f

4 files changed

Lines changed: 85 additions & 40 deletions

File tree

gui/resultstree.cpp

Lines changed: 32 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -241,26 +241,13 @@ bool ResultsTree::addErrorItem(const ErrorItem& errorItem)
241241

242242
QSharedPointer<ErrorItem> errorItemPtr{new ErrorItem(errorItem)};
243243

244-
bool showItem = true;
245-
246-
// Ids that are temporarily hidden..
247-
if (mHiddenMessageId.contains(errorItem.errorId))
248-
showItem = false;
249-
250-
//If specified, filter on summary, message, filename, and id
251-
if (showItem && !mFilter.isEmpty() && !errorItem.filterMatch(mFilter))
252-
showItem = false;
253-
254-
if (showItem) {
255-
if (mReportType == ReportType::normal)
256-
showItem = mShowSeverities.isShown(errorItemPtr->severity);
257-
else {
258-
errorItemPtr->guideline = getGuideline(mReportType, mGuideline, errorItemPtr->errorId, errorItemPtr->severity);
259-
errorItemPtr->classification = getClassification(mReportType, errorItemPtr->guideline);
260-
showItem = !errorItemPtr->classification.isEmpty() && mShowSeverities.isShown(getSeverityFromClassification(errorItemPtr->classification));
261-
}
244+
if (mReportType != ReportType::normal) {
245+
errorItemPtr->guideline = getGuideline(mReportType, mGuideline, errorItemPtr->errorId, errorItemPtr->severity);
246+
errorItemPtr->classification = getClassification(mReportType, errorItemPtr->guideline);
262247
}
263248

249+
const bool showItem = !isErrorItemHidden(errorItemPtr);
250+
264251
// if there is at least one error that is not hidden, we have a visible error
265252
mVisibleErrors |= showItem;
266253

@@ -540,28 +527,7 @@ void ResultsTree::refreshTree()
540527
}
541528

542529
//Check if this error should be hidden
543-
bool hide = child->hidden || mHiddenMessageId.contains(child->errorItem->errorId);
544-
545-
if (!hide) {
546-
if (mReportType == ReportType::normal)
547-
hide = !mShowSeverities.isShown(child->errorItem->severity);
548-
else {
549-
hide = child->errorItem->classification.isEmpty() || !mShowSeverities.isShown(child->errorItem->severity);
550-
}
551-
}
552-
553-
// If specified, filter on summary, message, filename, and id
554-
if (!hide && !mFilter.isEmpty()) {
555-
hide = !child->errorItem->filterMatch(mFilter);
556-
}
557-
558-
// Tool filter
559-
if (!hide) {
560-
if (child->errorItem->errorId.startsWith("clang"))
561-
hide = !mShowClang;
562-
else
563-
hide = !mShowCppcheck;
564-
}
530+
const bool hide = child->hidden || isErrorItemHidden(child->errorItem);
565531

566532
if (!hide) {
567533
showFile = true;
@@ -578,6 +544,32 @@ void ResultsTree::refreshTree()
578544
sortByColumn(header()->sortIndicatorSection(), header()->sortIndicatorOrder());
579545
}
580546

547+
bool ResultsTree::isErrorItemHidden(const QSharedPointer<ErrorItem> errorItem) const {
548+
//Check if this error should be hidden
549+
if (mHiddenMessageId.contains(errorItem->errorId))
550+
return true;
551+
552+
bool hide;
553+
if (mReportType == ReportType::normal)
554+
hide = !mShowSeverities.isShown(errorItem->severity);
555+
else
556+
hide = errorItem->classification.isEmpty() || !mShowSeverities.isShown(getSeverityFromClassification(errorItem->classification));
557+
558+
// If specified, filter on summary, message, filename, and id
559+
if (!hide && !mFilter.isEmpty())
560+
hide = !errorItem->filterMatch(mFilter);
561+
562+
// Tool filter
563+
if (!hide) {
564+
if (errorItem->isClangResult())
565+
hide = !mShowClang;
566+
else
567+
hide = !mShowCppcheck;
568+
}
569+
570+
return hide;
571+
}
572+
581573
ResultItem *ResultsTree::ensureFileItem(const QSharedPointer<ErrorItem>& errorItem, bool hide)
582574
{
583575
QString name = QDir::toNativeSeparators(stripPath(errorItem->getFile(), false));

gui/resultstree.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,13 @@ class ResultsTree : public QTreeView {
208208

209209
void setReportType(ReportType reportType);
210210

211+
/**
212+
* @brief should errorItem be hidden by filter/severity/etc?
213+
* @param errorItem error item
214+
* @return true if error item should be hidden
215+
*/
216+
bool isErrorItemHidden(const QSharedPointer<ErrorItem> errorItem) const;
217+
211218
signals:
212219
/**
213220
* @brief Signal that results have been hidden or shown

gui/test/resultstree/testresultstree.cpp

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -303,5 +303,50 @@ void TestResultsTree::testGetGuidelineError() const
303303
QCOMPARE(report.output, "id1,Required,1.3");
304304
}
305305

306+
void TestResultsTree::misraCReportShowClassifications() const
307+
{
308+
ResultsTree tree(nullptr);
309+
tree.showResults(ShowTypes::ShowType::ShowErrors, true);
310+
tree.showResults(ShowTypes::ShowType::ShowWarnings, true);
311+
tree.showResults(ShowTypes::ShowType::ShowStyle, true);
312+
tree.setReportType(ReportType::misraC2012);
313+
tree.addErrorItem(createErrorItem("file1.c", 10, Severity::style, "some rule text", "premium-misra-c-2012-1.1")); // Required
314+
tree.addErrorItem(createErrorItem("file1.c", 20, Severity::style, "some rule text", "premium-misra-c-2012-1.2")); // Advisory
315+
tree.addErrorItem(createErrorItem("file1.c", 30, Severity::style, "some rule text", "premium-misra-c-2012-9.1")); // Mandatory
316+
QCOMPARE(tree.isRowHidden(0, QModelIndex()), false);
317+
318+
const auto* model = dynamic_cast<QStandardItemModel*>(tree.model());
319+
QVERIFY(model != nullptr);
320+
QVERIFY(model->rowCount() == 1);
321+
const ResultItem* fileItem = dynamic_cast<ResultItem*>(model->item(0,0));
322+
QVERIFY(fileItem != nullptr);
323+
QVERIFY(fileItem->rowCount() == 3);
324+
325+
QCOMPARE(tree.isRowHidden(0, fileItem->index()), false);
326+
QCOMPARE(tree.isRowHidden(1, fileItem->index()), false);
327+
QCOMPARE(tree.isRowHidden(2, fileItem->index()), false);
328+
329+
tree.showResults(ShowTypes::ShowType::ShowErrors, false);
330+
tree.showResults(ShowTypes::ShowType::ShowWarnings, true);
331+
tree.showResults(ShowTypes::ShowType::ShowStyle, true);
332+
QCOMPARE(tree.isRowHidden(0, fileItem->index()), false);
333+
QCOMPARE(tree.isRowHidden(1, fileItem->index()), false);
334+
QCOMPARE(tree.isRowHidden(2, fileItem->index()), true);
335+
336+
tree.showResults(ShowTypes::ShowType::ShowErrors, true);
337+
tree.showResults(ShowTypes::ShowType::ShowWarnings, false);
338+
tree.showResults(ShowTypes::ShowType::ShowStyle, true);
339+
QCOMPARE(tree.isRowHidden(0, fileItem->index()), true);
340+
QCOMPARE(tree.isRowHidden(1, fileItem->index()), false);
341+
QCOMPARE(tree.isRowHidden(2, fileItem->index()), false);
342+
343+
tree.showResults(ShowTypes::ShowType::ShowErrors, true);
344+
tree.showResults(ShowTypes::ShowType::ShowWarnings, true);
345+
tree.showResults(ShowTypes::ShowType::ShowStyle, false);
346+
QCOMPARE(tree.isRowHidden(0, fileItem->index()), false);
347+
QCOMPARE(tree.isRowHidden(1, fileItem->index()), true);
348+
QCOMPARE(tree.isRowHidden(2, fileItem->index()), false);
349+
}
350+
306351
QTEST_MAIN(TestResultsTree)
307352

gui/test/resultstree/testresultstree.h

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

0 commit comments

Comments
 (0)