Repository Analysis

pwr-Solaar/Solaar

Linux device manager for Logitech devices

12.5 Low AI signal View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of pwr-Solaar/Solaar, a Python project with 9,314 GitHub stars. SynthScan v2.0 examined 61,516 lines of code across 283 source files, recording 754 pattern matches distributed across 12 syntactic categories. The overall adjusted score of 12.5 places this repository in the Low 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).

12.5
Adjusted Score
12.5
Raw Score
100%
Time Factor
2026-08-18
Last Push
9.3K
Stars
Python
Language
61.5K
Lines of Code
283
Files
754
Pattern Hits
2026-08-29
Scan Date
0.00
HC Hit Rate

What These Metrics Mean

Adjusted Score
Primary synthetic code indicator. Raw score normalised per 1,000 lines of code and multiplied by the temporal discount factor. This is the definitive comparative metric — use it to rank repositories by AI authorship density.
Raw Score
The unmodified sum of all severity-weighted, context-multiplied pattern match scores before temporal discounting. Reflects the absolute signal strength independent of when the repository was last active.
Time Factor
The temporal discount multiplier (0–100%) applied to the raw score. Repositories last updated before ChatGPT's launch (Nov 2022) receive a 5% factor. Full signal is only assigned to repositories active in the post-adoption era (Jan 2024+).
Pattern Hits
Total count of individual pattern matches across all files and categories. A high hit count with a low score may indicate a very large codebase with isolated AI snippets; a low count with a high score indicates dense, concentrated AI signatures.
HC Hit Rate
High+Critical pattern hits per file, averaged across the repository. This orthogonal signal catches repositories where a few files are densely packed with high-severity AI tells — a strong indicator even when the normalised score appears moderate due to codebase size.
Lines of Code / Files
Total lines and files analysed. The scanner examines 94 file extensions. These denominators are used to normalise the score, enabling fair comparison between repositories of vastly different sizes.

Score History

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.

No multi-scan history yet — run the scanner again to build trend data.

Severity Breakdown

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.

CRITICAL 0HIGH 0MEDIUM 13LOW 741

Directory Score Breakdown

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.

Pattern Findings

The scanner identified 754 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.

Hyper-Verbose Identifiers222 hits · 238 pts
SeverityFileLineSnippetContext
LOWtests/conftest.py9def isolate_solaar_configuration(tmp_path, monkeypatch):CODE
LOWtests/conftest.py26def mock_desktop_notifications(monkeypatch):CODE
LOWtests/logitech_receiver/test_setting_templates.py906def test_check_feature_settings(test, mocker):CODE
LOWtests/logitech_receiver/test_setting_templates.py927def test_check_feature_setting(test, mocker):CODE
LOWtests/logitech_receiver/test_setting_templates.py944def _idle_setting_with_persisted(value):CODE
LOWtests/logitech_receiver/test_common.py26def test_named_int_comparison():CODE
LOWtests/logitech_receiver/test_common.py42def test_named_int_comparison_exception():CODE
LOWtests/logitech_receiver/test_common.py49def test_named_int_conversions():CODE
LOWtests/logitech_receiver/test_common.py68def test_color_int_str_and_repr():CODE
LOWtests/logitech_receiver/test_common.py75def test_color_int_equality_with_plain_int():CODE
LOWtests/logitech_receiver/test_common.py80def test_color_int_from_hex_string_prefixes():CODE
LOWtests/logitech_receiver/test_common.py86def test_color_int_from_int_passes_through():CODE
LOWtests/logitech_receiver/test_common.py91def test_color_int_out_of_range_falls_back_to_decimal():CODE
LOWtests/logitech_receiver/test_common.py97def test_color_int_yaml_dumps_as_hex_int_literal():CODE
LOWtests/logitech_receiver/test_common.py103def test_color_int_yaml_roundtrips_to_plain_int():CODE
LOWtests/logitech_receiver/test_common.py112def test_color_int_in_dict_yaml_dumps_each_value_as_hex():CODE
LOWtests/logitech_receiver/test_common.py187def test_named_ints_flag_names(code, expected_flags):CODE
LOWtests/logitech_receiver/test_receiver.py132def test_receiver_factory_create_receiver(device_info, responses, handle, serial, max_devices):CODE
LOWtests/logitech_receiver/test_receiver.py156def test_receiver_factory_props(device_info, responses, firmware, codename, remaining_pairings, pairing_info, count):CODE
LOWtests/logitech_receiver/test_receiver.py176def test_receiver_factory_string(device_info, responses, status_str, strng):CODE
LOWtests/logitech_receiver/test_receiver.py192def test_receiver_factory_no_device(device_info, responses):CODE
LOWtests/logitech_receiver/test_receiver.py208def test_notification_information_nano_receiver(nano_recv, address, data, expected_online, expected_encrypted):CODE
LOWtests/logitech_receiver/test_receiver.py225def test_extract_serial_number():CODE
LOWtests/logitech_receiver/test_receiver.py248def test_extract_remaining_pairings(response, expected_remaining_pairings):CODE
LOWtests/logitech_receiver/test_receiver.py272def test_extract_power_switch_location(power_switch_byte, expected_location):CODE
LOWtests/logitech_receiver/test_receiver.py280def test_extract_connection_count():CODE
LOWtests/logitech_receiver/test_receiver.py296def test_extract_polling_rate():CODE
LOWtests/logitech_receiver/test_receiver.py325def test_force_unpair_slot_empty_slot_acknowledged():CODE
LOWtests/logitech_receiver/test_receiver.py334def test_force_unpair_slot_stale_sentinel_cleared():CODE
LOWtests/logitech_receiver/test_receiver.py343def test_force_unpair_slot_active_device_invalidated():CODE
LOWtests/logitech_receiver/test_receiver.py356def test_force_unpair_slot_register_write_failed():CODE
LOWtests/logitech_receiver/test_receiver.py365def test_force_unpair_slot_no_handle():CODE
LOWtests/logitech_receiver/test_receiver.py374def test_close_keeps_handle_until_paired_devices_closed():CODE
LOWtests/logitech_receiver/test_hidpp20_simple.py172def test_get_mouse_pointer_info():CODE
LOWtests/logitech_receiver/test_hidpp20_simple.py186def test_get_vertical_scrolling_info():CODE
LOWtests/logitech_receiver/test_hidpp20_simple.py195def test_get_hi_res_scrolling_info():CODE
LOWtests/logitech_receiver/test_hidpp20_simple.py205def test_get_pointer_speed_info():CODE
LOWtests/logitech_receiver/test_hidpp20_simple.py214def test_get_lowres_wheel_status():CODE
LOWtests/logitech_receiver/test_hidpp20_simple.py242def test_get_new_fn_inversion():CODE
LOWtests/logitech_receiver/test_hidpp20_simple.py357def test_get_remaining_pairing():CODE
LOWtests/logitech_receiver/test_hidpp20_simple.py375def test_get_configuration_cookie():CODE
LOWtests/logitech_receiver/test_hidpp20_simple.py384def test_set_configuration_complete_explicit_cookie():CODE
LOWtests/logitech_receiver/test_hidpp20_simple.py394def test_set_configuration_complete_monotonic_counter():CODE
LOWtests/logitech_receiver/test_hidpp20_simple.py407def test_set_configuration_complete_skips_zero():CODE
LOWtests/logitech_receiver/test_hidpp20_simple.py416def test_decipher_battery_status():CODE
LOWtests/logitech_receiver/test_hidpp20_simple.py427def test_decipher_battery_voltage():CODE
LOWtests/logitech_receiver/test_hidpp20_simple.py438def test_decipher_battery_unified():CODE
LOWtests/logitech_receiver/test_hidpp20_simple.py448def test_decipher_adc_measurement():CODE
LOWtests/logitech_receiver/test_hidpp20_simple.py522def test_estimate_battery_level_percentage(millivolt, expected_percentage):CODE
LOWtests/logitech_receiver/test_base_usb.py7def test_ensure_known_receivers_mappings_are_valid():CODE
LOWtests/logitech_receiver/test_base_usb.py28def test_get_receiver_info_unknown_device_fails():CODE
LOWtests/logitech_receiver/test_settings_validator.py39def test_map_range_to_string_formats_plain_int_through_value_type():CODE
LOWtests/logitech_receiver/test_settings_validator.py51def test_map_range_to_string_passes_color_int_through():CODE
LOWtests/logitech_receiver/test_settings_validator.py59def test_map_range_to_string_preserves_sentinel_subclass():CODE
LOWtests/logitech_receiver/test_settings_validator.py69def test_map_range_to_string_int_value_type_unchanged():CODE
LOWtests/logitech_receiver/test_notifications.py54def test_process_receiver_notification(sub_id, notification_data, expected_error, expected_new_device):CODE
LOWtests/logitech_receiver/test_notifications.py73def test_process_device_notification(hidpp_notification, expected):CODE
LOWtests/logitech_receiver/test_notifications.py90def test_process_dj_notification(hidpp_notification, expected):CODE
LOWtests/logitech_receiver/test_notifications.py273def test_process_feature_notification(mocker, hidpp_notification, feature):CODE
LOWtests/logitech_receiver/test_notifications.py282def test_process_receiver_notification_invalid(mocker):CODE
162 more matches not shown…
Excessive Try-Catch Wrapping140 hits · 144 pts
SeverityFileLineSnippetContext
LOWsetup.py17except Exception: # get commit from Ubuntu dpkg-parsechangelogCODE
LOWsetup.py26 except Exception as e:CODE
LOWtests/conftest.py39 except Exception:CODE
LOWlib/logitech_receiver/settings_new.py119 except Exception as e:CODE
LOWlib/logitech_receiver/rgb_power.py549 except Exception as e:CODE
LOWlib/logitech_receiver/rgb_power.py562 except Exception as e:CODE
LOWlib/logitech_receiver/rgb_power.py356 except Exception as e:CODE
LOWlib/logitech_receiver/rgb_power.py363 except Exception:CODE
LOWlib/logitech_receiver/rgb_power.py415 except Exception:CODE
LOWlib/logitech_receiver/rgb_power.py491 except Exception:CODE
LOWlib/logitech_receiver/rgb_power.py599 except Exception as e:CODE
LOWlib/logitech_receiver/rgb_power.py608 except Exception as e:CODE
LOWlib/logitech_receiver/rgb_power.py667 except Exception as e:CODE
LOWlib/logitech_receiver/rgb_power.py673 except Exception as e:CODE
LOWlib/logitech_receiver/rgb_power.py763 except Exception as exc:CODE
LOWlib/logitech_receiver/rgb_power.py784 except Exception as e:CODE
LOWlib/logitech_receiver/rgb_power.py816 except Exception as e:CODE
LOWlib/logitech_receiver/rgb_power.py952 except Exception:CODE
LOWlib/logitech_receiver/rgb_power.py992 except Exception as e:CODE
LOWlib/logitech_receiver/desktop_notifications.py64 except Exception:CODE
LOWlib/logitech_receiver/desktop_notifications.py90 except Exception:CODE
LOWlib/logitech_receiver/headset_rgb.py71 except Exception as e:CODE
LOWlib/logitech_receiver/headset_rgb.py82 except Exception as e:CODE
LOWlib/logitech_receiver/headset_rgb.py133 except Exception as e:CODE
LOWlib/logitech_receiver/headset_rgb.py197 except Exception as e:CODE
MEDIUMlib/logitech_receiver/settings_templates.py2879def build(cls, device):CODE
LOWlib/logitech_receiver/settings_templates.py1756 except Exception as e:CODE
LOWlib/logitech_receiver/settings_templates.py1791 except Exception as e:CODE
LOWlib/logitech_receiver/settings_templates.py1978 except Exception:CODE
LOWlib/logitech_receiver/settings_templates.py2091 except Exception as e:CODE
LOWlib/logitech_receiver/settings_templates.py2230 except Exception as e:CODE
LOWlib/logitech_receiver/settings_templates.py2237 except Exception as e:CODE
LOWlib/logitech_receiver/settings_templates.py2317 except Exception as e:CODE
LOWlib/logitech_receiver/settings_templates.py2451 except Exception as e:CODE
LOWlib/logitech_receiver/settings_templates.py2669 except Exception as e:CODE
LOWlib/logitech_receiver/settings_templates.py2971 except Exception as e:CODE
LOWlib/logitech_receiver/settings_templates.py3365 except Exception as e:CODE
LOWlib/logitech_receiver/settings_templates.py3371 except Exception as e:CODE
LOWlib/logitech_receiver/settings_templates.py3512 except Exception:CODE
LOWlib/logitech_receiver/settings_templates.py3819 except Exception as e:CODE
LOWlib/logitech_receiver/settings_templates.py4640 except Exception as e:CODE
LOWlib/logitech_receiver/settings_templates.py4693 except Exception as err:CODE
LOWlib/logitech_receiver/settings_templates.py4730 except Exception:CODE
LOWlib/logitech_receiver/device.py100 except Exception as e:CODE
LOWlib/logitech_receiver/device.py188 except Exception: # maybe the device wasn't set upCODE
LOWlib/logitech_receiver/device.py192 except Exception: # give upCODE
LOWlib/logitech_receiver/device.py526 except Exception as e: # Do nothing if the device is offlineCODE
LOWlib/logitech_receiver/device.py560 except Exception:CODE
LOWlib/logitech_receiver/device.py1017 except Exception:CODE
LOWlib/logitech_receiver/centurion.py295 except Exception:CODE
LOWlib/logitech_receiver/centurion.py352 except Exception:CODE
LOWlib/logitech_receiver/centurion.py403 except Exception:CODE
LOWlib/logitech_receiver/centurion.py589 except Exception as e:CODE
LOWlib/logitech_receiver/receiver.py634 except Exception:CODE
LOWlib/logitech_receiver/rgb_effects_probe.py78 except Exception as e:CODE
LOWlib/logitech_receiver/rgb_effects_probe.py96 except Exception as e:CODE
LOWlib/logitech_receiver/rgb_effects_probe.py214 except Exception as e:CODE
LOWlib/logitech_receiver/rgb_effects_probe.py218 except Exception as e:CODE
LOWlib/logitech_receiver/diversion.py115except Exception:CODE
LOWlib/logitech_receiver/diversion.py184 except Exception:CODE
80 more matches not shown…
Over-Commented Block105 hits · 100 pts
SeverityFileLineSnippetContext
LOWtests/logitech_receiver/test_setting_templates.py1## Copyright (C) 2024 Solaar Contributors https://pwr-solaar.github.io/Solaar/COMMENT
LOWtests/logitech_receiver/test_hidpp20_simple.py1## Copyright (C) 2024 Solaar Contributors https://pwr-solaar.github.io/Solaar/COMMENT
LOWtests/logitech_receiver/fake_hidpp.py1## Copyright (C) 2024 Solaar Contributors https://pwr-solaar.github.io/Solaar/COMMENT
LOWtests/logitech_receiver/fake_hidpp.py221 # Response("00000000000000000000000000000000", 0x0410, "000180"),COMMENT
LOWtests/logitech_receiver/test_device.py1## Copyright (C) 2024 Solaar Contributors https://pwr-solaar.github.io/Solaar/COMMENT
LOWtests/logitech_receiver/test_hidpp20_complex.py1## Copyright (C) 2024 Solaar Contributors https://pwr-solaar.github.io/Solaar/COMMENT
LOWdocs/usb.ids.txt1#COMMENT
LOWdocs/devices/Marathon Mouse M705 101B.txt21# writing 0x10 in this register will generate an eventCOMMENT
LOWlib/logitech_receiver/hidpp20_constants.py1## Copyright (C) 2012-2013 Daniel PavelCOMMENT
LOWlib/logitech_receiver/settings_new.py1## Copyright (C) 2025 Solaar contributorsCOMMENT
LOWlib/logitech_receiver/rgb_power.py1## Copyright (C) 2012-2013 Daniel PavelCOMMENT
LOWlib/logitech_receiver/rgb_power.py261 # SetEffectByIndex: cluster + effectIdx + 10 param bytes + persist.COMMENT
LOWlib/logitech_receiver/desktop_notifications.py1## Copyright (C) 2024 Solaar contributorsCOMMENT
LOWlib/logitech_receiver/headset_rgb.py1## Copyright (C) 2024 Solaar Contributors https://pwr-solaar.github.io/Solaar/COMMENT
LOWlib/logitech_receiver/device_quirks.py41# effects. Default-DENY allowlist: modelId -> cap_id -> set of color fieldsCOMMENT
LOWlib/logitech_receiver/hidpp10_constants.py1## Copyright (C) 2012-2013 Daniel PavelCOMMENT
LOWlib/logitech_receiver/settings_templates.py1## Copyright (C) 2012-2013 Daniel PavelCOMMENT
LOWlib/logitech_receiver/settings_templates.py101 PRESSED = "pressed"COMMENT
LOWlib/logitech_receiver/settings_templates.py121# and permit reading or writing the entire map or just one key/value pair.COMMENT
LOWlib/logitech_receiver/settings_templates.py141# There are three simple validator classes - BooleanV, RangeValidator, and ChoicesValidatorCOMMENT
LOWlib/logitech_receiver/settings_templates.py161# or None for no limitation and optionally a choices_extra class variable with an extra choice.COMMENT
LOWlib/logitech_receiver/settings_templates.py1661 label = _("Mic Mute")COMMENT
LOWlib/logitech_receiver/settings_templates.py2941# Top-level so users see a direct on/off indicator at a glance.COMMENT
LOWlib/logitech_receiver/device.py1## Copyright (C) 2012-2013 Daniel PavelCOMMENT
LOWlib/logitech_receiver/centurion.py1## Copyright (C) 2012-2013 Daniel PavelCOMMENT
LOWlib/logitech_receiver/receiver.py1## Copyright (C) 2012-2013 Daniel PavelCOMMENT
LOWlib/logitech_receiver/__init__.py1## Copyright (C) 2012-2013 Daniel PavelCOMMENT
LOWlib/logitech_receiver/base_usb.py1## Copyright (C) 2012-2013 Daniel PavelCOMMENT
LOWlib/logitech_receiver/diversion.py1## Copyright (C) 2020 Peter Patel-SchneiderCOMMENT
LOWlib/logitech_receiver/diversion.py61#COMMENT
LOWlib/logitech_receiver/descriptors.py1## Copyright (C) 2012-2013 Daniel PavelCOMMENT
LOWlib/logitech_receiver/descriptors.py161# * 00 - notification flags (all devices)COMMENT
LOWlib/logitech_receiver/descriptors.py181# USB traffic Solaar has to do to fully identify peripherals.COMMENT
LOWlib/logitech_receiver/common.py1## Copyright (C) 2012-2013 Daniel PavelCOMMENT
LOWlib/logitech_receiver/settings.py1## Copyright (C) 2012-2013 Daniel PavelCOMMENT
LOWlib/logitech_receiver/exceptions.py1## Copyright (C) 2012-2013 Daniel PavelCOMMENT
LOWlib/logitech_receiver/notifications.py1## Copyright (C) 2012-2013 Daniel PavelCOMMENT
LOWlib/logitech_receiver/i18n.py1## Copyright (C) 2012-2013 Daniel PavelCOMMENT
LOWlib/logitech_receiver/special_keys.py1## Copyright (C) 2012-2013 Daniel PavelCOMMENT
LOWlib/logitech_receiver/special_keys.py901 # Frame_Back=0xC1,COMMENT
LOWlib/logitech_receiver/advanced_para_eq.py1## Copyright (C) 2024 Solaar Contributors https://pwr-solaar.github.io/Solaar/COMMENT
LOWlib/logitech_receiver/onboard_eq.py1## Copyright (C) 2012-2013 Daniel PavelCOMMENT
LOWlib/logitech_receiver/hidpp20.py1## Copyright (C) 2012-2013 Daniel PavelCOMMENT
LOWlib/logitech_receiver/base.py1## Copyright (C) 2012-2013 Daniel PavelCOMMENT
LOWlib/logitech_receiver/base.py901# Known values in use by other tools at the time of writing:COMMENT
LOWlib/logitech_receiver/hidpp10.py1## Copyright (C) 2012-2013 Daniel PavelCOMMENT
LOWlib/logitech_receiver/listener.py1## Copyright (C) 2012-2013 Daniel PavelCOMMENT
LOWlib/logitech_receiver/logivoice.py1## Copyright (C) 2024 Solaar Contributors https://pwr-solaar.github.io/Solaar/COMMENT
LOWlib/logitech_receiver/logivoice.py101COMMENT
LOWlib/hidapi/hidconsole.py1## Copyright (C) 2012-2013 Daniel PavelCOMMENT
LOWlib/hidapi/hidapi_impl.py1## Copyright (C) 2012-2013 Daniel PavelCOMMENT
LOWlib/hidapi/udev_impl.py1## Copyright (C) 2012-2013 Daniel PavelCOMMENT
LOWlib/solaar/configuration.py1## Copyright (C) 2012-2013 Daniel PavelCOMMENT
LOWlib/solaar/tasks.py1#!/usr/bin/env python3COMMENT
LOWlib/solaar/gtk.py1#!/usr/bin/env python3COMMENT
LOWlib/solaar/dbus.py1## Copyright (C) 2012-2013 Daniel PavelCOMMENT
LOWlib/solaar/__init__.py1## Copyright (C) 2012-2013 Daniel PavelCOMMENT
LOWlib/solaar/i18n.py1## Copyright (C) 2012-2013 Daniel PavelCOMMENT
LOWlib/solaar/listener.py1## Copyright (C) 2012-2013 Daniel PavelCOMMENT
LOWlib/solaar/ui/diversion_rules.py1## Copyright (C) Solaar ContributorsCOMMENT
45 more matches not shown…
Deep Nesting113 hits · 98 pts
SeverityFileLineSnippetContext
LOWlib/logitech_receiver/rgb_power.py192CODE
LOWlib/logitech_receiver/rgb_power.py276CODE
LOWlib/logitech_receiver/rgb_power.py470CODE
LOWlib/logitech_receiver/rgb_power.py578CODE
LOWlib/logitech_receiver/rgb_power.py966CODE
LOWlib/logitech_receiver/desktop_notifications.py93CODE
LOWlib/logitech_receiver/settings_templates.py4647CODE
LOWlib/logitech_receiver/settings_templates.py4721CODE
LOWlib/logitech_receiver/settings_templates.py2759CODE
LOWlib/logitech_receiver/settings_templates.py2783CODE
LOWlib/logitech_receiver/settings_templates.py3467CODE
LOWlib/logitech_receiver/settings_templates.py3761CODE
LOWlib/logitech_receiver/settings_templates.py3902CODE
LOWlib/logitech_receiver/settings_templates.py4013CODE
LOWlib/logitech_receiver/settings_templates.py1009CODE
LOWlib/logitech_receiver/device.py261CODE
LOWlib/logitech_receiver/device.py284CODE
LOWlib/logitech_receiver/device.py414CODE
LOWlib/logitech_receiver/device.py467CODE
LOWlib/logitech_receiver/device.py517CODE
LOWlib/logitech_receiver/device.py539CODE
LOWlib/logitech_receiver/device.py594CODE
LOWlib/logitech_receiver/device.py719CODE
LOWlib/logitech_receiver/device.py755CODE
LOWlib/logitech_receiver/receiver.py579CODE
LOWlib/logitech_receiver/receiver.py298CODE
LOWlib/logitech_receiver/diversion.py292CODE
LOWlib/logitech_receiver/diversion.py1444CODE
LOWlib/logitech_receiver/diversion.py1556CODE
LOWlib/logitech_receiver/diversion.py804CODE
LOWlib/logitech_receiver/diversion.py900CODE
LOWlib/logitech_receiver/diversion.py993CODE
LOWlib/logitech_receiver/descriptors.py60CODE
LOWlib/logitech_receiver/common.py468CODE
LOWlib/logitech_receiver/common.py672CODE
LOWlib/logitech_receiver/settings.py279CODE
LOWlib/logitech_receiver/settings.py382CODE
LOWlib/logitech_receiver/settings.py483CODE
LOWlib/logitech_receiver/settings.py508CODE
LOWlib/logitech_receiver/settings.py739CODE
LOWlib/logitech_receiver/settings.py809CODE
LOWlib/logitech_receiver/settings.py843CODE
LOWlib/logitech_receiver/settings.py740CODE
LOWlib/logitech_receiver/notifications.py241CODE
LOWlib/logitech_receiver/hidpp20.py2244CODE
LOWlib/logitech_receiver/hidpp20.py151CODE
LOWlib/logitech_receiver/hidpp20.py301CODE
LOWlib/logitech_receiver/hidpp20.py486CODE
LOWlib/logitech_receiver/hidpp20.py634CODE
LOWlib/logitech_receiver/hidpp20.py794CODE
LOWlib/logitech_receiver/hidpp20.py1077CODE
LOWlib/logitech_receiver/hidpp20.py1464CODE
LOWlib/logitech_receiver/hidpp20.py1499CODE
LOWlib/logitech_receiver/hidpp20.py1771CODE
LOWlib/logitech_receiver/hidpp20.py2064CODE
LOWlib/logitech_receiver/hidpp20.py2090CODE
LOWlib/logitech_receiver/base.py672CODE
LOWlib/logitech_receiver/base.py804CODE
LOWlib/logitech_receiver/base.py866CODE
LOWlib/logitech_receiver/hidpp10.py230CODE
53 more matches not shown…
Modern Structural Boilerplate79 hits · 92 pts
SeverityFileLineSnippetContext
LOWlib/logitech_receiver/settings_new.py27logger = logging.getLogger(__name__)CODE
LOWlib/logitech_receiver/rgb_power.py38logger = logging.getLogger(__name__)CODE
LOWlib/logitech_receiver/desktop_notifications.py22logger = logging.getLogger(__name__)CODE
LOWlib/logitech_receiver/headset_rgb.py44logger = logging.getLogger(__name__)CODE
LOWlib/logitech_receiver/settings_templates.py57logger = logging.getLogger(__name__)CODE
LOWlib/logitech_receiver/device.py51logger = logging.getLogger(__name__)CODE
LOWlib/logitech_receiver/centurion.py47logger = logging.getLogger(__name__)CODE
LOWlib/logitech_receiver/receiver.py48logger = logging.getLogger(__name__)CODE
LOWlib/logitech_receiver/rgb_effects_probe.py26logger = logging.getLogger(__name__)CODE
LOWlib/logitech_receiver/__init__.py24logger = logging.getLogger(__name__)CODE
LOWlib/logitech_receiver/diversion.py59logger = logging.getLogger(__name__)CODE
LOWlib/logitech_receiver/settings.py33logger = logging.getLogger(__name__)CODE
LOWlib/logitech_receiver/notifications.py50logger = logging.getLogger(__name__)CODE
LOWlib/logitech_receiver/settings_validator.py13logger = logging.getLogger(__name__)CODE
LOWlib/logitech_receiver/advanced_para_eq.py49logger = logging.getLogger(__name__)CODE
LOWlib/logitech_receiver/hidpp20.py510 def set_diverted(self, value: bool) -> None:CODE
LOWlib/logitech_receiver/hidpp20.py515 def set_persistently_diverted(self, value: bool) -> None:CODE
LOWlib/logitech_receiver/hidpp20.py520 def set_rawXY_reporting(self, value: bool) -> None:CODE
LOWlib/logitech_receiver/hidpp20.py60logger = logging.getLogger(__name__)CODE
LOWlib/logitech_receiver/hidpp20.py2346 def set_current(self, current: int) -> None:CODE
LOWlib/logitech_receiver/hidpp20.py2402 def set_current(self, current: int) -> None:CODE
LOWlib/logitech_receiver/base.py56logger = logging.getLogger(__name__)CODE
LOWlib/logitech_receiver/hidpp10.py32logger = logging.getLogger(__name__)CODE
LOWlib/logitech_receiver/listener.py26logger = logging.getLogger(__name__)CODE
LOWlib/logitech_receiver/logivoice.py46logger = logging.getLogger(__name__)CODE
LOWlib/hidapi/hidapi_impl.py49logger = logging.getLogger(__name__)CODE
LOWlib/hidapi/udev_impl.py51logger = logging.getLogger(__name__)CODE
LOWlib/solaar/configuration.py29logger = logging.getLogger(__name__)CODE
LOWlib/solaar/tasks.py23logger = logging.getLogger(__name__)CODE
LOWlib/solaar/gtk.py42logger = logging.getLogger(__name__)CODE
LOWlib/solaar/dbus.py23logger = logging.getLogger(__name__)CODE
LOWlib/solaar/i18n.py29logger = logging.getLogger(__name__)CODE
LOWlib/solaar/i18n.py43def set_locale_to_system_default() -> None:CODE
LOWlib/solaar/listener.py53logger = logging.getLogger(__name__)CODE
LOWlib/solaar/ui/diversion_rules.py54logger = logging.getLogger(__name__)CODE
LOWlib/solaar/ui/desktop_notifications.py26logger = logging.getLogger(__name__)CODE
LOWlib/solaar/ui/tray.py40logger = logging.getLogger(__name__)CODE
LOWlib/solaar/ui/window.py46logger = logging.getLogger(__name__)CODE
LOWlib/solaar/ui/pair_window.py31logger = logging.getLogger(__name__)CODE
LOWlib/solaar/ui/icons.py24logger = logging.getLogger(__name__)CODE
LOWlib/solaar/ui/__init__.py44logger = logging.getLogger(__name__)CODE
LOWlib/solaar/ui/common.py31logger = logging.getLogger(__name__)CODE
LOWlib/solaar/ui/config_panel.py39logger = logging.getLogger(__name__)CODE
LOWlib/solaar/ui/config_panel.py641 def set_value(self, value) -> None:CODE
LOWlib/solaar/ui/about/presenter.py28 def update_version_info(self, version: str) -> None:CODE
LOWlib/solaar/ui/about/presenter.py31 def update_description(self, comments: str) -> None:CODE
LOWlib/solaar/ui/about/presenter.py34 def update_copyright(self, copyright_text: str) -> None:CODE
LOWlib/solaar/ui/about/presenter.py37 def update_authors(self, authors: list[str]) -> None:CODE
LOWlib/solaar/ui/about/presenter.py40 def update_translators(self, translators: list[str]) -> None:CODE
LOWlib/solaar/ui/about/presenter.py46 def update_credits(self, credit_sections: list[tuple[str, list[str]]]) -> None:CODE
LOWlib/solaar/ui/about/presenter.py58 def update_version_info(self) -> None:CODE
LOWlib/solaar/ui/about/presenter.py62 def update_credits(self) -> None:CODE
LOWlib/solaar/ui/about/presenter.py66 def update_description(self) -> None:CODE
LOWlib/solaar/ui/about/presenter.py70 def update_copyright(self) -> None:CODE
LOWlib/solaar/ui/about/presenter.py74 def update_authors(self) -> None:CODE
LOWlib/solaar/ui/about/presenter.py78 def update_translators(self) -> None:CODE
LOWlib/solaar/ui/about/presenter.py82 def update_website(self) -> None:CODE
LOWlib/solaar/ui/about/view.py42 def update_version_info(self, version: str) -> None:CODE
LOWlib/solaar/ui/about/view.py45 def update_description(self, comments: str) -> None:CODE
LOWlib/solaar/ui/about/view.py51 def update_authors(self, authors: List[str]) -> None:CODE
19 more matches not shown…
Unused Imports72 hits · 63 pts
SeverityFileLineSnippetContext
LOWtests/logitech_receiver/fake_hidpp.py19CODE
LOWlib/logitech_receiver/rgb_power.py26CODE
LOWlib/logitech_receiver/headset_rgb.py36CODE
LOWlib/logitech_receiver/device_quirks.py28CODE
LOWlib/logitech_receiver/hidpp10_constants.py17CODE
LOWlib/logitech_receiver/settings_templates.py16CODE
LOWlib/logitech_receiver/device.py18CODE
LOWlib/logitech_receiver/device.py1096CODE
LOWlib/logitech_receiver/centurion_constants.py7CODE
LOWlib/logitech_receiver/centurion.py25CODE
LOWlib/logitech_receiver/receiver.py18CODE
LOWlib/logitech_receiver/rgb_effects_probe.py19CODE
LOWlib/logitech_receiver/base_usb.py30CODE
LOWlib/logitech_receiver/diversion.py17CODE
LOWlib/logitech_receiver/common.py17CODE
LOWlib/logitech_receiver/settings.py16CODE
LOWlib/logitech_receiver/notifications.py22CODE
LOWlib/logitech_receiver/settings_validator.py1CODE
LOWlib/logitech_receiver/advanced_para_eq.py42CODE
LOWlib/logitech_receiver/onboard_eq.py23CODE
LOWlib/logitech_receiver/hidpp20.py17CODE
LOWlib/logitech_receiver/hidpp20.py2414CODE
LOWlib/logitech_receiver/hidpp20.py2415CODE
LOWlib/logitech_receiver/hidpp20.py2416CODE
LOWlib/logitech_receiver/hidpp20.py2417CODE
LOWlib/logitech_receiver/hidpp20.py2418CODE
LOWlib/logitech_receiver/hidpp20.py2419CODE
LOWlib/logitech_receiver/hidpp20.py2420CODE
LOWlib/logitech_receiver/hidpp20.py2421CODE
LOWlib/logitech_receiver/hidpp20.py2422CODE
LOWlib/logitech_receiver/hidpp20.py2423CODE
LOWlib/logitech_receiver/hidpp20.py2424CODE
LOWlib/logitech_receiver/hidpp20.py2425CODE
LOWlib/logitech_receiver/hidpp20.py2426CODE
LOWlib/logitech_receiver/hidpp20.py2427CODE
LOWlib/logitech_receiver/hidpp20.py2428CODE
LOWlib/logitech_receiver/base.py19CODE
LOWlib/logitech_receiver/hidpp10.py16CODE
LOWlib/logitech_receiver/logivoice.py37CODE
LOWlib/hid_parser/__init__.py3CODE
LOWlib/hidapi/hidapi_impl.py26CODE
LOWlib/hidapi/common.py1CODE
LOWlib/hidapi/udev_impl.py26CODE
LOWlib/solaar/dbus.py17CODE
LOWlib/solaar/listener.py18CODE
LOWlib/solaar/ui/diversion_rules.py17CODE
LOWlib/solaar/ui/about/presenter.py17CODE
LOWlib/solaar/ui/about/model.py17CODE
LOWlib/solaar/ui/perkey/_icons.py26CODE
LOWlib/solaar/ui/perkey/dialog.py25CODE
LOWlib/solaar/ui/perkey/layout.py24CODE
LOWlib/solaar/ui/perkey/protocol.py23CODE
LOWlib/solaar/ui/perkey/tools.py24CODE
LOWlib/solaar/ui/perkey/control.py24CODE
LOWlib/solaar/ui/perkey/__init__.py17CODE
LOWlib/solaar/ui/perkey/__init__.py18CODE
LOWlib/solaar/ui/perkey/__init__.py19CODE
LOWlib/solaar/ui/perkey/__init__.py20CODE
LOWlib/solaar/ui/perkey/palette.py25CODE
LOWlib/solaar/ui/perkey/editor.py23CODE
12 more matches not shown…
Redundant / Tautological Comments7 hits · 14 pts
SeverityFileLineSnippetContext
LOWrelease.sh90# Check if version is in the changelogCOMMENT
LOWrelease.sh98# Check if commit is a version bumpCOMMENT
LOWrelease.sh102# Check if commit has been pushed to remoteCOMMENT
LOWrelease.sh107# Check if tag already existsCOMMENT
LOWrelease.sh111# Check if tag already exists on remoteCOMMENT
LOWrelease.sh142 # Check if stable branch does not existCOMMENT
LOWlib/logitech_receiver/centurion.py563 # Check if any discovered feature is CentPPBridge (0x0003)COMMENT
AI Structural Patterns8 hits · 7 pts
SeverityFileLineSnippetContext
LOWlib/logitech_receiver/settings_templates.py2742CODE
LOWlib/logitech_receiver/settings_templates.py766CODE
LOWlib/logitech_receiver/diversion.py643CODE
LOWlib/logitech_receiver/diversion.py674CODE
LOWlib/logitech_receiver/descriptors.py60CODE
LOWlib/logitech_receiver/descriptors.py32CODE
LOWlib/logitech_receiver/settings_validator.py426CODE
LOWlib/solaar/ui/config_panel.py713CODE
Decorative Section Separators2 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUMlib/logitech_receiver/settings_templates.py2936# ----------------------------------------------------------------------------COMMENT
MEDIUMlib/logitech_receiver/settings_templates.py2951# ----------------------------------------------------------------------------COMMENT
AI Slop Vocabulary2 hits · 4 pts
SeverityFileLineSnippetContext
MEDIUMlib/logitech_receiver/settings_templates.py3815 # multi-color overlay on top so the user gets a seamless switch.COMMENT
LOWlib/logitech_receiver/settings_templates.py271# can't just use the first byte = 0xFF (for current host) because of a bug in the firmware of the MX Keys SCOMMENT
Slop Phrases2 hits · 3 pts
SeverityFileLineSnippetContext
LOWlib/logitech_receiver/settings.py123 # make sure to save its current value for the next time.COMMENT
LOWlib/solaar/listener.py94 # because udev is not notifying us about device removal, make sure to clean up in _all_listenersCOMMENT
Self-Referential Comments2 hits · 2 pts
SeverityFileLineSnippetContext
MEDIUMlib/hidapi/udev_impl.py65 """This function is a no-op, and exists only to match the native hidapiSTRING
MEDIUMlib/hidapi/udev_impl.py74 """This function is a no-op, and exists only to match the native hidapiSTRING