Skip to content

Commit cd4dbb4

Browse files
committed
Python: Port ShouldBeContextManager.ql
Only trivial test changes.
1 parent f64811a commit cd4dbb4

File tree

2 files changed

+7
-5
lines changed

2 files changed

+7
-5
lines changed

python/ql/src/Classes/ShouldBeContextManager.ql

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,12 @@
1414
*/
1515

1616
import python
17-
private import LegacyPointsTo
17+
private import semmle.python.dataflow.new.internal.DataFlowDispatch
1818

19-
from ClassValue c
20-
where not c.isBuiltin() and not c.isContextManager() and exists(c.declaredAttribute("__del__"))
19+
from Class c
20+
where
21+
not DuckTyping::isContextManager(c) and
22+
DuckTyping::hasMethod(c, "__del__")
2123
select c,
2224
"Class " + c.getName() +
2325
" implements __del__ (presumably to release some resource). Consider making it a context manager."
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
| should_be_context_manager.py:3:1:3:22 | class MegaDel | Class MegaDel implements __del__ (presumably to release some resource). Consider making it a context manager. |
2-
| should_be_context_manager.py:16:1:16:22 | class MiniDel | Class MiniDel implements __del__ (presumably to release some resource). Consider making it a context manager. |
1+
| should_be_context_manager.py:3:1:3:22 | Class MegaDel | Class MegaDel implements __del__ (presumably to release some resource). Consider making it a context manager. |
2+
| should_be_context_manager.py:16:1:16:22 | Class MiniDel | Class MiniDel implements __del__ (presumably to release some resource). Consider making it a context manager. |

0 commit comments

Comments
 (0)