in src/checks/level0/unused-non-trivial-variable.cpp [110:198]
bool UnusedNonTrivialVariable::isInterestingType(QualType t) const
{
// TODO Remove QColor in Qt6
static const std::vector<StringRef> nonTrivialTypes = {
"QColor",
"QVariant",
"QFont",
"QUrl",
"QIcon",
"QImage",
"QPixmap",
"QPicture",
"QBitmap",
"QBrush",
"QPen",
"QBuffer",
"QCache",
"QDateTime",
"QDir",
"QEvent",
"QFileInfo",
"QFontInfo",
"QFontMetrics",
"QJSValue",
"QLocale",
"QRegularExpression",
"QRegExp",
"QUrlQuery",
"QStorageInfo",
"QPersistentModelIndex",
"QJsonArray",
"QJsonValue",
"QJsonDocument",
"QMimeType",
"QBitArray",
"QCollator",
"QByteArrayList",
"QCollatorSortKey",
"QCursor",
"QPalette",
"QPainterPath",
"QRegion",
"QFontInfo",
"QTextCursor",
"QStaticText",
"QFontMetricsF",
"QTextFrameFormat",
"QTextImageFormat",
"QNetworkCookie",
"QNetworkRequest",
"QNetworkConfiguration",
"QHostAddress",
"QSqlQuery",
"QSqlRecord",
"QSqlField",
"QLine",
"QLineF",
"QRect",
"QRectF",
"QDomNode",
};
const CXXRecordDecl *record = clazy::typeAsRecord(t);
if (!record) {
return false;
}
if (isOptionSet("no-whitelist")) {
// Will cause too many false-positives, like RAII classes. Use suppressing comments to silence them.
return !isUninterestingType(record);
}
if (clazy::isQtContainer(record)) {
return true;
}
StringRef typeName = clazy::name(record);
bool any = clazy::any_of(nonTrivialTypes, [typeName](StringRef container) {
return container == typeName;
});
if (any) {
return true;
}
return clazy::any_of(m_userWhitelist, [typeName](const std::string &container) {
return container == typeName;
});
}