Qt-WritingToTemporary

Catches when calling setters on temporaries

Required inputs: IR

Catches when calling setters on temporaries.

The example

    widget->sizePolicy().setHorizontalStretch(1);
should be written as

    QSizePolicy sp = widget->sizePolicy();
    sp.setHorizontalStretch(1);
    widget->setSizePolicy(sp);
            

The method must be of void return type, non-static and non-const. For unknown classes only methods starting with "set" are reported unless widen_criteria is true and ignore_unknown_classes is false. In contrast to clazy ignore_unknown_classes is true by default.

This rule is based on clazy rule writing-to-temporary

Possible Messages

Key

Text

Severity

Disabled

writing_to_temporary

Call to temporary is a no-op.

None

False

Options

ignore_unknown_classes

ignore_unknown_classes : bool = True

treat unknown classes like ignored classes.
 

ignored_classes

ignored_classes

Type: set[bauhaus.analysis.config.QualifiedName]

Default: {'KConfigGroup', 'QDomElement', 'QDomNode', 'QJSValue', 'QScriptValue', 'QTextBlock', 'QTextCursor', 'QTextLine', 'QTextTableCell', 'QWebElement'}

Classes being ignored for method calls.
 

ignored_methods

ignored_methods : set[bauhaus.analysis.config.QualifiedName] = {'QColor::getCmyk', 'QColor::getCmykF'}

Methods being ignored by this rule.
 

known_classes

known_classes

Type: set[bauhaus.analysis.config.QualifiedName]

Default: {'QBitmap', 'QByteArray', 'QColor', 'QHash', 'QLinkedList', 'QList', 'QMap', 'QPoint', 'QPointF', 'QRect', 'QRectF', 'QSet', 'QSize', 'QSizeF', 'QSizePolicy', 'QString', 'QUrl', 'QVarLengthArray', 'QVector', 'QVector2D', 'QVector3D', 'QVector4D'}

For known classes all methods are considered. All classes not contained in this set are either ignored or unknown classes.
 

level

level : int = 0

Importance level of the rule as given for clazy. 0 is most desirable, higher values fall off in quality.
 

widen_criteria

widen_criteria : bool = False

If false, only methods starting with "set" of unknown classes are considered; if true, all methods of non-ignored classes are considered.