File indexing completed on 2024-04-28 05:38:44

0001 #include <QtCore/QString>
0002 #include <QtCore/QList>
0003 #include <QtCore/QVector>
0004 #include <QtCore/QByteArray>
0005 #include <QtCore/QRect>
0006 #include <QtCore/QMutex>
0007 #include <QtCore/QScopedPointer>
0008 #include <QtCore/QScopeGuard>
0009 #include "other.h"
0010 
0011 
0012 extern void external(QString);
0013 
0014 QString test()
0015 {
0016     QString s; // Warning
0017     QString s1, s2; // Warning for s2
0018     QString s3; // OK
0019     external(s1);
0020 
0021     return s3;
0022     return {};
0023 }
0024 
0025 struct MyRAII
0026 {
0027     MyRAII();
0028     ~MyRAII();
0029 };
0030 
0031 void testRAII()
0032 {
0033     MyRAII m; // Warn, not blacklisted
0034 }
0035 
0036 void testFor()
0037 {
0038     QStringList l;
0039     for (QString s : l) // OK
0040         s;
0041 
0042     foreach (QString s,  l) // OK
0043         s;
0044 }
0045 
0046 
0047 void test4()
0048 {
0049     QList<int> l; //Warn
0050     QVector<int> v; //Warn
0051     QByteArray b; //Warn
0052     QRect r; // Warn
0053     FOO(QRect) r2; // OK
0054     r2.setX(0);
0055 }
0056 
0057 void mutex()
0058 {
0059     auto myGuard = qScopeGuard([](){}); // OK, this needs to be around
0060     QMutex m;
0061     QMutexLocker ml(&m); // OK, is uninteresting
0062     QScopedPointer<QMutex> p(&m);  // OK, is uninteresting
0063 }
0064 
0065 struct MyBlacklistedType
0066 {
0067     MyBlacklistedType();
0068     ~MyBlacklistedType();
0069 };
0070 
0071 void testUserWhitelist()
0072 {
0073     MyBlacklistedType m; // OK, blacklisted
0074 }