Skip to content

Commit a51d215

Browse files
committed
Improve IWYU support
1 parent 7dabde0 commit a51d215

File tree

11 files changed

+1640
-359
lines changed

11 files changed

+1640
-359
lines changed

common.pri

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,13 @@ contains(MODULES, basic) {
9090
# iwyu support #
9191
#------------------#
9292

93+
# https://doc.qt.io/qt-5/qmake-manual.html
94+
# https://wiki-qt-io-staging.herokuapp.com/Undocumented_QMake
95+
96+
defineReplace(iwyu_out) {
97+
return ($${OUT_PWD}/$$basename(1).log)
98+
}
99+
93100
contains(USE, check_iwyu) {
94101
linux*:IWYU_FLAGS += -fPIE
95102

@@ -101,7 +108,7 @@ contains(USE, check_iwyu) {
101108

102109
IWYU_EXTRA_FLAGS += -Xiwyu --max_line_length=120 -Xiwyu --mapping_file=$${PROJECT_ROOT_PATH}/tools/iwyu.imp
103110

104-
iwyu.output = ${QMAKE_FILE_BASE}.cpp.log
111+
iwyu.output_function = iwyu_out
105112
iwyu.commands = $${PROJECT_ROOT_PATH}/tools/iwyu_comp.sh $${IWYU_EXTRA_FLAGS} $${IWYU_FLAGS} ${QMAKE_FILE_NAME}
106113
iwyu.input = SOURCES
107114
iwyu.CONFIG += no_link target_predeps

tools/iwyu.imp

Lines changed: 12 additions & 358 deletions
Large diffs are not rendered by default.

tools/iwyu_clang.imp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
[
2+
{ include: ['"__algorithm/copy.h"', 'private', '<algorithm>', 'public']},
3+
{ include: ['"__algorithm/max.h"', 'private', '<algorithm>', 'public']},
4+
{ include: ['"__algorithm/min.h"', 'private', '<algorithm>', 'public']},
5+
{ include: ['"__algorithm/sort.h"', 'private', '<algorithm>', 'public']},
6+
{ include: ['"__functional/function.h"', 'private', '<functional>', 'public']},
7+
{ include: ['"bits/shared_ptr.h"', 'private', '<memory>', 'public']},
8+
{ include: ['<bits/shared_ptr.h>', 'private', '<memory>', 'public']},
9+
{ include: ['"__memory/shared_ptr.h"', 'private', '<memory>', 'public']},
10+
{ include: ['<__memory/shared_ptr.h>', 'private', '<memory>', 'public']},
11+
{ include: ['"new"', 'private', '<new>', 'public']},
12+
{ include: ['"string"', 'private', '<string>', 'public']},
13+
{ include: ['"__utility/move.h"', 'private', '<utility>', 'public']},
14+
15+
{ symbol: ['std::string', 'private', '<string>', 'public'] }
16+
]

tools/iwyu_qtcore.imp

Lines changed: 493 additions & 0 deletions
Large diffs are not rendered by default.

tools/iwyu_qtextra.imp

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
[
2+
{ include: ['<qcoreevent.h>', 'private', '<QEvent>', 'public'] },
3+
{ include: ['"qcoreevent.h"', 'private', '<QEvent>', 'public'] },
4+
{ include: ['<qtmetamacros.h>', 'private', '<QObject>', 'public'] },
5+
{ include: ['"qtmetamacros.h"', 'private', '<QObject>', 'public'] },
6+
{ include: ['<qobjectdefs.h>', 'private', '<QObject>', 'public'] },
7+
{ include: ['"qobjectdefs.h"', 'private', '<QObject>', 'public'] },
8+
{ include: ['<QtCore/qsharedpointer.h>', 'private', '<QSharedPointer>', 'public'] },
9+
{ include: ['"QtCore/qsharedpointer.h"', 'private', '<QSharedPointer>', 'public'] },
10+
{ include: ['<qnamespace.h>', 'private', '<Qt>', 'public'] },
11+
{ include: ['"qnamespace.h"', 'private', '<Qt>', 'public'] },
12+
{ include: ['"qalgorithms.h"', 'private', '<QtAlgorithms>', 'public'] },
13+
{ include: ['<qalgorithms.h>', 'private', '<QtAlgorithms>', 'public'] },
14+
{ include: ['<qconfig.h>', 'private', '<QtGlobal>', 'public'] },
15+
{ include: ['"qconfig.h"', 'private', '<QtGlobal>', 'public'] },
16+
{ include: ['<qglobal.h>', 'private', '<QtGlobal>', 'public'] },
17+
{ include: ['"qglobal.h"', 'private', '<QtGlobal>', 'public'] },
18+
{ include: ['<QtCore/qglobal.h>', 'private', '<QtGlobal>', 'public'] },
19+
{ include: ['"QtCore/qglobal.h"', 'private', '<QtGlobal>', 'public'] },
20+
{ include: ['"qtypeinfo.h"', 'private', '<QtGlobal>', 'public'] },
21+
{ include: ['<qtypeinfo.h>', 'private', '<QtGlobal>', 'public'] },
22+
23+
24+
{ symbol: ['main', 'private', '<QApplication>', 'public'] },
25+
26+
{ symbol: ['QCharRef', 'private', '<QString>', 'public'] },
27+
28+
{ symbol: ['QDebug', 'private', '<QDebug>', 'public'] },
29+
{ symbol: ['QDebug', 'private', '<QtDebug>', 'public'] },
30+
{ symbol: ['qCritical', 'private', '<QtGlobal>', 'public'] },
31+
{ symbol: ['qDebug', 'private', '<QtGlobal>', 'public'] },
32+
{ symbol: ['qFatal', 'private', '<QtGlobal>', 'public'] },
33+
{ symbol: ['qInfo', 'private', '<QtGlobal>', 'public'] },
34+
{ symbol: ['qWarning', 'private', '<QtGlobal>', 'public'] },
35+
36+
{ symbol: ['QDoubleSpinBox', 'private', '<QDoubleSpinBox>', 'public'] },
37+
{ symbol: ['QVBoxLayout', 'private', '<QVBoxLayout>', 'public'] },
38+
39+
{ symbol: ['QAtomicInt', 'private', '<QAtomicInt>', 'public'] },
40+
41+
{ symbol: ['QCloseEvent', 'private', '<QCloseEvent>', 'public'] },
42+
{ symbol: ['QContextMenuEvent', 'private', '<QContextMenuEvent>', 'public'] },
43+
{ symbol: ['QDragEnterEvent', 'private', '<QDragEnterEvent>', 'public'] },
44+
{ symbol: ['QDropEvent', 'private', '<QDropEvent>', 'public'] },
45+
{ symbol: ['QFileOpenEvent', 'private', '<QFileOpenEvent>', 'public'] },
46+
{ symbol: ['QFocusEvent', 'private', '<QFocusEvent>', 'public'] },
47+
{ symbol: ['QHelpEvent', 'private', '<QHelpEvent>', 'public'] },
48+
{ symbol: ['QKeyEvent', 'private', '<QKeyEvent>', 'public'] },
49+
{ symbol: ['QMouseEvent', 'private', '<QMouseEvent>', 'public'] },
50+
{ symbol: ['QMoveEvent', 'private', '<QMoveEvent>', 'public'] },
51+
{ symbol: ['QResizeEvent', 'private', '<QResizeEvent>', 'public'] },
52+
{ symbol: ['QCharRef', 'private', '<QString>', 'public'] },
53+
54+
{ symbol: ['QLatin1Char', 'private', '<QLatin1Char>', 'public'] },
55+
{ symbol: ['QLatin1String', 'private', '<QLatin1String>', 'public'] },
56+
{ symbol: ['QListWidgetItem', 'private', '<QListWidgetItem>', 'public'] },
57+
{ symbol: ['QMetaObject', 'private', '<QMetaObject>', 'public'] },
58+
{ symbol: ['QMetaObject::Call', 'private', '<QMetaObject>', 'public'] },
59+
{ symbol: ['QModelIndex', 'private', '<QModelIndex>', 'public'] },
60+
{ symbol: ['QModelIndexList', 'private', '<QModelIndexList>', 'public'] },
61+
{ symbol: ['QNoDebug', 'private', '<QtDebug>', 'public'] },
62+
{ symbol: ['QObjectData', 'private', '<QObjectData>', 'public'] },
63+
{ symbol: ['QPaintEvent', 'private', '<QPaintEvent>', 'public'] },
64+
{ symbol: ['QPointF', 'private', '<QPointF>', 'public'] },
65+
{ symbol: ['QRegularExpressionIterator', 'private', '<QRegularExpressionIterator>', 'public'] },
66+
{ symbol: ['QRegularExpressionMatch', 'private', '<QRegularExpressionMatch>', 'public'] },
67+
{ symbol: ['QRegularExpressionValidator', 'private', '<QRegularExpressionValidator>', 'public'] },
68+
{ symbol: ['QTableWidget', 'private', '<QTableWidget>', 'public'] },
69+
{ symbol: ['QTableWidgetItem', 'private', '<QTableWidgetItem>', 'public'] },
70+
{ symbol: ['QTextBlock', 'private', '<QTextBlock>', 'public'] },
71+
{ symbol: ['QTextCharFormat', 'private', '<QTextCharFormat>', 'public'] },
72+
{ symbol: ['QTextCharFormat::FontPropertiesSpecifiedOnly', 'private', '<QTextCharFormat>', 'public'] },
73+
{ symbol: ['QTextCharFormat::FontPropertiesAll', 'private', '<QTextCharFormat>', 'public'] },
74+
{ symbol: ['QTextCharFormat::NoUnderline', 'private', '<QTextCharFormat>', 'public'] },
75+
{ symbol: ['QTextCharFormat::SingleUnderline', 'private', '<QTextCharFormat>', 'public'] },
76+
{ symbol: ['QTextCharFormat::DashUnderline', 'private', '<QTextCharFormat>', 'public'] },
77+
{ symbol: ['QTextCharFormat::DotLine', 'private', '<QTextCharFormat>', 'public'] },
78+
{ symbol: ['QTextCharFormat::DashDotLine', 'private', '<QTextCharFormat>', 'public'] },
79+
{ symbol: ['QTextCharFormat::DashDotDotLine', 'private', '<QTextCharFormat>', 'public'] },
80+
{ symbol: ['QTextCharFormat::WaveUnderline', 'private', '<QTextCharFormat>', 'public'] },
81+
{ symbol: ['QTextCharFormat::SpellCheckUnderline', 'private', '<QTextCharFormat>', 'public'] },
82+
{ symbol: ['QTextCharFormat::AlignNormal', 'private', '<QTextCharFormat>', 'public'] },
83+
{ symbol: ['QTextCharFormat::AlignSuperScript', 'private', '<QTextCharFormat>', 'public'] },
84+
{ symbol: ['QTextCharFormat::AlignSubScript', 'private', '<QTextCharFormat>', 'public'] },
85+
{ symbol: ['QTextCharFormat::AlignMiddle', 'private', '<QTextCharFormat>', 'public'] },
86+
{ symbol: ['QTextCharFormat::AlignBottom', 'private', '<QTextCharFormat>', 'public'] },
87+
{ symbol: ['QTextCharFormat::AlignTop', 'private', '<QTextCharFormat>', 'public'] },
88+
{ symbol: ['QTextCharFormat::AlignBaseline', 'private', '<QTextCharFormat>', 'public'] },
89+
90+
{ symbol: ['QDoubleValidator', 'private', '<QDoubleValidator>', 'public'] },
91+
{ symbol: ['QIntValidator', 'private', '<QIntValidator>', 'public'] },
92+
{ symbol: ['QValidator', 'private', '<QValidator>', 'public'] }
93+
]

0 commit comments

Comments
 (0)