summaryrefslogtreecommitdiffstats
path: root/src/qdoc/doc/qdoc-warnings.qdoc
blob: 198a9990d2576bdb391a3897f9eaf4fec17bb35f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
/****************************************************************************
**
** Copyright (C) 2021 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the documentation of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:FDL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU Free Documentation License Usage
** Alternatively, this file may be used under the terms of the GNU Free
** Documentation License version 1.3 as published by the Free Software
** Foundation and appearing in the file included in the packaging of
** this file. Please review the following information to ensure
** the GNU Free Documentation License version 1.3 requirements
** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
** $QT_END_LICENSE$
**
****************************************************************************/

/*!
    \page qdoc-warnings.html
    \previouspage Categories of Documentation

    \title How to Resolve QDoc Warnings

    QDoc may issue warnings when generating your documentation set.
    This section describes what these warnings mean and how to resolve
    them. This document does not describe warnings generated by Clang.

    \section1 Can't link to <target>

    QDoc issues this warning when one part of the documentation
    (identified in the warning message) tries to refer to another,
    but doesn't correctly specify that other, the target of the link.
    This may arise because the reference to it is mistyped or because
    the target has changed name (for a function or type) or title
    (for another section).

    Search the source code for that particular link target.  If you get no
    results, gradually make the search less specific until you find a match.

    If the link target looks like the name of a type or function,
    this could also be due to:

    \list
    \li The name (or, for functions, where specified, signature) used
        where it is documented not matching the name used in its
        declaration.
    \li The link target being marked as \l {internal-command}{\\internal} when the linking
        text was not.
    \endlist

    \section1 Cannot find snippets file to quote from

    QDoc issues this warning if it is unable to find the file named
    after a \l {snippet-command}{\\snippet} or \l {quotefromfile-command}{\\quotefromfile} command.

    Some useful steps for correcting this:

    \list
    \li Check if the snippet file name is correct. QDoc appends the
        snippet file name to each of the directories given in the
        search path, to get a path-name for a candidate file to look
        for. It produces this error when none of these candidates exist.
    \li Check the search path for snippets, given by the \c exampledirs
        configuration variable in the \c{*.qdocconf} file. You may need
        to add an entry to this path, or correct an existing entry.
    \li Check if the snippet file exists, or if it has been moved, renamed
        or removed, which may happen when there are changes to the source
        code that QDoc tries to quote from.
    \endlist

    \section1 Unexpected \\snippet

    QDoc issues this warning if it is unable to locate the snippet file
    quoted in a \l {snippet-command}{\\snippet} command.

    \section1 Undocumented return value

    For functions whose return-type is not void, QDoc checks if the return
    value is documented. This warning is issued if the documentation for a
    function or method doesn't contain a word starting with "return".

    \section1 Undocumented parameter

    QDoc requires the documentation of a function or method to describe
    every parameter.  It recognizes this by each parameter name (as
    specified where the function or method is declared in a header file)
    appearing after a \l {a-command}{\\a} command.

    \section1 No such parameter

    QDoc issues this warning when the parameter name given after an
    \l{a-command}{\\a} command does not match any of the parameters named
    in the header-file's declaration of the function or method being
    documented.

    \section1 Unknown macro

    QDoc issues this warning when it sees a backslash, \c{\}, followed
    by a token it does not recognize as the name of a \l {macro-variable}{built-in command}
    or a \l {alias-variable}{user-defined macro}. When quoting code
    that contains character escape sequences, you should enclose the
    code in \\c{...} to prevent this warning against the escape sequences.

    \section1 Clang couldn't find function when parsing \\fn <signature>

    When Clang parses a function statement after \l {fn-command}{\\fn}, it checks
    this against the declaration in the header file.  If Clang
    discovers discrepancies, it will issue this warning message.

    \section1 C++ class <ClassName> not found: \\instantiates <ClassName>

    If you describe a QML type, you may specify the class it instantiates.
    Refer to the \l{instantiates-command}{\\instantiates} command in the
    \l {QDoc manual}.

    \section1 Cannot tie this documentation to anything

    QDoc found a \\beginqdoc ... \\endqdoc comment, with no \l{Topic Commands}{topic command}, that was
    not immediately followed by a class, function or property definition.
    It thus does not know what the comment documents.

    \section1 This qdoc comment contains no topic command (e.g., \\module, \\page)

    If a QDoc comment doesn't contain a \l {Topic Commands}{topic command}, QDoc does
    not know what the comment documents, and will issue this warning.
    Very similar to \l {Cannot tie this documentation to anything}, but
    specific to comments that are not in C++ or QML files.

    \section1 <name> documented more than once (The previous doc is here)

    QDoc issues this warning when it finds two comments that
    document the same item. The warning comes in two parts,
    one giving the later occurrence, the other the first.

    For example, you see this warning when a function has a documentation
    comment preceding its definition, and a separate \\fn comment
    elsewhere.

    \section1 Namespace <name> documented more than once

    This warning means that a documentation set contains two comments
    containing \l {namespace-command}{\\namespace} commands with the same
    argument, <name>.

    \section1 Clang couldn't find function when parsing \\fn <signature>

    When parsing a \l {fn-command}{\\fn} statement, Clang will compare this with the
    function declaration in the header file. If the signature differs
    Clang will issue this warning.

    \note
    \list
        \li A member of a class or namespace needs to include the class or namespace
            prefix on the member name.
        \li A \\fn with no return type will match, regardless of the actual return
            type, but if it specifies an incorrect return type, it won't match.
        \li Differences in \\fn's parameter names don't preclude matching, although
            the \l {a-command}{\\a} commands in the comment must use the names in the declaration.

    \endlist

    \section1 Has no \\inmodule command

    QDoc will issue this warning if the QDoc comments do not relate
    a class, namespace, or headerfile to a module with the
    \l{inmodule-command}{\\inmodule} command.

    If the QDoc comment describes an entity that's not a member of
    some other entity (typically a namespace or class), it should use
    either \l {relates-command}{\\relates} or \l {inmodule-command}{\\inmodule}
    to associate it with its broader context. This warning is raised
    if it does not.

    \section1 Cannot find <name> specified with \\<command> in any header file

    This means that QDoc cannot find a declaration of <name> in any
    header file, but has found a comment that claims to document it.

    An example:
    \badcode
    Cannot find 'Color::Red' specified with '\enum' in any header file.
    \endcode

    A documentation comment claims to describe an enum, but QDoc didn't
    find a definition of that enum in a header file.

    This may also be due to:

    \list
        \li a typo in <name> or <command>
        \li a missing namespace-or-class prefix
        \li <name> having moved to another namespace or class
    \endlist

    \section1 Unrecognizable QML module/component qualifier for <identifier>

    A parameter passed to \l {qmlproperty-command}{\\qmlproperty} or
    \l {qmlmethod-command}{\\qmlmethod} contains a combination of
    qmlModule::qmlType::identifier that is not defined anywhere.

    Example:
    \badcode
    Unrecognizable QML module/component qualifier for real QtQuick::DragHandler::DragAxis::minimum
    \endcode

    DragHandler doesn't have a property called DragAxis.

    \section1 Missing property type for <name>

    A declaration of a \l {qmlproperty-command}{\\qmlproperty} is missing its property type.

    The \\qmlproperty command expects to be followed by the property type, then the
    fully-qualified name of the property (i.e. the name ::-joined after the name of the
    class it belongs to).

    Incorrect:
      \badcode
      \qmlproperty MyWidget::count
      \endcode

    Correct:
      \badcode
      \qmlproperty int MyWidget::count
      \endcode

    \section1 QML property documented multiple times: <identifier>

    QDoc uses this warning when it finds two QDoc comments that document
    the same QML property, either by appearing just before its definition,
    or using the \l {qmlproperty-command}{\\qmlproperty} command.

    \section1 Command <command> not allowed with QML/JS property commands

    Example:

    \badcode
    \qmlproperty real QtQuick.Controls::RangeSlider::first.value
    \qmlproperty real QtQuick.Controls::RangeSlider::first.position
    \qmlproperty real QtQuick.Controls::RangeSlider::first.visualPosition
    \qmlsignal void QtQuick.Controls::RangeSlider::first.moved()
    \qmlsignal void QtQuick.Controls::RangeSlider::second.moved()
    \endcode

    Error message:

    \badcode
    Command '\\qmlsignal' not allowed with QML/JS property commands
    \endcode

    This warning is specific to property group documentation.  QDoc
    allows multiple (qml|js)property or (qml|js)attachedproperty topic commands
    in a single documentation comment to document a property group
    where the last element in the path is <group>.<property>. Any other topic
    commands will trigger this warning.

    \section1 Cannot find base function for <method> in <class>

    QDoc produces this warning if \\reimp is used to document a method,
    as an override of a virtual method, when no base class has a virtual
    method with the given name and signature. This may happen because
    the method it was written to override has changed its signature, or is
    no longer virtual.

    \section1 Illegal \\reimp; no documented virtual function for <command>

    Qdoc tries to create a  link to the function that this one reimplements,
    but it could not find the link target, likely because that
    function is not documented. This can also arise if no base class
    has a virtual method with this name and signature; which might
    arise due to a renaming, a change in signature or the base no
    longer declaring it virtual.

    \section1 <class> tries to inherit itself

    The \l {inherits-command}{\\inherits} command is used to document that a QMl type
    inherits some other QML type. This warning is issued if that other
    QML type is the same as the QML type documented.

    Example:

    \badcode
        \qmltype Foo
        \inherits Foo
    \endcode

    \section1 \\instantiates is only allowed in \\qmltype

    The \l{instantiates-command}{\\instantiates} command can only be used in a QDoc comment
    that documents a QML type.

    \section1 All properties in a group must belong to the same type: <name>

    When documenting QML property groups, all properties listed in
    the comment block must belong to the same QML type.

    \section1 Cannot find project file for example <name>

    In the example's source directory, QDoc expects to find a project
    file named \c{CMakeLists.txt}, or a file with a \c{.pro}, \c{.qmlproject}, or
    \c{.pyproject} extension where the base name matches that of the example
    directory. For example, \c {examples/mymodule/helloworld/helloworld.pro}.

    \section1 Command name <alias> cannot stand for both <first> and <later>

    QDoc issues this warning when one name is \l {alias-variable}{aliased} to more
    than one command when reading the configuration.

    \section1 Cannot open file to quote from: <filename>

    The search path for <filename> is defined by the following
    variables in the \c{.qdocconf} file:  \c{sources}, \c{sourcedirs},
    and \c{exampledirs}.

    QDoc failed to find a file named in a command (such as
    \l {quotefromfile-command}{\\quotefromfile},
    \l {snippet-command}{\\snippet}, \l {include-command}{\\include})
    that tells it to retrieve content from the named file. It searches
    each directory named in the search path.  If there is no file with
    this name in any of those directories, or the file is found but not
    readable, QDoc issues this warning. Check that the combination of
    search path and <filename> is correctly spelled, and that you have
    read permissions for the file.

    \note <filename> may include a directory name prefix; the whole
          <filename> is appended to each directory in the search path.

    \sa {Cannot find qdoc include file <filename>}

    \section1 Missing format name after \\raw

    The \l {raw-command}{\\raw} command and the corresponding \l {raw-command}{\\endraw}
    command delimit a block of raw mark-up language code. The \\raw
    command must be followed by the format name. For now, this can
    only be HTML.

    \section1 Macro cannot have both format-specific and qdoc-syntax definitions

    A \l {macro-variable}{\\macro} that specifies an output format cannot also
    have a generic definition.

    An example of a configuration that will trigger this warning:

    \badcode
    macro.gui = \b
    macro.gui.HTML = "<b>\1</b>"
    \endcode

    \section1 Unknown command <name>

    When a QDoc comment uses a backslash followed by a token that is not
    a QDoc built-in command and has not been defined as a custom command
    using \l {alias-variable}{\\alias} or \l {macro-variable}{macro}, QDoc produces this
    warning. Check the spelling of the command name and look to see if
    your QDoc configuration has neglected to include whatever would have
    defined it, if it is a custom command.

    This may also be produced due to code being quoted in the QDoc comment,
    for example the author may have referred to the C string termination
    character \c{'\0'} or one of the other C string escape sequences such
    as \c{'\n'} without escaping the backslash. Escape the backslash
    as \c{\} to include a literal backslash in the documentation, or
    enclose the code fragment in \c{\c{...}}, which suppresses
    interpretation of backslashes as introducing QDoc commands.

    \section1 Duplicate target name <target>

    This means that there are two \l {target-command}{\\target} commands
    with the same parameter. They should be unique.
    This warning will be followed by the warning "The previous
    occurrence is here".

    \section1 Cannot find qdoc include file <filename>

    QDoc failed to find an include file named in a command.
    QDoc searches each directory named in the search path.
    If there is no file with this name in any of those directories,
    or the file found in that search is not readable, QDoc issues
    this warning. Check that the combination of search path and
    <filename> is correctly spelled, and that you have read permissions
    for the file.

    \note <filename> may include a directory name prefix; the whole
          <filename> is appended to each directory in the search path.

    \sa {Cannot open file to quote from: <filename>}

    \section1 Cannot find <tag> in <file>

    This means QDoc cannot find the identifier <id> in the
    \l{include-command}{\\include} <file> or {snippet-command}{\\snippet} <file>.

    \section1 Empty qdoc snippet <tag> in <file>

    The snippet  <tag> was found in the \l {snippet-command}{\\snippet} <file>, but it is empty.

    \section1 Cannot nest <command> commands

    This warning concerns formatting commands: bold, italic,
    index, link, span, subscript, superscript, teletype, uicontrol,
    underline. A formatting command cannot be used within the text
    it applies to. An example of this:

    \badcode
    There is \b{no \b{super-}bold}.
    \encode

    \section1 Can't use <inner> in <outer>

    This warning is issued for commands that cannot be nested.

    Example:
    \badcode
        \list
            \li \table
                \row \li Hello \li Hi
                \endtable
        \endlist
    \endcode

    Will result in the QDoc warning "Can't use '\\table' in '\\list'".

    \section1 Missing <outer> before <inner>

    Some examples:

    \list
    \li The \l {li-command}{\\li} command can only be used inside a \l {list-command}{\\list}
        or a \l {row-command}{\\row} of a \l {table-command}{\\table}.
    \li The \l {row-command}{\\row} and \l {header-command}{\\header} commands can only be
        used within a \l {table-command}{\\table}.
    \endlist

    \section1 Unexpected <end_command>

    This warning is issued if, for example, you have an \l {list-command}{\\endlist} without
    a preceding \l {list-command}{\\list}. It applies to all commands that come in pairs (e.g.
    startFoo/endFoo).

    \section1 Missing comma in \\sa

    The titles listed for a \l {sa-command}{\\sa} command should be separated
    from one another with commas.

    \section1 Macro <command> does not have a default definition

    QDoc is attempting to expand a macro, and expects that macro to
    have a default definition. Some macros may only have format-specific
    definitions.

    Example:
    \badcode
    macro.pi.HTML = "&pi;"    # encodes the pi symbol for HTML output format
    \endcode

    There are however instances where macro expansion requires a
    format-independent macro. For example, you can have macros in
    section titles, but they must have default definitions.

    \section1 Macro <macro> invoked with too few arguments (expected <many>, got <few>)

    The given macro needs more parameters than it was given.  See
    the definition of the macro in the configuration for further
    details.

    \section1 Unbalanced parentheses in <text>

    Points to a '(' without a corresponding ')', or vice versa.

    \section1 No documentation for <name>

    Example:

    \badcode
    Warning "No documentation for QNativeInterface."
    \endcode

    QDoc detects the declaration of namespace QNativeInterface in
    a header file, but does not find a QDoc comment where that
    namespace has been documented.

    \section1 No such enum item <name> in <class>

    Example:

    \badcode
    Cannot find 'QSGMaterialRhiShader::RenderState::DirtyState' specified
    with \enum in any header file.
    \endcode

    QDoc issues this warning when it finds a \l{value-command}{\\value} directive in an
    \l{enum-command}{\\enum} comment that names a value not found in the header file that declared
    the enumerated type documented.

    \section1 Undocumented enum item <enum> in <enum list>

    <enum list>'s \l {value-command}{\\value} or \l {omitvalue-command}{\\omitvalue} entries
    did not include one for \l {enum-command}{<enum>}, which is named in the
    declaration of <enum list> in the header file.

    \section1 Failed to find index: <filename>

    Example:

    \badcode
    Failed to find index: path/to/QtCrator/appmanplugin/manual.index
    \endcode

    In this case, it clearly means the indexes variable contains a
    typo in the path of the index file.

    Incorrect:
      \badcode
      indexes += path/to/QtCrator/appmanplugin/manual.index
      \endcode

    Correct:
      \badcode
      indexes += path/to/QtCreator/appmanplugin/manual.index
      \endcode

    \section1 \\generatelist examplefiles can only be used with \\example topic command

    The command "\\generatelist examplefiles" can only be used in example
    documentation (i.e., when the topic command is \\example).

    \section1 \\generatelist <group> is empty

    Below a short overview of all possible arguments for \l {generatelist-command}{\\generatelist}:
    \list
    \li \\generatelist annotatedexamples
    \li \\generatelist annotatedattributions
    \li \\generatelist classes <prefix>
    \li \\generatelist classesbymodule <module name>
    \li \\generatelist qmltypesbymodule <module name>
    \li \\generatelist jstypesbymodule <module_name>
    \li \\generatelist examplesfiles <regular expression>
    \li \\generatelist exampleimages <regular expression>
    \li \\generatelist functionindex
    \li \\generatelist legalese
    \li \\generatelist overviews
    \li \\generatelist attributions
    \li \\generatelist related
    \endlist

    QDoc will issue this warning if you specify \c{\generatelist <group>}
    and the group does not contain any items, or if you specify
    \c{\generatelist <group> <pattern>} and no item in the group
    matches the pattern.

    \section1 \\generatelist <group> no such group

    This warning will be issued if the argument to \l {generatelist-command}{\\generatelist}
    is a non-existing group.

    Example:

    \code
    \generatelist draganddrop
    \endcode

    This statement generates a list of classes or QML types in the
    draganddrop group.  Classes or QML types are added to the
    draganddrop group by the \c{\l {ingroup-command}{\ingroup} draganddrop} command in their
    \l {class-command}{\\class} or \l {qmltype-command}{\\qmltype} comment.

    QDoc will issue this warning message if no entity has
    this \c{\ingroup draganddrop} statement.

    \section1 Missing image: <imagefile>

    The search path to the image is wrong, or the image file does not exist.

    \section1 Can't link to <target>

    This can have a variety of causes:

    \list
       \li The link target has not been defined with a QDoc topic command,
           e.g. {title-command}{\\title} <target>.
       \li The <target> contains a typo.
       \li The document that contains that link target did not get compiled.
       \li The document that contains that link target is in a module that is
           not in the compilation path.
       \li The link target is in another module, and a dependency to that
           module was not set in the configuration or QDoc failed to locate
           the index file for the dependency.
    \endlist

    \section1 Could not resolve QML import statement for type <name>

    QDoc issues this warning if you document a QML type, but omit
    the \l{inqmlmodule-command}{\\inqmlmodule} command.
    Example:

    \badcode
    Could not resolve QML import statement for type 'ItemSelectionModel'
    \encode

    Incorrect:
      \badcode
      \qmltype ItemSelectionModel
      \instantiates QItemSelectionModel
      \since 5.5
      \ingroup qtquick-models
      \endcode
    Correct:
      \badcode
      \qmltype ItemSelectionModel
      \instantiates QItemSelectionModel
      \inqmlmodule QtQml.Models
      \since 5.5
      \ingroup qtquick-models
      \endcode

    \section1 \\brief statement does not end with a full stop

    The argument to the \\brief command is a sentence, summarizing
    the topic documented, so should end in a full stop. It should
    also be brief.

    \section1 QtDeclarative not installed; cannot parse QML or JS

    QDoc issues this warning if it has been compiled without support
    for QML/JS parsing. This should not happen unless you have a
    custom build of QDoc.

    \section1 Invalid regular expression <regex>

    Some QDoc commands take regular expressions as parameters. QDoc
    gives this warning when the text given as such a parameter is not
    a valid regular expression, usually due to it containing characters
    with special meanings in regular expressions, that should have been
    escaped.

    Example:

    \badcode
    notifications.qdoc:56: (qdoc) warning: Invalid regular expression '^})$'
    \endcode

      \badcode
      \quotefromfile webenginewidgets/notifications/data/index.html
      \skipuntil resetPermission
      \endcode

    Invalid regular expression:
      \badcode
      \printuntil /^})$/
      \endcode

    Valid regular expression:
      \badcode
      \printuntil /^\}\)$/
      \endcode


    The \l {printuntil-command}{\\printuntil} command will print until it
    meets a line consisting of only a right curly brace followed by a
    right parenthesis. In this case, the curly brace and the parenthesis
    need to be escaped because they have special meanings in regular
    expressions.

    \section1 Multiple index files found for dependency <indexfile>:<depend>
              Using <indexfile> as index file for dependency <depend>

    Multiple \c{-indexdir} paths were passed to QDoc as command line options,
    and more than one contained an \c{.index} file that matches a dependency.
    QDoc picks the one with the latest timestamp automatically.

    Typically, this warning indicates that there are build artifacts left
    from a previous documentation build.

    \section1 Cannot locate index file for dependency <depend>

    Example:

    \badcode
    "QMake" Cannot locate index file for dependency "activeqt"
    \endcode

    The documentation project QMake could not locate activeqt.index
    in any of the specified index directories. In this case, the
    specified index directories are specified in qmake.qdocconf.

    \section1 Dependent modules specified, but no index directories were set.

    QDoc expected to see one or more -indexdir arguments on the command line.
    Without them, QDoc cannot locate the index files of any dependencies
    defined with the 'depends' configuration variable.

    \section1 Overrides a previous doc (The previous doc is here)

    When QDoc finds two comments that appear to describe the same
    entity, it issues this warning and tells you where to find the
    other comment. The warning comes in two parts, one giving the
    later occurrence, the other the first.

    \section1 Unrecognized list style <name>

    \\list can take an optional argument: a single number or character
    that modifies the list style. Refer to the {list-command}{\\list}
    documentation for more details. If you use an argument that is
    not recognized, QDoc will issue this warning.

    \section1 Unable to parse QML snippet: <code> at line <y>, column <x>

    QDoc comments can contain QML code. This code can be found in a snippet,
    or in the QDoc comments delimited by \l {qml-command}{\\qml} and {endqml-command}{\\endqml}.

    Example:

    If there is a syntax error in the QML code, QDoc will issue the warning
    \badcode
    Unable to parse QML snippet: Syntax error at line 97, column 42
    \endcode

    Snippets can also contain QML and also there the code is checked. If there is
    for example a missing curly brace in the code, QDoc will issue the warning
    \badcode
    Unable to parse QML snippet: Expected token '{' at line 63, column 52
    \endcode

    QDoc often fails to parse incomplete QML snippets; in these cases,
    it's often OK to replace the \\qml ... \\endqml commands with
    \\code ... \\endcode to suppress this warning.

    \section1 Command <command> failed at end of file <filename>

    Example:

    \badcode
    Command "\snippet (//! [2]) failed at end of file qmlbars/qml/qmlbars/main.qml".
    \endcode

    In this case the warning means that the \l {snippet-command}{\\snippet} command did not find a second
    label "\/\/! [2]" to mark the end of the snippet. It could also mean that it didn't
    find any occurrence of that snippet tag in this snippet file.

    Another example:

    \badcode
    Command '\skipto' failed at end of file 'styling/CMakeLists.txt".
    \endcode

    The \l {skipto-command}{\\skipto} + <pattern> moves the cursor to the next line containing
    that pattern. If \\skipto doesn't find it, QDoc will issue this warning.

    \section1 Failed to open <file> for writing

    This warning clearly means it cannot open a file for writing, probably because
    of a wrong path, or permission to write in a certain directory.

    \section1 This page title exists in more than one file

    The \l {title-command}{\\title} command sets the title for a page.

    \code
        \page activeqt-server.html
        \title Building ActiveX servers in Qt
    \endcode

    QDoc will issue this warning if a certain title is used in more than one page.


    \section1 The content is too long

    QDoc uses a fixed-size buffer when tokenizing source files. If any single
    token in the file has more characters than the maximum limit, QDoc will
    issue this warning.

    While QDoc will continue parsing the file, only the part of the token that
    fits into the buffer is considered, meaning that the output might be
    mangled.

    To resolve this warning, the relevant content must be reduced in size,
    either by splitting it, if possible, or by removing some of its parts.

    The maximum amount of characters for a single token is shown alongside
    the warning, for example:

    \badcode
        file.qdoc:71154: (qdoc) warning: The content is too long.

        [The maximum amount of characters for this content is 524288.
        Consider splitting it or reducing its size.]
    \endcode

    \note Since content that is too long will not be parsed in full, QDoc may
    issue warnings that are false positives. Resolve all warnings of this type
    before fixing other warnings.
*/