Android Uiautomator2 Python Wrapper
This report presents the forensic synthetic code analysis of openatx/uiautomator2, a Python project with 8,246 GitHub stars. SynthScan v2.0 examined 18,415 lines of code across 112 source files, recording 259 pattern matches distributed across 12 syntactic categories. The overall adjusted score of 22.5 places this repository in the Moderate AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 259 distinct pattern matches across 12 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | uiautomator2/agent_cli/options.py | 21 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | uiautomator2/agent_cli/options.py | 23 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | uiautomator2/agent_cli/options.py | 47 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | uiautomator2/agent_cli/options.py | 49 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | uiautomator2/agent_cli/options.py | 86 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | uiautomator2/agent_cli/options.py | 88 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | uiautomator2/agent_cli/options.py | 172 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | uiautomator2/agent_cli/options.py | 174 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | uiautomator2/agent_cli/options.py | 200 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | uiautomator2/agent_cli/commands.py | 23 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | uiautomator2/agent_cli/commands.py | 25 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | uiautomator2/agent_cli/commands.py | 57 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | uiautomator2/agent_cli/commands.py | 59 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | uiautomator2/agent_cli/commands.py | 74 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | uiautomator2/agent_cli/commands.py | 76 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | uiautomator2/agent_cli/commands.py | 144 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | uiautomator2/agent_cli/commands.py | 146 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | uiautomator2/agent_cli/commands.py | 295 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | uiautomator2/agent_cli/commands.py | 297 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | uiautomator2/agent_cli/commands.py | 430 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | uiautomator2/agent_cli/commands.py | 432 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | uiautomator2/agent_cli/commands.py | 475 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | uiautomator2/agent_cli/commands.py | 477 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | uiautomator2/agent_cli/commands.py | 730 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | uiautomator2/agent_cli/commands.py | 732 | # --------------------------------------------------------------------------- | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | uiautomator2/image.py | 304 | CODE | |
| MEDIUM | uiautomator2/image.py | 305 | CODE | |
| MEDIUM | uiautomator2/image.py | 306 | CODE | |
| MEDIUM | uiautomator2/image.py | 308 | CODE | |
| MEDIUM | uiautomator2/image.py | 309 | CODE | |
| MEDIUM | uiautomator2/image.py | 310 | CODE | |
| MEDIUM | uiautomator2/image.py | 312 | CODE | |
| MEDIUM | uiautomator2/image.py | 313 | CODE | |
| MEDIUM | uiautomator2/image.py | 315 | CODE | |
| MEDIUM | uiautomator2/image.py | 317 | CODE | |
| MEDIUM | uiautomator2/image.py | 320 | CODE | |
| MEDIUM | _archived/widget.py | 411 | CODE | |
| MEDIUM | _archived/widget.py | 413 | CODE | |
| MEDIUM | _archived/widget.py | 414 | CODE | |
| MEDIUM | _archived/widget.py | 415 | CODE | |
| MEDIUM | _archived/widget.py | 417 | CODE | |
| MEDIUM | _archived/widget.py | 418 | CODE | |
| MEDIUM | _archived/widget.py | 419 | CODE | |
| MEDIUM | _archived/widget.py | 420 | CODE | |
| MEDIUM | _archived/widget.py | 421 | CODE | |
| MEDIUM | _archived/widget.py | 428 | CODE | |
| MEDIUM | _archived/widget.py | 429 | CODE | |
| MEDIUM | _archived/widget.py | 431 | CODE | |
| MEDIUM | _archived/widget.py | 432 | CODE | |
| MEDIUM | _archived/widget.py | 433 | CODE | |
| MEDIUM | _archived/widget.py | 434 | CODE | |
| MEDIUM | _archived/widget.py | 436 | CODE | |
| MEDIUM | _archived/widget.py | 437 | CODE | |
| MEDIUM | _archived/widget.py | 439 | CODE | |
| MEDIUM | _archived/widget.py | 441 | CODE | |
| MEDIUM | _archived/widget.py | 442 | CODE | |
| MEDIUM | _archived/widget.py | 443 | CODE | |
| MEDIUM | _archived/widget.py | 444 | CODE | |
| MEDIUM | _archived/widget.py | 445 | CODE | |
| MEDIUM | _archived/widget.py | 446 | CODE | |
| MEDIUM | _archived/widget.py | 447 | CODE | |
| MEDIUM | _archived/widget.py | 449 | CODE | |
| MEDIUM | _archived/widget.py | 450 | CODE | |
| MEDIUM | _archived/widget.py | 452 | CODE | |
| MEDIUM | _archived/widget.py | 453 | CODE | |
| MEDIUM | _archived/widget.py | 454 | CODE | |
| MEDIUM | _archived/widget.py | 456 | CODE | |
| MEDIUM | _archived/widget.py | 458 | CODE | |
| MEDIUM | _archived/widget.py | 459 | CODE | |
| MEDIUM | _archived/widget.py | 462 | CODE | |
| MEDIUM | _archived/widget.py | 463 | CODE | |
| MEDIUM | _archived/widget.py | 464 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_input.py | 8 | CODE | |
| LOW | uiautomator2/_selector.py | 1 | CODE | |
| LOW | uiautomator2/_selector.py | 7 | CODE | |
| LOW | uiautomator2/__init__.py | 4 | CODE | |
| LOW | uiautomator2/__init__.py | 4 | CODE | |
| LOW | uiautomator2/__init__.py | 25 | CODE | |
| LOW | uiautomator2/__init__.py | 25 | CODE | |
| LOW | uiautomator2/__init__.py | 27 | CODE | |
| LOW | uiautomator2/__init__.py | 27 | CODE | |
| LOW | uiautomator2/__init__.py | 30 | CODE | |
| LOW | uiautomator2/__init__.py | 31 | CODE | |
| LOW | uiautomator2/__init__.py | 33 | CODE | |
| LOW | uiautomator2/core.py | 23 | CODE | |
| LOW | uiautomator2/core.py | 27 | CODE | |
| LOW | uiautomator2/utils.py | 13 | CODE | |
| LOW | uiautomator2/utils.py | 13 | CODE | |
| LOW | uiautomator2/xpath.py | 4 | CODE | |
| LOW | uiautomator2/_input.py | 13 | CODE | |
| LOW | uiautomator2/_input.py | 20 | CODE | |
| LOW | uiautomator2/watcher.py | 12 | CODE | |
| LOW | uiautomator2/image.py | 23 | CODE | |
| LOW | uiautomator2/__main__.py | 4 | CODE | |
| LOW | uiautomator2/__main__.py | 4 | CODE | |
| LOW | uiautomator2/base.py | 1 | CODE | |
| LOW | uiautomator2/base.py | 1 | CODE | |
| LOW | uiautomator2/base.py | 7 | CODE | |
| LOW | uiautomator2/base.py | 11 | CODE | |
| LOW | uiautomator2/base.py | 11 | CODE | |
| LOW | uiautomator2/base.py | 14 | CODE | |
| LOW | uiautomator2/base.py | 16 | CODE | |
| LOW | uiautomator2/base.py | 16 | CODE | |
| LOW | uiautomator2/ext/info/__init__.py | 6 | CODE | |
| LOW | uiautomator2/ext/htmlreport/__init__.py | 4 | CODE | |
| LOW | uiautomator2/ext/htmlreport/__init__.py | 11 | CODE | |
| LOW | uiautomator2/ext/perf/__init__.py | 4 | CODE | |
| LOW | uiautomator2/ext/perf/__init__.py | 4 | CODE | |
| LOW | uiautomator2/agent_cli/options.py | 3 | CODE | |
| LOW | uiautomator2/agent_cli/options.py | 3 | CODE | |
| LOW | uiautomator2/agent_cli/server.py | 3 | CODE | |
| LOW | uiautomator2/agent_cli/protocol.py | 3 | CODE | |
| LOW | uiautomator2/agent_cli/client.py | 3 | CODE | |
| LOW | uiautomator2/agent_cli/click_ext.py | 3 | CODE | |
| LOW | uiautomator2/agent_cli/click_ext.py | 3 | CODE | |
| LOW | uiautomator2/agent_cli/commands.py | 3 | CODE | |
| LOW | uiautomator2/agent_cli/commands.py | 3 | CODE | |
| LOW | uiautomator2/agent_cli/__main__.py | 3 | CODE | |
| LOW | uiautomator2/agent_cli/__main__.py | 3 | CODE | |
| LOW | uiautomator2/agent_cli/output.py | 3 | CODE | |
| LOW | uiautomator2/agent_cli/output.py | 3 | CODE | |
| LOW | docs/conf.py | 17 | CODE | |
| LOW | _archived/widget.py | 18 | CODE | |
| LOW | _archived/widget.py | 18 | CODE | |
| LOW | examples/runyaml/run.py | 8 | CODE | |
| LOW | demo_tests/test_input.py | 4 | CODE | |
| LOW | mobile_tests/conftest.py | 3 | CODE | |
| LOW | mobile_tests/test_xpath.py | 7 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/test_agent_cli.py | 887 | def test_start_server_process_uses_agent_cli_module(): | CODE |
| LOW⚡ | tests/test_agent_cli.py | 896 | def test_client_request_treats_incomplete_read_as_server_not_running(): | CODE |
| LOW⚡ | tests/test_agent_cli.py | 904 | def test_server_status_outputs_text(capsys): | CODE |
| LOW | tests/test_agent_cli.py | 46 | def test_device_registry_reuses_device(): | CODE |
| LOW | tests/test_agent_cli.py | 56 | def test_device_registry_rebinds_default_when_bound_device_goes_offline(): | CODE |
| LOW | tests/test_agent_cli.py | 76 | def test_screenshot_command_outputs_resolution(tmp_path, capsys): | CODE |
| LOW | tests/test_agent_cli.py | 98 | def test_server_screenshot_returns_resolution(): | CODE |
| LOW | tests/test_agent_cli.py | 114 | def test_dump_hierarchy_command_outputs_result(capsys): | CODE |
| LOW | tests/test_agent_cli.py | 141 | def test_dump_hierarchy_command_outputs_saved_path(tmp_path, capsys): | CODE |
| LOW | tests/test_agent_cli.py | 155 | def test_hierarchy_to_text_simplifies_xml(): | CODE |
| LOW | tests/test_agent_cli.py | 193 | def test_server_stop_sends_response_before_shutdown(): | CODE |
| LOW | tests/test_agent_cli.py | 221 | def test_app_current_command_outputs_text(capsys): | CODE |
| LOW | tests/test_agent_cli.py | 247 | def test_server_app_current_returns_device_serial(): | CODE |
| LOW | tests/test_agent_cli.py | 266 | def test_device_info_command_outputs_text(capsys): | CODE |
| LOW | tests/test_agent_cli.py | 283 | def test_window_size_command_outputs_text(capsys): | CODE |
| LOW | tests/test_agent_cli.py | 300 | def test_app_start_command_requests_server(capsys): | CODE |
| LOW | tests/test_agent_cli.py | 322 | def test_app_list_command_outputs_packages(capsys): | CODE |
| LOW | tests/test_agent_cli.py | 343 | def test_app_stop_command_supports_package_and_all(capsys): | CODE |
| LOW | tests/test_agent_cli.py | 368 | def test_app_install_uninstall_clear_commands(capsys): | CODE |
| LOW | tests/test_agent_cli.py | 404 | def test_shell_command_outputs_response(capsys): | CODE |
| LOW | tests/test_agent_cli.py | 426 | def test_system_ui_commands_request_server(capsys): | CODE |
| LOW | tests/test_agent_cli.py | 454 | def test_press_command_parses_key_and_keycode(capsys): | CODE |
| LOW | tests/test_agent_cli.py | 477 | def test_send_keys_command_defaults_to_clear_and_supports_no_clear(capsys): | CODE |
| LOW | tests/test_agent_cli.py | 502 | def test_clear_text_command_requests_server(capsys): | CODE |
| LOW | tests/test_agent_cli.py | 521 | def test_server_app_and_device_methods_return_device_serial(): | CODE |
| LOW | tests/test_agent_cli.py | 590 | def test_coordinate_gesture_commands_request_server(capsys): | CODE |
| LOW | tests/test_agent_cli.py | 648 | def test_direction_swipe_command_requests_server(capsys): | CODE |
| LOW | tests/test_agent_cli.py | 677 | def test_selector_commands_request_server(capsys): | CODE |
| LOW | tests/test_agent_cli.py | 739 | def test_child_selector_command_supports_mixed_parent_and_child_conditions(capsys): | CODE |
| LOW | tests/test_agent_cli.py | 772 | def test_repeated_child_selector_builds_chain(capsys): | CODE |
| LOW | tests/test_agent_cli.py | 807 | def test_child_selector_requires_parent_selector(capsys): | CODE |
| LOW | tests/test_agent_cli.py | 815 | def test_server_gesture_and_selector_methods_return_device_serial(): | CODE |
| LOW | tests/test_agent_cli.py | 869 | def test_ensure_server_restarts_incompatible_server(): | CODE |
| LOW | tests/test_agent_cli.py | 921 | def test_missing_command_shows_help(capsys): | CODE |
| LOW | tests/test_agent_cli.py | 931 | def test_unexpected_cli_error_does_not_print_traceback(capsys): | CODE |
| LOW | tests/test_agent_cli.py | 942 | def test_help_has_no_json_option(capsys): | CODE |
| LOW | tests/test_agent_cli.py | 957 | def test_subcommand_help_shows_options(capsys): | CODE |
| LOW | tests/test_agent_cli.py | 968 | def test_selector_subcommand_help_shows_options(capsys): | CODE |
| LOW | tests/test_agent_cli.py | 170 | def test_server_dump_hierarchy_returns_compact_text(): | STRING |
| LOW | tests/test_utils.py | 57 | def test_is_version_compatiable(): | CODE |
| LOW | tests/test_utils.py | 94 | def test_with_package_resource(): | CODE |
| LOW | tests/test_input.py | 53 | def test_send_keys_hides_keyboard_when_using_custom_ime(): | CODE |
| LOW | tests/test_input.py | 76 | def test_send_keys_fallback_does_not_hide_keyboard(): | CODE |
| LOW | tests/test_input.py | 102 | def test_hide_keyboard_method(): | CODE |
| LOW | tests/test_xpath.py | 51 | def test_convert_to_camel_case(): | STRING |
| LOW | tests/test_xpath.py | 112 | def test_xpath_wait_and_wait_gone(): | STRING |
| LOW | tests/test_logger.py | 14 | def test_enable_pretty_logging(caplog: pytest.LogCaptureFixture): | CODE |
| LOW | uiautomator2/__init__.py | 727 | def app_auto_grant_permissions(self, package_name: str): | CODE |
| LOW | uiautomator2/agent_cli/options.py | 187 | def _normalize_swipe_direction(value: str) -> Optional[str]: | CODE |
| LOW | uiautomator2/agent_cli/server.py | 178 | class U2CliRequestHandler(BaseHTTPRequestHandler): | CODE |
| LOW | _archived/widget.py | 226 | def replace_etree_node_to_class(self, root: etree.ElementTree): | CODE |
| LOW | _archived/init.py | 320 | def _install_uiautomator_apks(self): | CODE |
| LOW | demo_tests/test_device.py | 63 | def test_swipe_ext_inside_box(app: u2.Device): | CODE |
| LOW | demo_tests/test_app.py | 42 | def test_auto_grant_permissions(d: u2.Device): | CODE |
| LOW | mobile_tests/test_session.py | 10 | def test_session_function_exists(dev: u2.Device): | CODE |
| LOW | mobile_tests/test_session.py | 60 | def test_auto_grant_permissions(dev: u2.Device): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | uiautomator2/core.py | 264 | self._dev.sync.push(jar_path, target_path, check=True) | CODE |
| HIGH | uiautomator2/base.py | 186 | self._dev.sync.push(src, dst, mode=mode) | CODE |
| HIGH | _archived/webview.py | 85 | var obj = document.evaluate(xpath, document, null, XPathResult.ANY_TYPE, null); | CODE |
| HIGH | _archived/webview.py | 93 | var obj = document.evaluate(xpath, document, null, XPathResult.ANY_TYPE, null); | CODE |
| HIGH | _archived/webview.py | 114 | var obj = document.evaluate(xpath, document, null, XPathResult.ANY_TYPE, null); | CODE |
| HIGH | _archived/init.py | 237 | self._device.sync.push(path, dest, mode=mode) | CODE |
| HIGH | _archived/init.py | 343 | self._device.sync.push(local_atx_agent_path, dest, mode=0o755) | CODE |
| HIGH | demo_tests/test_device.py | 129 | d.push(src_file, "/data/local/tmp/test_push.txt") | CODE |
| HIGH | mobile_tests/test_push_pull.py | 14 | d.push(io.BytesIO(content), device_target) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | uiautomator2/__init__.py | 72 | Take screenshot of device Returns: PIL.Image.Image, np.ndarray (OpenCV format) or None | STRING |
| HIGH | uiautomator2/__init__.py | 949 | Args: serial (str): Android device serialno or adb device instance port (int): uiautomator2 server | STRING |
| HIGH | uiautomator2/__init__.py | 970 | Args: serial (str): android device serial or adb device instance port (int): uiautomator2 server po | STRING |
| HIGH | uiautomator2/xpath.py | 439 | Get first matched element Args: timeout (float): max seconds to wait Returns: | STRING |
| HIGH | uiautomator2/image.py | 193 | Args: data: local path or http url or data:image/base64,xxx Returns: opencv image | STRING |
| HIGH | uiautomator2/base.py | 96 | Run shell command on device Args: cmdargs: str or list, example: "ls -l" or ["ls", "-l"] | STRING |
| HIGH | _archived/aircv/__init__.py | 56 | Locate image position with cv2.templateFind Use pixel match to find pictures. Args: | STRING |
| HIGH | _archived/ocr/__init__.py | 73 | Args: timeout: seconds to wait Returns: List of recognition (text, x, | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | README.md | 1001 | We only support installing an APK from a URL or local path. | COMMENT |
| LOW | README_CN.md | 1001 | #{ | COMMENT |
| LOW | uiautomator2/version.py | 1 | # coding: utf-8 | COMMENT |
| LOW | uiautomator2/version.py | 21 | # 2.0.2 fix error: AndroidQ Service must be explicit | COMMENT |
| LOW | uiautomator2/version.py | 41 | # __jar_version__ = 'v0.1.6' # no useless for now. | COMMENT |
| LOW | uiautomator2/version.py | 61 | # 0.7.2 fix stop already stopped uiautomator return status 500 error | COMMENT |
| LOW | uiautomator2/version.py | 81 | # 0.4.0 add go-daemon lib. use safe-time.Timer to prevent panic error. this will make it run longer | COMMENT |
| LOW | uiautomator2/settings.py | 101 | # if __name__ == "__main__": | COMMENT |
| LOW | uiautomator2/exceptions.py | 1 | # coding: utf-8 | COMMENT |
| LOW | uiautomator2/image.py | 321 | COMMENT | |
| LOW | uiautomator2/image.py | 341 | # 'engine_template_multi_target_max_threshold': 0.99, | COMMENT |
| LOW | docs/conf.py | 1 | # Configuration file for the Sphinx documentation builder. | COMMENT |
| LOW | _archived/widget.py | 281 | # bounds = node.attrib.get("bounds") | COMMENT |
| LOW | _archived/widget.py | 381 | # print("hierarchy:", hsim) | COMMENT |
| LOW | _archived/webview.py | 221 | # test_self_driver() | COMMENT |
| LOW | demo_tests/test_watcher.py | 1 | # coding: utf-8 | COMMENT |
| LOW | mobile_tests/conftest.py | 41 | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | uiautomator2/__init__.py | 38 | logger = logging.getLogger(__name__) | CODE |
| LOW | uiautomator2/core.py | 29 | logger = logging.getLogger(__name__) | CODE |
| LOW | uiautomator2/settings.py | 8 | logger = logging.getLogger(__name__) | CODE |
| LOW | uiautomator2/xpath.py | 23 | logger = logging.getLogger(__name__) | CODE |
| LOW | uiautomator2/_input.py | 23 | logger = logging.getLogger(__name__) | CODE |
| LOW | uiautomator2/watcher.py | 16 | logger = logging.getLogger(__name__) | CODE |
| LOW | uiautomator2/image.py | 28 | logger = logging.getLogger(__name__) | CODE |
| LOW | uiautomator2/__main__.py | 21 | logger = logging.getLogger(__name__) | CODE |
| LOW | uiautomator2/base.py | 18 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | uiautomator2/agent_cli/options.py | 17 | logger = logging.getLogger(__name__) | CODE |
| LOW | uiautomator2/agent_cli/server.py | 20 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | uiautomator2/agent_cli/commands.py | 21 | logger = logging.getLogger(__name__) | CODE |
| LOW | _archived/widget.py | 20 | logger = logging.getLogger(__name__) | CODE |
| LOW | _archived/webview.py | 14 | logger = logging.getLogger(__name__) | CODE |
| LOW | _archived/init.py | 25 | logger = logging.getLogger(__name__) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/test_core.py | 30 | # Create a temporary file with known content | COMMENT |
| MEDIUM | tests/test_core.py | 51 | # Create a temporary file with known content | COMMENT |
| MEDIUM | tests/test_core.py | 78 | # Create a temporary file with known content | COMMENT |
| MEDIUM | tests/test_core.py | 96 | # Create a temporary file with known content | COMMENT |
| MEDIUM | _archived/widget.py | 5 | # This file is deprecated and will be removed in the future. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | uiautomator2/swipe.py | 16 | CODE | |
| LOW | uiautomator2/_selector.py | 240 | CODE | |
| LOW | uiautomator2/_selector.py | 494 | CODE | |
| LOW | uiautomator2/_selector.py | 537 | CODE | |
| LOW | uiautomator2/_selector.py | 522 | CODE | |
| LOW | uiautomator2/_selector.py | 565 | CODE | |
| LOW | uiautomator2/utils.py | 190 | CODE | |
| LOW | uiautomator2/xpath.py | 78 | CODE | |
| LOW | uiautomator2/xpath.py | 251 | CODE | |
| LOW | uiautomator2/image.py | 192 | CODE | |
| LOW | uiautomator2/ext/info/__init__.py | 51 | CODE | |
| LOW | uiautomator2/agent_cli/output.py | 18 | CODE | |
| LOW | _archived/aircv/__init__.py | 447 | CODE | |
| LOW | examples/runyaml/run.py | 53 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | uiautomator2/watcher.py | 229 | except Exception as e: | CODE |
| LOW | uiautomator2/watcher.py | 266 | except Exception as e: | CODE |
| LOW | uiautomator2/__main__.py | 130 | except Exception as e: | CODE |
| LOW | uiautomator2/agent_cli/options.py | 244 | except Exception as e: | CODE |
| MEDIUM | uiautomator2/agent_cli/options.py | 39 | def convert(self, value, param, ctx): | CODE |
| LOW | uiautomator2/agent_cli/server.py | 232 | except Exception as e: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | uiautomator2/version.py | 65 | # 0.6.1 make dump_hierarchy more robust, add cpu,mem collect | COMMENT |