diff --git a/CMakeLists.txt b/CMakeLists.txt index 8444f46c..9ab7b01b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -104,10 +104,12 @@ endif() option(${PROJECT_NAME}_TESTS "Build the tests" OFF) option(${PROJECT_NAME}_EXAMPLES "Build the examples" ON) option(${PROJECT_NAME}_DOCS "Build the API documentation" OFF) +option(${PROJECT_NAME}_WERROR "Use -Werror (will be true for developer-mode unconditionally)" OFF) #Always build the test harness in developer-mode if(${PROJECT_NAME}_DEVELOPER_MODE) set(${PROJECT_NAME}_TESTS ON) + set(${PROJECT_NAME}_WERROR ON) endif() #option(${PROJECT_NAME}_QTQUICK "Build for QtQuick instead of QtWidgets" OFF) @@ -137,13 +139,21 @@ include(QtInstallPaths) #to set QT_INSTALL_FOO variables macro(set_compiler_flags targetName) if(${PROJECT_NAME}_DEVELOPER_MODE) target_compile_definitions(${targetName} PUBLIC DOCKS_DEVELOPER_MODE PRIVATE QT_FORCE_ASSERTS) - if(NOT MSVC AND NOT ${PROJECT_NAME}_QT6) # We're not warnings clean with Qt6 yet - target_compile_options(${targetName} PRIVATE -Wall -Wextra -Werror -Wno-error=deprecated-declarations) - if (APPLE) - target_compile_options(${targetName} PRIVATE -Wweak-vtables) - endif() + + if(NOT MSVC) + target_compile_options(${targetName} PRIVATE -Wall -Wextra) + endif() + + if(APPLE) + target_compile_options(${targetName} PRIVATE -Wweak-vtables) endif() endif() + + # Enable -Werror + if(NOT MSVC AND NOT ${PROJECT_NAME}_QT6 AND ${PROJECT_NAME}_WERROR) + target_compile_options(${targetName} PRIVATE -Werror -Wno-error=deprecated-declarations) + endif() + endmacro() if(${PROJECT_NAME}_QTQUICK) diff --git a/CMakePresets.json b/CMakePresets.json index 1b835b0b..59c23e56 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -12,6 +12,19 @@ "ECM_ENABLE_SANITIZERS" : "'address;undefined'" } }, + { + "name": "clazy-qtwidgets", + "displayName": "clazy-qtwidgets", + "generator": "Ninja", + "binaryDir": "${sourceDir}/build-clazy-qtwidgets", + "cacheVariables": { + "CMAKE_BUILD_TYPE": "Debug", + "KDDockWidgets_WERROR": "ON" + }, + "environment": { + "CXX": "clazy" + } + }, { "name": "qtwidgets", "displayName": "qtwidgets", diff --git a/dev-scripts/build-all.dart b/dev-scripts/build-all.dart index 3be91e0f..5b693042 100644 --- a/dev-scripts/build-all.dart +++ b/dev-scripts/build-all.dart @@ -15,7 +15,7 @@ * without having to wait for CI (or in case you don't have access to KDAB CI) * * Usage: - * $ dart build-all.dart + * $ dart build-all.dart [--unity] [--tests] */ import 'dart:io'; @@ -28,12 +28,9 @@ bool s_runTests = true; class Preset { final String name; final String buildDir; - String cmakeVariables = ""; Preset.fromJson(var jsonData) : name = jsonData['name'], buildDir = jsonData['binaryDir'] { - final varsData = jsonData['cacheVariables']; - varsData.forEach((k, v) => cmakeVariables += ' -D' + k + '=' + v); } String buildDirectory() { @@ -44,7 +41,6 @@ class Preset { return [ "-G", "Ninja", - cmakeVariables, "-B", buildDirectory(), "-S", @@ -132,7 +128,7 @@ Future runCMake(var cmd) async { Future main(List arguments) async { if (arguments.length == 0) { - print("Usage: build-all.dart [--unity]"); + print("Usage: build-all.dart [--unity] [--tests]"); return 1; } diff --git a/examples/dockwidgets/MyFrameworkWidgetFactory.cpp b/examples/dockwidgets/MyFrameworkWidgetFactory.cpp index 76e0b814..88a1d958 100644 --- a/examples/dockwidgets/MyFrameworkWidgetFactory.cpp +++ b/examples/dockwidgets/MyFrameworkWidgetFactory.cpp @@ -17,6 +17,8 @@ #include +// clazy:excludeall=missing-qobject-macro,ctor-missing-parent-argument + class MyTitleBar : public KDDockWidgets::TitleBarWidget { public: diff --git a/examples/dockwidgets/MyFrameworkWidgetFactory.h b/examples/dockwidgets/MyFrameworkWidgetFactory.h index 3ec56495..0a35e538 100644 --- a/examples/dockwidgets/MyFrameworkWidgetFactory.h +++ b/examples/dockwidgets/MyFrameworkWidgetFactory.h @@ -15,8 +15,11 @@ #include +// clazy:excludeall=ctor-missing-parent-argument + class CustomWidgetFactory : public KDDockWidgets::DefaultWidgetFactory { + Q_OBJECT public: KDDockWidgets::TitleBar *createTitleBar(KDDockWidgets::Frame *frame) const override; KDDockWidgets::TitleBar *createTitleBar(KDDockWidgets::FloatingWindow *fw) const override; diff --git a/examples/dockwidgets/MyMainWindow.cpp b/examples/dockwidgets/MyMainWindow.cpp index 8c2561f8..1c4ce0c0 100644 --- a/examples/dockwidgets/MyMainWindow.cpp +++ b/examples/dockwidgets/MyMainWindow.cpp @@ -29,7 +29,7 @@ #include #include -// clazy:excludeall=qstring-allocations +// clazy:excludeall=qstring-allocations,ctor-missing-parent-argument,detaching-member static MyWidget *newMyWidget() { @@ -135,26 +135,26 @@ void MyMainWindow::createDockWidgets() // MainWindow::addDockWidget() attaches a dock widget to the main window: - addDockWidget(m_dockwidgets[0], KDDockWidgets::Location_OnTop); + addDockWidget(m_dockwidgets.at(0), KDDockWidgets::Location_OnTop); // Here, for finer granularity we specify right of dockwidgets[0]: - addDockWidget(m_dockwidgets[1], KDDockWidgets::Location_OnRight, m_dockwidgets[0]); + addDockWidget(m_dockwidgets.at(1), KDDockWidgets::Location_OnRight, m_dockwidgets.at(0)); - addDockWidget(m_dockwidgets[2], KDDockWidgets::Location_OnLeft); - addDockWidget(m_dockwidgets[3], KDDockWidgets::Location_OnBottom); - addDockWidget(m_dockwidgets[4], KDDockWidgets::Location_OnBottom); + addDockWidget(m_dockwidgets.at(2), KDDockWidgets::Location_OnLeft); + addDockWidget(m_dockwidgets.at(3), KDDockWidgets::Location_OnBottom); + addDockWidget(m_dockwidgets.at(4), KDDockWidgets::Location_OnBottom); // Tab two dock widgets together - m_dockwidgets[3]->addDockWidgetAsTab(m_dockwidgets[5]); + m_dockwidgets[3]->addDockWidgetAsTab(m_dockwidgets.at(5)); // 6 is floating, as it wasn't added to the main window via MainWindow::addDockWidget(). // and we tab 7 with it. - m_dockwidgets[6]->addDockWidgetAsTab(m_dockwidgets[7]); + m_dockwidgets[6]->addDockWidgetAsTab(m_dockwidgets.at(7)); // Floating windows also support nesting, here we add 8 to the bottom of the group - m_dockwidgets[6]->addDockWidgetToContainingWindow(m_dockwidgets[8], KDDockWidgets::Location_OnBottom); + m_dockwidgets[6]->addDockWidgetToContainingWindow(m_dockwidgets.at(8), KDDockWidgets::Location_OnBottom); - auto floatingWindow = m_dockwidgets[6]->window(); + auto floatingWindow = m_dockwidgets.at(6)->window(); floatingWindow->move(100, 100); } diff --git a/examples/dockwidgets/MyWidget.h b/examples/dockwidgets/MyWidget.h index de558108..6499090e 100644 --- a/examples/dockwidgets/MyWidget.h +++ b/examples/dockwidgets/MyWidget.h @@ -34,6 +34,7 @@ protected: class MyWidget1 : public MyWidget { + Q_OBJECT public: explicit MyWidget1(QWidget *parent = nullptr); protected: @@ -42,6 +43,7 @@ protected: class MyWidget2 : public MyWidget { + Q_OBJECT public: explicit MyWidget2(QWidget *parent = nullptr); protected: @@ -50,6 +52,7 @@ protected: class MyWidget3 : public MyWidget { + Q_OBJECT public: explicit MyWidget3(QWidget *parent = nullptr); protected: diff --git a/examples/minimal/MyWidget.h b/examples/minimal/MyWidget.h index bd4056e1..c4356d10 100644 --- a/examples/minimal/MyWidget.h +++ b/examples/minimal/MyWidget.h @@ -35,6 +35,7 @@ protected: class MyWidget1 : public MyWidget { + Q_OBJECT public: explicit MyWidget1(QWidget *parent = nullptr); protected: @@ -43,6 +44,7 @@ protected: class MyWidget2 : public MyWidget { + Q_OBJECT public: explicit MyWidget2(QWidget *parent = nullptr); protected: @@ -51,6 +53,7 @@ protected: class MyWidget3 : public MyWidget { + Q_OBJECT public: explicit MyWidget3(QWidget *parent = nullptr); protected: diff --git a/src/DockWidget.h b/src/DockWidget.h index d4a17820..d6d05cfa 100644 --- a/src/DockWidget.h +++ b/src/DockWidget.h @@ -25,6 +25,8 @@ QT_BEGIN_NAMESPACE class QCloseEvent; QT_END_NAMESPACE +// clazy:excludeall=ctor-missing-parent-argument + namespace KDDockWidgets { /** diff --git a/src/DockWidgetBase.h b/src/DockWidgetBase.h index 88b2f0cf..7a07ea9e 100644 --- a/src/DockWidgetBase.h +++ b/src/DockWidgetBase.h @@ -26,6 +26,8 @@ #include +// clazy:excludeall=ctor-missing-parent-argument + QT_BEGIN_NAMESPACE class QAction; QT_END_NAMESPACE @@ -477,7 +479,7 @@ Q_SIGNALS: void isOverlayedChanged(bool); ///@brief emitted when isFloating changes - bool isFloatingChanged(bool); + void isFloatingChanged(bool); ///@brief emitted when this dock widget is removed from a side-bar. ///Only relevant for the auto-hide/sidebar feature diff --git a/src/FocusScope.cpp b/src/FocusScope.cpp index 94dcce27..02c0158f 100644 --- a/src/FocusScope.cpp +++ b/src/FocusScope.cpp @@ -31,6 +31,7 @@ using namespace KDDockWidgets; // Our Private inherits from QObject since FocusScope can't (Since Frame is already QObject) class FocusScope::Private : public QObject { + Q_OBJECT public: Private(FocusScope *qq, QWidgetAdapter *thisWidget) : q(qq) @@ -173,3 +174,5 @@ void FocusScope::Private::emitDockWidgetFocusChanged() p = KDDockWidgets::Private::parentWidget(p); } } + +#include diff --git a/src/FocusScope.h b/src/FocusScope.h index 8736c0eb..40e9481f 100644 --- a/src/FocusScope.h +++ b/src/FocusScope.h @@ -27,6 +27,7 @@ namespace KDDockWidgets ///@brief Allows to implement a similar functionality to QtQuick's FocusScope item, in QtWidgets class DOCKS_EXPORT FocusScope { + Q_DISABLE_COPY(FocusScope) public: ///@brief constructor explicit FocusScope(QWidgetAdapter *thisWidget); diff --git a/src/FrameworkWidgetFactory.cpp b/src/FrameworkWidgetFactory.cpp index 7dd9c6e4..feb4fb0e 100644 --- a/src/FrameworkWidgetFactory.cpp +++ b/src/FrameworkWidgetFactory.cpp @@ -43,6 +43,8 @@ # include "multisplitter/Separator_quick.h" #endif +// clazy:excludeall=ctor-missing-parent-argument + using namespace KDDockWidgets; DropIndicatorType DefaultWidgetFactory::s_dropIndicatorType = DropIndicatorType::Classic; diff --git a/src/FrameworkWidgetFactory.h b/src/FrameworkWidgetFactory.h index 16bc7b1e..0309a0ec 100644 --- a/src/FrameworkWidgetFactory.h +++ b/src/FrameworkWidgetFactory.h @@ -16,6 +16,8 @@ #include "KDDockWidgets.h" #include "QWidgetAdapter.h" +// clazy:excludeall=ctor-missing-parent-argument + /** * @file * @brief A factory class for allowing the user to customize some internal widgets. @@ -158,6 +160,7 @@ private: */ class DOCKS_EXPORT DefaultWidgetFactory : public FrameworkWidgetFactory { + Q_OBJECT public: DefaultWidgetFactory() = default; Frame *createFrame(QWidgetOrQuick *parent, FrameOptions) const override; diff --git a/src/LayoutSaver_p.h b/src/LayoutSaver_p.h index 345bf874..ee7873bc 100644 --- a/src/LayoutSaver_p.h +++ b/src/LayoutSaver_p.h @@ -272,7 +272,9 @@ public: s_currentLayoutBeingRestored = this; const QList screens = qApp->screens(); - for (int i = 0; i < screens.size(); ++i) { + const int numScreens = screens.size(); + screenInfo.reserve(numScreens); + for (int i = 0; i < numScreens; ++i) { ScreenInfo info; info.index = i; info.geometry = screens[i]->geometry(); diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp index b511d577..d4102992 100644 --- a/src/MainWindow.cpp +++ b/src/MainWindow.cpp @@ -28,6 +28,8 @@ #include #include +// clazy:excludeall=ctor-missing-parent-argument,missing-qobject-macro + using namespace KDDockWidgets; class MainWindow::Private diff --git a/src/QWidgetAdapter.h b/src/QWidgetAdapter.h index 906f0400..561fcd06 100644 --- a/src/QWidgetAdapter.h +++ b/src/QWidgetAdapter.h @@ -73,6 +73,7 @@ namespace KDDockWidgets { class LayoutGuestWidget : public KDDockWidgets::QWidgetAdapter , public LayoutGuestWidgetBase { + Q_OBJECT public: explicit LayoutGuestWidget(QWidgetOrQuick *parent) : QWidgetAdapter(parent) diff --git a/src/private/DockRegistry.cpp b/src/private/DockRegistry.cpp index 45dbfc1b..51354ad8 100644 --- a/src/private/DockRegistry.cpp +++ b/src/private/DockRegistry.cpp @@ -224,6 +224,7 @@ SideBar *DockRegistry::sideBarForDockWidget(const DockWidgetBase *dw) const MainWindowBase::List DockRegistry::mainWindowsWithAffinity(const QStringList &affinities) const { MainWindowBase::List result; + result.reserve(m_mainWindows.size()); for (auto mw : m_mainWindows) { const QStringList mwAffinities = mw->affinities(); diff --git a/src/private/DragController.cpp b/src/private/DragController.cpp index 0a2b1dcc..549c7414 100644 --- a/src/private/DragController.cpp +++ b/src/private/DragController.cpp @@ -560,7 +560,7 @@ bool DragController::eventFilter(QObject *o, QEvent *e) // On Windows, non-client mouse moves are only sent at the end, so we must fake it: qCDebug(mouseevents) << "DragController::eventFilter e=" << e->type() << "; o=" << o; activeState()->handleMouseMove(QCursor::pos()); - return false; + return MinimalStateMachine::eventFilter(o, e); } if (isWayland()) { @@ -589,11 +589,11 @@ bool DragController::eventFilter(QObject *o, QEvent *e) QMouseEvent *me = mouseEvent(e); if (!me) - return false; + return MinimalStateMachine::eventFilter(o, e); auto w = qobject_cast(o); if (!w) - return false; + return MinimalStateMachine::eventFilter(o, e); qCDebug(mouseevents) << "DragController::eventFilter e=" << e->type() << "; o=" << o << "; m_nonClientDrag=" << m_nonClientDrag; @@ -606,7 +606,7 @@ bool DragController::eventFilter(QObject *o, QEvent *e) return activeState()->handleMouseButtonPress(draggableForQObject(o), Qt5Qt6Compat::eventGlobalPos(me), me->pos()); } } - return false; + return MinimalStateMachine::eventFilter(o, e); } case QEvent::MouseButtonPress: // For top-level windows that support native dragging all goes through the NonClient* events. @@ -628,7 +628,7 @@ bool DragController::eventFilter(QObject *o, QEvent *e) break; } - return false; + return MinimalStateMachine::eventFilter(o, e); } StateBase *DragController::activeState() const diff --git a/src/private/DragController_p.h b/src/private/DragController_p.h index 5aae8b04..282079cc 100644 --- a/src/private/DragController_p.h +++ b/src/private/DragController_p.h @@ -32,6 +32,7 @@ class MinimalStateMachine; class State : public QObject { + Q_OBJECT public: explicit State(MinimalStateMachine *parent); ~State() override; diff --git a/src/private/Frame.cpp b/src/private/Frame.cpp index 2a31c0f5..7b91ddb7 100644 --- a/src/private/Frame.cpp +++ b/src/private/Frame.cpp @@ -60,7 +60,7 @@ Frame::Frame(QWidgetOrQuick *parent, FrameOptions options) connect(this, &Frame::currentDockWidgetChanged, this, &Frame::updateTitleAndIcon); - connect(m_tabWidget->asWidget(), SIGNAL(currentTabChanged(int)), + connect(m_tabWidget->asWidget(), SIGNAL(currentTabChanged(int)), // clazy:exclude=old-style-connect this, SLOT(onCurrentTabChanged(int))); setDropArea(qobject_cast(QWidgetAdapter::parentWidget())); diff --git a/src/private/WidgetResizeHandler.cpp b/src/private/WidgetResizeHandler.cpp index b950f9c2..71d98eb0 100644 --- a/src/private/WidgetResizeHandler.cpp +++ b/src/private/WidgetResizeHandler.cpp @@ -433,7 +433,7 @@ WidgetResizeHandler::CursorPosition WidgetResizeHandler::cursorPosition(QPoint g const int y = pos.y(); const int margin = widgetResizeHandlerMargin(); - int result = CursorPosition_Undefined; + unsigned int result = CursorPosition_Undefined; if (qAbs(x) <= margin) result |= CursorPosition_Left; else if (qAbs(x - (mTarget->width() - margin)) <= margin) diff --git a/src/private/multisplitter/Item.cpp b/src/private/multisplitter/Item.cpp index f48d33a9..9d3594a0 100644 --- a/src/private/multisplitter/Item.cpp +++ b/src/private/multisplitter/Item.cpp @@ -2054,10 +2054,10 @@ void ItemContainer::Private::honourMaxSizes(SizingInfo::List &sizes) if (neededToShrink > 0) { amountNeededToShrink += neededToShrink; - indexesOfShrinkers.push_back(i); + indexesOfShrinkers.push_back(i); // clazy:exclude=reserve-candidates } else if (availableToGrow > 0) { amountAvailableToGrow = qMin(amountAvailableToGrow + availableToGrow, q->length()); - indexesOfGrowers.push_back(i); + indexesOfGrowers.push_back(i); // clazy:exclude=reserve-candidates } } diff --git a/src/private/multisplitter/Separator_qwidget.h b/src/private/multisplitter/Separator_qwidget.h index 4d6b057c..10c344f5 100644 --- a/src/private/multisplitter/Separator_qwidget.h +++ b/src/private/multisplitter/Separator_qwidget.h @@ -19,6 +19,8 @@ #include +// clazy:excludeall=ctor-missing-parent-argument + namespace Layouting { class DOCKS_EXPORT SeparatorWidget diff --git a/src/private/widgets/FrameWidget.cpp b/src/private/widgets/FrameWidget.cpp index 72743890..e1bc1151 100644 --- a/src/private/widgets/FrameWidget.cpp +++ b/src/private/widgets/FrameWidget.cpp @@ -29,8 +29,8 @@ using namespace KDDockWidgets; -///@brieg a QVBoxLayout that emits layoutInvalidated so that Item can detect minSize changes -class VBoxLayout : public QVBoxLayout +///@brief a QVBoxLayout that emits layoutInvalidated so that Item can detect minSize changes +class VBoxLayout : public QVBoxLayout //clazy:exclude=missing-qobject-macro { public: explicit VBoxLayout(FrameWidget *parent) diff --git a/src/private/widgets/TabBarWidget.cpp b/src/private/widgets/TabBarWidget.cpp index 3eef7ddb..68e178fb 100644 --- a/src/private/widgets/TabBarWidget.cpp +++ b/src/private/widgets/TabBarWidget.cpp @@ -24,6 +24,8 @@ #include #include +// clazy:excludeall=ctor-missing-parent-argument,missing-qobject-macro + namespace KDDockWidgets { namespace { // anonymous namespace to silence -Wweak-vtables class MyProxy : public QProxyStyle diff --git a/src/private/widgets/TabBarWidget_p.h b/src/private/widgets/TabBarWidget_p.h index bbf0ec5d..acb2e257 100644 --- a/src/private/widgets/TabBarWidget_p.h +++ b/src/private/widgets/TabBarWidget_p.h @@ -28,6 +28,8 @@ QT_BEGIN_NAMESPACE class QMouseEvent; QT_END_NAMESPACE +// clazy:excludeall=ctor-missing-parent-argument + namespace KDDockWidgets { class DockWidget; diff --git a/tests/Testing.cpp b/tests/Testing.cpp index 9ed060f8..83202afd 100644 --- a/tests/Testing.cpp +++ b/tests/Testing.cpp @@ -17,6 +17,8 @@ #include #include +// clazy:excludeall=ctor-missing-parent-argument,missing-qobject-macro,range-loop,missing-typeinfo,detaching-member,function-args-by-ref,non-pod-global-static,reserve-candidates,qstring-allocations + using namespace KDDockWidgets; using namespace KDDockWidgets::Testing; diff --git a/tests/Testing.h b/tests/Testing.h index 7b735d72..a2fd2af9 100644 --- a/tests/Testing.h +++ b/tests/Testing.h @@ -37,7 +37,9 @@ namespace Testing { class WarningObserver { + Q_DISABLE_COPY(WarningObserver) public: + WarningObserver() = default; virtual ~WarningObserver(); virtual void onFatal() = 0; }; diff --git a/tests/fuzzer/Operations.cpp b/tests/fuzzer/Operations.cpp index b16e1d06..bc6be6d0 100644 --- a/tests/fuzzer/Operations.cpp +++ b/tests/fuzzer/Operations.cpp @@ -313,9 +313,9 @@ bool AddDockWidget::hasParams() const void AddDockWidget::updateDescription() { if (m_params.relativeToName.isEmpty()) - m_description = QStringLiteral("AddDockWidget %1 to %2").arg(dockStr(m_params.dockWidgetName)).arg(KDDockWidgets::locationStr(m_params.location)); + m_description = QStringLiteral("AddDockWidget %1 to %2").arg(dockStr(m_params.dockWidgetName), KDDockWidgets::locationStr(m_params.location)); else - m_description = QStringLiteral("AddDockWidget %1 to %2, relative to %3").arg(dockStr(m_params.dockWidgetName)).arg(KDDockWidgets::locationStr(m_params.location)).arg(dockStr(m_params.relativeToName)); + m_description = QStringLiteral("AddDockWidget %1 to %2, relative to %3").arg(dockStr(m_params.dockWidgetName), KDDockWidgets::locationStr(m_params.location), dockStr(m_params.relativeToName)); } void AddDockWidget::execute_impl() diff --git a/tests/fuzzer/Operations.h b/tests/fuzzer/Operations.h index 3499bbbf..1b67cfbb 100644 --- a/tests/fuzzer/Operations.h +++ b/tests/fuzzer/Operations.h @@ -50,8 +50,9 @@ Q_ENUM_NS(OperationType) ///@brief Describes a testable action. -class OperationBase { - +class OperationBase +{ + Q_DISABLE_COPY(OperationBase) public: typedef std::shared_ptr Ptr; typedef QVector List; @@ -88,6 +89,7 @@ protected: class CloseViaDockWidgetAPI : public OperationBase { + Q_DISABLE_COPY(CloseViaDockWidgetAPI) public: explicit CloseViaDockWidgetAPI(Fuzzer *); @@ -103,6 +105,7 @@ protected: class HideViaDockWidgetAPI : public OperationBase { + Q_DISABLE_COPY(HideViaDockWidgetAPI) public: explicit HideViaDockWidgetAPI(Fuzzer *); @@ -118,6 +121,7 @@ protected: class ShowViaDockWidgetAPI : public OperationBase { + Q_DISABLE_COPY(ShowViaDockWidgetAPI) public: explicit ShowViaDockWidgetAPI(Fuzzer *); @@ -133,6 +137,7 @@ protected: class AddDockWidget : public OperationBase { + Q_DISABLE_COPY(AddDockWidget) public: explicit AddDockWidget(Fuzzer *); @@ -149,6 +154,7 @@ private: class AddDockWidgetAsTab : public OperationBase { + Q_DISABLE_COPY(AddDockWidgetAsTab) public: explicit AddDockWidgetAsTab(Fuzzer *); @@ -166,6 +172,7 @@ private: class SaveLayout : public OperationBase { + Q_DISABLE_COPY(SaveLayout) public: explicit SaveLayout(Fuzzer *); @@ -181,6 +188,7 @@ protected: class RestoreLayout : public OperationBase { + Q_DISABLE_COPY(RestoreLayout) public: explicit RestoreLayout(Fuzzer *); diff --git a/tests/tests_launcher.cpp b/tests/tests_launcher.cpp index 5a2e4974..a4fe2032 100644 --- a/tests/tests_launcher.cpp +++ b/tests/tests_launcher.cpp @@ -106,20 +106,20 @@ int main(int argv, char**argc) } bool ok = false; - const int subsetNumber = app.arguments()[1].toInt(&ok); + const int subsetNumber = app.arguments().at(1).toInt(&ok); if (!ok) { - qWarning() << "Invalid number" << app.arguments()[1]; + qWarning() << "Invalid number" << app.arguments().at(1); return -1; } - const int subsetPercentage = app.arguments()[2].toInt(&ok); + const int subsetPercentage = app.arguments().at(2).toInt(&ok); if (!ok) { - qWarning() << "Invalid number" << app.arguments()[2]; + qWarning() << "Invalid number" << app.arguments().at(2); return -1; } if (subsetPercentage > 100 || subsetPercentage <= 0) { - qWarning() << "Invalid percentage" << app.arguments()[2]; + qWarning() << "Invalid percentage" << app.arguments().at(2); return -1; } diff --git a/tests/tst_multisplitter.cpp b/tests/tst_multisplitter.cpp index d34c8700..3d748f7c 100644 --- a/tests/tst_multisplitter.cpp +++ b/tests/tst_multisplitter.cpp @@ -992,7 +992,8 @@ void TestMultiSplitter::tst_insertAnotherRoot() QCOMPARE(root1->hostWidget()->asQWidget(), host1); QCOMPARE(item2->hostWidget()->asQWidget(), host1); - for (Item *item : root1->items_recursive()) { + const auto &items = root1->items_recursive(); + for (Item *item : items) { QCOMPARE(item->hostWidget()->asQWidget(), host1); QVERIFY(item->isVisible()); } @@ -1586,7 +1587,7 @@ void TestMultiSplitter::tst_separatorMoveCrash() root->insertItem(item6, Item::Location_OnRight); ItemContainer *c = item5->parentContainer(); - auto separator = c->separators()[0]; + auto separator = c->separators().constFirst(); const int available5 = item5->availableLength(Qt::Horizontal); diff --git a/tests/utils.h b/tests/utils.h index db78b67c..b0945369 100644 --- a/tests/utils.h +++ b/tests/utils.h @@ -12,6 +12,8 @@ #ifndef KDDOCKWIDGETS_TESTS_UTILS_H #define KDDOCKWIDGETS_TESTS_UTILS_H +// clazy:excludeall=ctor-missing-parent-argument,missing-qobject-macro,range-loop,missing-typeinfo,detaching-member,function-args-by-ref,non-pod-global-static,reserve-candidates,qstring-allocations + #include "KDDockWidgets.h" #include "DropIndicatorOverlayInterface_p.h" #include "DockWidgetBase.h"