Files
codeql/python/ql/src/Classes/ShouldBeContextManager.ql
2018-11-19 15:10:42 +00:00

20 lines
678 B
Plaintext

/**
* @name Class should be a context manager
* @description Making a class a context manager allows instances to be used in a 'with' statement.
* This improves resource handling and code readability.
* @kind problem
* @tags maintainability
* readability
* convention
* @problem.severity recommendation
* @sub-severity high
* @precision medium
* @id py/should-be-context-manager
*/
import python
from ClassObject c
where not c.isC() and not c.isContextManager() and exists(c.declaredAttribute("__del__"))
select c, "Class " + c.getName() + " implements __del__ (presumably to release some resource). Consider making it a context manager."