Why this matters
Failing to close resources like files or sockets can lead to resource leaks and undefined behavior. Using `finally` ensures resources are released even if an error occurs.
Detect code where resources (files, sockets, etc.) are not closed in a `finally` block. Using `finally` ensures that resources are released, even if an exception is raised.
Failing to close resources like files or sockets can lead to resource leaks and undefined behavior. Using `finally` ensures resources are released even if an error occurs.
Side-by-side examples engineers can pattern-match during review.
file = open("test.txt")
data = file.read()try:
file = open("test.txt")
data = file.read()
finally:
file.close()
file = open("test.txt")
data = file.read()try:
file = open("test.txt")
data = file.read()
finally:
file.close()
From the same buckets as this rule.
Check if loops use equality operators (== or !=) in termination conditions. These can lead to infinite loops if the condition is never met exactly. Instead, use relational operators like < or > for safer loop termination.