mirror of
https://github.com/qgis/QGIS.git
synced 2025-02-23 00:02:38 -05:00
97 lines
3.7 KiB
Bash
Executable File
97 lines
3.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# This test checks for use of Qt module-wide imports such as #include <QtCore>,
|
|
# which slow compilation dramatically
|
|
# See https://www.kdab.com/beware-of-qt-module-wide-includes/
|
|
|
|
declare -a IMPORTS=()
|
|
declare -a HINTS=()
|
|
|
|
IMPORTS[0]="#include <QtCore>"
|
|
HINTS[0]="Avoid module-wide import of QtCore, which results in all Qt core headers being imported"
|
|
|
|
IMPORTS[1]="#include <QtCore/QtCore>"
|
|
HINTS[1]="Avoid module-wide import of QtCore, which results in all Qt core headers being imported"
|
|
|
|
IMPORTS[2]="#include <QtGui>"
|
|
HINTS[2]="Avoid module-wide import of QtGui, which results in all Qt GUI headers being imported"
|
|
|
|
IMPORTS[3]="#include <QtGui/QtGui>"
|
|
HINTS[3]="Avoid module-wide import of QtGui, which results in all Qt GUI headers being imported"
|
|
|
|
IMPORTS[4]="#include <QtMultimedia>"
|
|
HINTS[4]="Avoid module-wide import of QtMultimedia, which results in all Qt Multimedia headers being imported"
|
|
|
|
IMPORTS[4]="#include <QtMultimedia/QtMultimedia>"
|
|
HINTS[4]="Avoid module-wide import of QtMultimedia, which results in all Qt Multimedia headers being imported"
|
|
|
|
IMPORTS[5]="#include <QtMultimediaWidgets>"
|
|
HINTS[5]="Avoid module-wide import of QtMultimediaWidgets, which results in all Qt Multimedia widget headers being imported"
|
|
|
|
IMPORTS[6]="#include <QtMultimediaWidgets/QtMultimediaWidgets>"
|
|
HINTS[6]="Avoid module-wide import of QtMultimediaWidgets, which results in all Qt Multimedia widget headers being imported"
|
|
|
|
IMPORTS[5]="#include <QtMultimediaWidgets>"
|
|
HINTS[5]="Avoid module-wide import of QtMultimediaWidgets, which results in all Qt Multimedia widget headers being imported"
|
|
|
|
IMPORTS[6]="#include <QtMultimediaWidgets/QtMultimediaWidgets>"
|
|
HINTS[6]="Avoid module-wide import of QtMultimediaWidgets, which results in all Qt Multimedia widget headers being imported"
|
|
|
|
IMPORTS[7]="#include <QtNetwork>"
|
|
HINTS[7]="Avoid module-wide import of QtNetwork, which results in all Qt Network headers being imported"
|
|
|
|
IMPORTS[8]="#include <QtNetwork/QtNetwork>"
|
|
HINTS[8]="Avoid module-wide import of QtNetwork, which results in all Qt Network headers being imported"
|
|
|
|
IMPORTS[9]="#include <QtQml>"
|
|
HINTS[9]="Avoid module-wide import of QtQml, which results in all Qt QML headers being imported"
|
|
|
|
IMPORTS[10]="#include <QtQml/QtQml>"
|
|
HINTS[10]="Avoid module-wide import of QtQml, which results in all Qt QML headers being imported"
|
|
|
|
IMPORTS[11]="#include <QtSql>"
|
|
HINTS[11]="Avoid module-wide import of QtSql, which results in all Qt SQL headers being imported"
|
|
|
|
IMPORTS[12]="#include <QtSql/QtSql>"
|
|
HINTS[12]="Avoid module-wide import of QtSql, which results in all Qt SQL headers being imported"
|
|
|
|
IMPORTS[13]="#include <QtTest>"
|
|
HINTS[13]="Avoid module-wide import of QtTest, which results in all Qt Test headers being imported. Suggest using #include <QTest> instead."
|
|
|
|
IMPORTS[14]="#include <QtTest/QtTest>"
|
|
HINTS[14]="Avoid module-wide import of QtTest, which results in all Qt Test headers being imported. Suggest using #include <QTest> instead."
|
|
|
|
IMPORTS[15]="#include <QtWidgets>"
|
|
HINTS[15]="Avoid module-wide import of QtWidgets, which results in all Qt Widget headers being imported."
|
|
|
|
IMPORTS[16]="#include <QtWidgets/QtWidgets>"
|
|
HINTS[16]="Avoid module-wide import of QtWidgets, which results in all Qt Widget headers being imported."
|
|
|
|
RES=
|
|
DIR=$(git rev-parse --show-toplevel)
|
|
|
|
pushd "${DIR}" > /dev/null || exit
|
|
|
|
for i in "${!IMPORTS[@]}"
|
|
do
|
|
FOUND=$(git grep -n "${IMPORTS[$i]}" -- ':!*external/qt3dextra-headers*' ':!external/o2/examples*' ':!ChangeLog' ':!tests/code_layout/test_qt_imports.sh')
|
|
|
|
if [[ ${FOUND} ]]; then
|
|
echo "Found source files with a module-wide Qt import: ${IMPORTS[$i]}!"
|
|
echo " -> ${HINTS[$i]}"
|
|
echo
|
|
echo "${FOUND}"
|
|
echo
|
|
RES=1
|
|
fi
|
|
|
|
done
|
|
|
|
popd > /dev/null || exit
|
|
|
|
if [ $RES ]; then
|
|
echo " *** Found module-wide Qt imports"
|
|
exit 1
|
|
fi
|
|
|