Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Check for use of debugpy and ptvsd debug modules (#10177) #10194

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
12 changes: 12 additions & 0 deletions crates/ruff_linter/resources/test/fixtures/flake8_debugger/T100.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,19 @@
from celery.contrib.rdb import set_trace
from celery.contrib import rdb
import celery.contrib.rdb
from debugpy import wait_for_client
import debugpy
from ptvsd import break_into_debugger
from ptvsd import enable_attach
from ptvsd import wait_for_attach
import ptvsd

breakpoint()
st()
set_trace()
debugpy.breakpoint()
wait_for_client()
debugpy.listen(1234)
enable_attach()
break_into_debugger()
wait_for_attach()
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,8 @@ fn is_debugger_call(call_path: &CallPath) -> bool {
]
| ["celery", "contrib", "rdb", "set_trace"]
| ["builtins" | "", "breakpoint"]
| ["debugpy", "breakpoint" | "listen" | "wait_for_client"]
| ["ptvsd", "break_into_debugger" | "wait_for_attach"]
Comment on lines +112 to +113
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I tried to pick the API methods that looked like they would be most commonly used based on the documentation:
https://github.com/microsoft/debugpy/?tab=readme-ov-file#debugpy-import-usage
https://github.com/microsoft/ptvsd?tab=readme-ov-file#ptvsd-import-usage

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Spot-checked, makes sense to me.

)
}

Expand All @@ -119,7 +121,7 @@ fn is_debugger_import(call_path: &CallPath) -> bool {
// than (e.g.) `import celery.contrib.rdb`.
matches!(
call_path.as_slice(),
["pdb" | "pudb" | "ipdb"]
["pdb" | "pudb" | "ipdb" | "debugpy" | "ptvsd"]
| ["IPython", "terminal", "embed"]
| ["IPython", "frontend", "terminal", "embed",]
| ["celery", "contrib", "rdb"]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,34 +55,131 @@ T100.py:9:1: T100 Import for `celery.contrib.rdb` found
8 | from celery.contrib import rdb
9 | import celery.contrib.rdb
| ^^^^^^^^^^^^^^^^^^^^^^^^^ T100
10 |
11 | breakpoint()
10 | from debugpy import wait_for_client
11 | import debugpy
|

T100.py:11:1: T100 Trace found: `builtins.breakpoint` used
T100.py:10:1: T100 Import for `debugpy.wait_for_client` found
|
8 | from celery.contrib import rdb
9 | import celery.contrib.rdb
10 | from debugpy import wait_for_client
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ T100
11 | import debugpy
12 | from ptvsd import break_into_debugger
|

T100.py:11:1: T100 Import for `debugpy` found
|
9 | import celery.contrib.rdb
10 |
11 | breakpoint()
10 | from debugpy import wait_for_client
11 | import debugpy
| ^^^^^^^^^^^^^^ T100
12 | from ptvsd import break_into_debugger
13 | from ptvsd import enable_attach
|

T100.py:12:1: T100 Import for `ptvsd.break_into_debugger` found
|
10 | from debugpy import wait_for_client
11 | import debugpy
12 | from ptvsd import break_into_debugger
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ T100
13 | from ptvsd import enable_attach
14 | from ptvsd import wait_for_attach
|

T100.py:14:1: T100 Import for `ptvsd.wait_for_attach` found
|
12 | from ptvsd import break_into_debugger
13 | from ptvsd import enable_attach
14 | from ptvsd import wait_for_attach
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ T100
15 | import ptvsd
|

T100.py:15:1: T100 Import for `ptvsd` found
|
13 | from ptvsd import enable_attach
14 | from ptvsd import wait_for_attach
15 | import ptvsd
| ^^^^^^^^^^^^ T100
12 | st()
13 | set_trace()
16 |
17 | breakpoint()
|

T100.py:12:1: T100 Trace found: `pdb.set_trace` used
T100.py:17:1: T100 Trace found: `builtins.breakpoint` used
|
15 | import ptvsd
16 |
17 | breakpoint()
| ^^^^^^^^^^^^ T100
18 | st()
19 | set_trace()
|
11 | breakpoint()
12 | st()

T100.py:18:1: T100 Trace found: `pdb.set_trace` used
|
17 | breakpoint()
18 | st()
| ^^^^ T100
13 | set_trace()
19 | set_trace()
20 | debugpy.breakpoint()
|

T100.py:13:1: T100 Trace found: `celery.contrib.rdb.set_trace` used
T100.py:19:1: T100 Trace found: `celery.contrib.rdb.set_trace` used
|
11 | breakpoint()
12 | st()
13 | set_trace()
17 | breakpoint()
18 | st()
19 | set_trace()
| ^^^^^^^^^^^ T100
20 | debugpy.breakpoint()
21 | wait_for_client()
|

T100.py:20:1: T100 Trace found: `debugpy.breakpoint` used
|
18 | st()
19 | set_trace()
20 | debugpy.breakpoint()
| ^^^^^^^^^^^^^^^^^^^^ T100
21 | wait_for_client()
22 | debugpy.listen(1234)
|

T100.py:21:1: T100 Trace found: `debugpy.wait_for_client` used
|
19 | set_trace()
20 | debugpy.breakpoint()
21 | wait_for_client()
| ^^^^^^^^^^^^^^^^^ T100
22 | debugpy.listen(1234)
23 | enable_attach()
|

T100.py:22:1: T100 Trace found: `debugpy.listen` used
|
20 | debugpy.breakpoint()
21 | wait_for_client()
22 | debugpy.listen(1234)
| ^^^^^^^^^^^^^^^^^^^^ T100
23 | enable_attach()
24 | break_into_debugger()
|

T100.py:24:1: T100 Trace found: `ptvsd.break_into_debugger` used
|
22 | debugpy.listen(1234)
23 | enable_attach()
24 | break_into_debugger()
| ^^^^^^^^^^^^^^^^^^^^^ T100
25 | wait_for_attach()
|

T100.py:25:1: T100 Trace found: `ptvsd.wait_for_attach` used
|
23 | enable_attach()
24 | break_into_debugger()
25 | wait_for_attach()
| ^^^^^^^^^^^^^^^^^ T100
|