常量比较¶
ID: py/comparison-of-constants
Kind: problem
Security severity:
Severity: warning
Precision: very-high
Tags:
- maintainability
- useless-code
- external/cwe/cwe-570
- external/cwe/cwe-571
Query suites:
- python-security-and-quality.qls
当比较两个常量时,通常表明存在错误,因为比较的布尔值将始终相同。在非常旧的代码中,这可能用于初始化 True
和 False
。
建议¶
将值与其自身进行比较从来都不是好的做法。如果确实需要常量行为,请使用布尔文字 True
或 False
,而不是以模糊的方式将其编码为 1 == 1
或类似的代码。如果存在错误,请确定所需的行为并进行更正。
示例¶
在此示例中,旧代码使用 1==1
初始化 __builtins__.True
。自 2003 年以来发布的所有 Python 版本中,此代码已不再必要,可以删除。
#Interoperate with very old versions of Python (pre 2.3)
try:
True
except NameError:
__builtins__.True = 1==1