← 返回首页
Missing named arguments in formatting call — CodeQL query help documentation CodeQL docs
CodeQL documentation
CodeQL resources

Missing named arguments in formatting call

ID: py/str-format/missing-named-argument Kind: problem Security severity: Severity: error Precision: high Tags: - quality - reliability - correctness Query suites: - python-code-quality.qls - python-security-and-quality.qls

Click to see the query in the CodeQL repository

A formatting expression, that is an expression of the form the_format.format(args) or format(the_format, args), can use named fields. If it does, then keyword arguments must be supplied for all named fields. If any of the keyword arguments are missing then a KeyError will be raised.

Recommendation

Change the format to match the arguments and ensure that the arguments have the correct names.

Example

In the following example, if unlikely_condition() is true, then a KeyError will be raised as the keyword parameter eggs is missing. Adding a keyword parameter named eggs would fix this.

def unsafe_named_format(): the_format = "{spam} {eggs}" if unlikely_condition(): return the_format.format(spam="spam", completely_different="eggs") else: return the_format.format(spam="spam", eggs="eggs")

References