diff options
Diffstat (limited to 'src/checks/level0/qvariant-template-instantiation.cpp')
-rw-r--r-- | src/checks/level0/qvariant-template-instantiation.cpp | 32 |
1 files changed, 14 insertions, 18 deletions
diff --git a/src/checks/level0/qvariant-template-instantiation.cpp b/src/checks/level0/qvariant-template-instantiation.cpp index 548bdb9e..2e0fd8e7 100644 --- a/src/checks/level0/qvariant-template-instantiation.cpp +++ b/src/checks/level0/qvariant-template-instantiation.cpp @@ -26,26 +26,24 @@ #include "Utils.h" #include "TemplateUtils.h" #include "StringUtils.h" -#include "checkmanager.h" using namespace std; using namespace clang; QVariantTemplateInstantiation::QVariantTemplateInstantiation(const std::string &name, ClazyContext *context) - : CheckBase(name, context) + : CheckBase(name, context, Option_CanIgnoreIncludes) { - } -static bool isMatchingClass(const std::string &name) +static bool isMatchingClass(StringRef name) { - static const vector<string> classes = {"QBitArray", "QByteArray", "QChar", "QDate", "QDateTime", - "QEasingCurve", "QJsonArray", "QJsonDocument", "QJsonObject", - "QJsonValue", "QLocale", "QModelIndex", "QPoint", "QPointF", - "QRect", "QRectF", "QRegExp", "QString", "QRegularExpression", - "QSize", "QSizeF", "QStringList", "QTime", "QUrl", "QUuid" }; + static const vector<StringRef> classes = {"QBitArray", "QByteArray", "QChar", "QDate", "QDateTime", + "QEasingCurve", "QJsonArray", "QJsonDocument", "QJsonObject", + "QJsonValue", "QLocale", "QModelIndex", "QPoint", "QPointF", + "QRect", "QRectF", "QRegExp", "QString", "QRegularExpression", + "QSize", "QSizeF", "QStringList", "QTime", "QUrl", "QUuid" }; - return clazy_std::contains(classes, name); + return clazy::contains(classes, name); } void QVariantTemplateInstantiation::VisitStmt(clang::Stmt *stm) @@ -55,14 +53,14 @@ void QVariantTemplateInstantiation::VisitStmt(clang::Stmt *stm) return; CXXMethodDecl *methodDecl = callExpr->getMethodDecl(); - if (!methodDecl || methodDecl->getNameAsString() != "value") + if (!methodDecl || clazy::name(methodDecl) != "value") return; CXXRecordDecl *decl = methodDecl->getParent(); - if (!decl || decl->getNameAsString() != "QVariant") + if (!decl || clazy::name(decl) != "QVariant") return; - vector<QualType> typeList = TemplateUtils::getTemplateArgumentsTypes(methodDecl); + vector<QualType> typeList = clazy::getTemplateArgumentsTypes(methodDecl); const Type *t = typeList.empty() ? nullptr : typeList[0].getTypePtrOrNull(); if (!t) return; @@ -72,19 +70,17 @@ void QVariantTemplateInstantiation::VisitStmt(clang::Stmt *stm) matches = true; } else { CXXRecordDecl *recordDecl = t->getAsCXXRecordDecl(); - matches = recordDecl && t->isClassType() && isMatchingClass(recordDecl->getNameAsString()); + matches = recordDecl && t->isClassType() && isMatchingClass(clazy::name(recordDecl)); } if (matches) { - string typeName = StringUtils::simpleTypeName(typeList[0], lo()); + string typeName = clazy::simpleTypeName(typeList[0], lo()); typeName[0] = toupper(typeName[0]); string typeName2 = typeName; if (typeName[0] == 'Q') typeName2.erase(0, 1); // Remove first letter std::string error = std::string("Use QVariant::to" + typeName2 + "() instead of QVariant::value<" + typeName + ">()"); - emitWarning(stm->getLocStart(), error.c_str()); + emitWarning(getLocStart(stm), error.c_str()); } } - -REGISTER_CHECK("qvariant-template-instantiation", QVariantTemplateInstantiation, CheckLevel0) |