File indexing completed on 2024-04-28 05:38:35
0001 /* 0002 SPDX-FileCopyrightText: 2015 Sergio Martins <smartins@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "ruleofbase.h" 0008 #include "StringUtils.h" 0009 #include "clazy_stl.h" 0010 0011 #include <clang/AST/DeclCXX.h> 0012 0013 #include <vector> 0014 0015 class ClazyContext; 0016 0017 using namespace clang; 0018 0019 RuleOfBase::RuleOfBase(const std::string &name, ClazyContext *context) 0020 : CheckBase(name, context) 0021 { 0022 } 0023 0024 bool RuleOfBase::isBlacklisted(CXXRecordDecl *record) const 0025 { 0026 if (!record || clazy::startsWith(record->getQualifiedNameAsString(), "std::")) { 0027 return true; 0028 } 0029 0030 const auto qualifiedName = clazy::classNameFor(record); 0031 0032 static const std::vector<std::string> blacklisted = { 0033 "QAtomicInt", 0034 "QBasicAtomicInteger", 0035 "QAtomicInteger", 0036 "QBasicAtomicPointer", 0037 "QList::iterator", 0038 "QList::const_iterator", 0039 "QTextBlock::iterator", 0040 "QAtomicPointer", 0041 "QtPrivate::ConverterMemberFunction", 0042 "QtPrivate::ConverterMemberFunctionOk", 0043 "QtPrivate::ConverterFunctor", 0044 "QtMetaTypePrivate::VariantData", 0045 "QScopedArrayPointer", 0046 "QtPrivate::AlignOfHelper", 0047 "QColor", 0048 "QCharRef", 0049 "QByteRef", 0050 "QObjectPrivate::Connection", 0051 "QMutableListIterator", 0052 "QStringList", 0053 "QVariant::Private", 0054 "QModelIndex", // Qt4 0055 "QPair", // Qt4 0056 "QSet", // Fixed for Qt 5.7 0057 "QSet::iterator", 0058 "QSet::const_iterator", 0059 "QLinkedList::iterator", 0060 "QLinkedList::const_iterator", 0061 "QJsonArray::const_iterator", 0062 "QJsonArray::iterator", 0063 "QTextFrame::iterator", 0064 "QFuture::const_iterator", 0065 "QFuture::iterator", 0066 "QMatrix", 0067 "QBitRef", 0068 "QJsonValueRef", 0069 "QTypedArrayData::iterator", 0070 }; 0071 return clazy::contains(blacklisted, qualifiedName); 0072 }