未使用的全局变量¶
ID: py/unused-global-variable
Kind: problem
Security severity:
Severity: recommendation
Precision: high
Tags:
- efficiency
- useless-code
- external/cwe/cwe-563
Query suites:
- python-security-and-quality.qls
定义了一个全局(模块级)变量(通过赋值),但从未使用过,也没有通过包含在 __all__
列表中明确地公开。
有时需要一个未使用的变量。这些未使用的变量应该具有区别性的名称,以便代码的读者清楚地知道它们是故意不使用的。最常见的约定是将变量命名为 _
或将变量名的开头加上 unused
或 _unused
。
该查询接受以下名称,用于表示旨在不使用的变量
任何完全由下划线组成的名称。
任何包含
unused
的名称。名称
dummy
或empty
。任何形式为
__xxx__
的“特殊”名称。例如x, y = func()
中定义的变量被集体处理。如果它们都未使用,则会报告此问题。否则,它们都被视为已使用。
建议¶
如果该变量是为了文档目的或出于其他原因而故意不使用的,则更改其名称以指示它未被使用,否则删除该赋值(注意不要删除右侧,如果它有副作用)。
示例¶
在此示例中,random_no
变量从未被读取,但其赋值有副作用。因此,重要的是只删除第 9 行赋值的左侧。
import random
def write_random_to_file():
no = random.randint(1, 10)
with open("random.txt", "w") as file:
file.write(str(no))
return no
random_no = write_random_to_file()