Picard is a cross-platform music tagger powered by the MusicBrainz database
This report summarizes scanner evidence for metabrainz/picard, a Python project with 5,288 GitHub stars. SynthScan examined 268,194 lines of code across 916 source files, recording 5328 pattern matches distributed across 23 syntactic categories. The legacy adjusted pattern signal is 24.4 (Elevated pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 4570 finding(s).
Are imports declared and package/API names verified? 289 finding(s).
Are wrappers, guards, and repeated structures necessary? 3830 finding(s).
Which changes need focused human review? 5328 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 5328 distinct pattern matches across 23 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. 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 configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | setup.py | 213 | def py_from_ui_with_defaultdir(uifile): | CODE |
| LOW | picard/options.py | 105 | def make_default_toolbar_layout(): | CODE |
| LOW⚡ | picard/config_upgrade_hooks.py | 431 | def convert_preserved_tags_to_list(config): | CODE |
| LOW⚡ | picard/config_upgrade_hooks.py | 441 | def rename_whitelist_ca_provider(settings): | CODE |
| LOW⚡ | picard/config_upgrade_hooks.py | 451 | def reset_main_splitter_states(config): | CODE |
| LOW⚡ | picard/config_upgrade_hooks.py | 647 | def reset_options_dialog_splitters(config): | CODE |
| LOW⚡ | picard/config_upgrade_hooks.py | 653 | def rename_toolbar_multiselect(settings): | CODE |
| LOW⚡ | picard/config_upgrade_hooks.py | 659 | def reset_locked_header_states(config): | CODE |
| LOW⚡ | picard/config_upgrade_hooks.py | 668 | def sanitize_replace_dir_separator(settings): | CODE |
| LOW | picard/config_upgrade_hooks.py | 146 | def remove_va_file_naming_format(merge=True): | CODE |
| LOW | picard/config_upgrade_hooks.py | 220 | def rename_windows_compatible_filenames(settings): | CODE |
| LOW | picard/config_upgrade_hooks.py | 226 | def convert_preserved_tags_separator(config): | CODE |
| LOW | picard/config_upgrade_hooks.py | 254 | def convert_release_type_scores(config): | CODE |
| LOW | picard/config_upgrade_hooks.py | 290 | def convert_ca_providers_to_tuples(config): | CODE |
| LOW | picard/config_upgrade_hooks.py | 333 | def convert_tagger_scripts_to_list(config): | CODE |
| LOW | picard/config_upgrade_hooks.py | 359 | def rename_save_only_front_images_to_tags(settings): | CODE |
| LOW | picard/config_upgrade_hooks.py | 400 | def convert_ignore_genres_to_filter(config): | CODE |
| LOW | picard/config_upgrade_hooks.py | 482 | def restructure_splitter_persist(config): | CODE |
| LOW | picard/config_upgrade_hooks.py | 485 | def upgrade_persisted_splitter(new_persist_key, key_map): | CODE |
| LOW | picard/config_upgrade_hooks.py | 525 | def convert_naming_scripts_to_dict(config): | CODE |
| LOW | picard/config_upgrade_hooks.py | 558 | def convert_script_exception_to_list(config): | CODE |
| LOW | picard/config_upgrade_hooks.py | 572 | def convert_script_exceptions_with_weighting(config): | CODE |
| LOW | picard/config_upgrade_hooks.py | 587 | def remove_acousticbrainz_from_toolbar(settings): | CODE |
| LOW | picard/config_upgrade_hooks.py | 601 | def add_preset_naming_scripts(config): | CODE |
| LOW | picard/config_upgrade_hooks.py | 681 | def copy_standardize_instruments_to_vocals(settings): | CODE |
| LOW | picard/config_upgrade_hooks.py | 689 | def change_theme_system_to_default(settings): | CODE |
| LOW | picard/config_upgrade_hooks.py | 707 | def remove_old_plugin_options(config): | CODE |
| LOW | picard/config_upgrade_hooks.py | 719 | def lowercase_cover_art_formats(settings): | CODE |
| LOW | picard/config_upgrade_hooks.py | 730 | def fix_matchedtracks_in_scripts(settings): | CODE |
| LOW | picard/config_upgrade_hooks.py | 751 | def remove_persisted_column_config(config): | CODE |
| LOW | picard/config_upgrade_hooks.py | 764 | def remove_similarity_thresholds(settings): | CODE |
| LOW | picard/config_upgrade_hooks.py | 776 | def rename_selected_file_naming_script_id(settings): | CODE |
| LOW | picard/config_upgrade_hooks.py | 796 | def convert_standardize_artists(settings): | CODE |
| LOW | picard/config_upgrade_hooks.py | 816 | def convert_release_type_scores_to_lists(settings): | CODE |
| LOW | picard/config_upgrade_hooks.py | 854 | def clamp_browser_integration_port(settings): | CODE |
| LOW | picard/config_upgrade_hooks.py | 862 | def upgrade_scripts_lyrics_comments(settings): | CODE |
| LOW | picard/releasegroup.py | 71 | def prepare_releases_for_versions(releases): | CODE |
| LOW | picard/config.py | 548 | def _get_all_profile_settings(self): | CODE |
| LOW | picard/config.py | 558 | def _is_settings_override_active(self) -> bool: | CODE |
| LOW | picard/config.py | 623 | def _save_all_profile_settings(self, all_settings: dict): | CODE |
| LOW | picard/config.py | 944 | def _versioned_config_filename(self, version=None): | CODE |
| LOW | picard/metadata.py | 618 | def run_album_metadata_processors(album_object: 'Album', metadata: Metadata, release_node: dict): | CODE |
| LOW | picard/metadata.py | 622 | def run_track_metadata_processors( | CODE |
| LOW | picard/audit.py | 56 | def list_from_prefixes_string(prefixes_string: str) -> Iterator[tuple[str, ...]]: | CODE |
| LOW | picard/audit.py | 73 | def prefixes_candidates_for_length( | CODE |
| LOW | picard/track.py | 372 | def _convert_folksonomy_tags_to_genre(self): | CODE |
| LOW | picard/track.py | 414 | def _add_folksonomy_tags_variable(self): | CODE |
| LOW | picard/track.py | 485 | def _recording_request_finished(self, recording, http, error): | CODE |
| LOW | picard/profile.py | 78 | def profile_groups_add_setting( | CODE |
| LOW | picard/profile.py | 104 | def profile_groups_all_settings() -> set[str]: | CODE |
| LOW | picard/profile.py | 108 | def profile_groups_update_highlights(section: str, option_name: str, highlights: Iterable[str]) -> None: | CODE |
| LOW | picard/profile.py | 132 | def profile_groups_group_from_page(page: 'OptionsPage') -> dict | None: | CODE |
| LOW | picard/profile.py | 155 | def profile_groups_remove_group(group: str) -> None: | CODE |
| LOW | picard/__init__.py | 214 | def _global_exception_handler(exctype, value, traceback): | CODE |
| LOW | picard/album.py | 335 | def _warn_deprecated_requests(self, operation): | CODE |
| LOW | picard/album.py | 365 | def iter_correctly_matched_tracks(self): | CODE |
| LOW | picard/album.py | 475 | def _run_album_metadata_processors(self): | CODE |
| LOW | picard/album.py | 522 | def _setup_release_artist_nodes(self, release_node): | CODE |
| LOW | picard/album.py | 549 | def _release_metadata_customization(self, metadata, release_node): | CODE |
| LOW | picard/album.py | 563 | def _needs_track_relationships(self, release_node): | CODE |
| 3288 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | requirements-build.txt | 801 | # via | COMMENT |
| LOW | setup.py | 1 | #!/usr/bin/env python3 | COMMENT |
| LOW | setup.py | 21 | # Copyright (C) 2019 Kurt Mosiejczuk | COMMENT |
| LOW | requirements-dev.txt | 1241 | # picard (pyproject.toml) | COMMENT |
| LOW | picard/options.py | 1 | # Picard, the next-generation MusicBrainz tagger | COMMENT |
| LOW | picard/options.py | 81 | COMMENT | |
| LOW | picard/config_upgrade_hooks.py | 1 | # Picard, the next-generation MusicBrainz tagger | COMMENT |
| LOW | picard/config_upgrade_hooks.py | 81 | # @upgrade_settings('x.y.z') — for settings transforms (renames, value changes) | COMMENT |
| LOW | picard/config_upgrade_hooks.py | 101 | # at the same version depend on each other. | COMMENT |
| LOW | picard/config_upgrade_hooks.py | 121 | # Rename with reversed boolean: | COMMENT |
| LOW | picard/debug_opts.py | 1 | # Picard, the next-generation MusicBrainz tagger | COMMENT |
| LOW | picard/releasegroup.py | 1 | # Picard, the next-generation MusicBrainz tagger | COMMENT |
| LOW | picard/config.py | 1 | # Picard, the next-generation MusicBrainz tagger | COMMENT |
| LOW | picard/metadata.py | 1 | # Picard, the next-generation MusicBrainz tagger | COMMENT |
| LOW | picard/metadata.py | 21 | # Copyright (C) 2024 x11x | COMMENT |
| LOW | picard/version.py | 1 | # Picard, the next-generation MusicBrainz tagger | COMMENT |
| LOW | picard/env.py | 1 | # Picard, the next-generation MusicBrainz tagger | COMMENT |
| LOW | picard/audit.py | 1 | # Picard, the next-generation MusicBrainz tagger | COMMENT |
| LOW | picard/similarity.py | 1 | # Picard, the next-generation MusicBrainz tagger | COMMENT |
| LOW | picard/log.py | 1 | # Picard, the next-generation MusicBrainz tagger | COMMENT |
| LOW | picard/track.py | 1 | # Picard, the next-generation MusicBrainz tagger | COMMENT |
| LOW | picard/track.py | 21 | # Copyright (C) 2020, 2022 Adam James | COMMENT |
| LOW | picard/profile.py | 1 | # Picard, the next-generation MusicBrainz tagger | COMMENT |
| LOW | picard/__init__.py | 1 | # Picard, the next-generation MusicBrainz tagger | COMMENT |
| LOW | picard/album_requests.py | 1 | # Picard, the next-generation MusicBrainz tagger | COMMENT |
| LOW | picard/album.py | 1 | # Picard, the next-generation MusicBrainz tagger | COMMENT |
| LOW | picard/album.py | 21 | # Copyright (C) 2020-2021 Gabriel Ferreira | COMMENT |
| LOW | picard/matching.py | 1 | # Picard, the next-generation MusicBrainz tagger | COMMENT |
| LOW | picard/matching.py | 21 | # Copyright (C) 2024 x11x | COMMENT |
| LOW | picard/matching.py | 461 | COMMENT | |
| LOW | picard/mbjson.py | 1 | # Picard, the next-generation MusicBrainz tagger | COMMENT |
| LOW | picard/file.py | 1 | # Picard, the next-generation MusicBrainz tagger | COMMENT |
| LOW | picard/file.py | 21 | # Copyright (C) 2016-2018 Sambhav Kothari | COMMENT |
| LOW | picard/tagger.py | 1 | # Picard, the next-generation MusicBrainz tagger | COMMENT |
| LOW | picard/tagger.py | 21 | # Copyright (C) 2016-2018 Sambhav Kothari | COMMENT |
| LOW | picard/tagger.py | 561 | original_save_thread_count = self.save_thread_pool.activeThreadCount() | COMMENT |
| LOW | picard/cluster.py | 1 | # Picard, the next-generation MusicBrainz tagger | COMMENT |
| LOW | picard/cluster.py | 21 | # Copyright (C) 2025 Bob Swift | COMMENT |
| LOW | picard/collection.py | 1 | # Picard, the next-generation MusicBrainz tagger | COMMENT |
| LOW | picard/plugin.py | 1 | # Picard, the next-generation MusicBrainz tagger | COMMENT |
| LOW | picard/plugin.py | 21 | # This program is free software; you can redistribute it and/or | COMMENT |
| LOW | picard/config_upgrade.py | 1 | # Picard, the next-generation MusicBrainz tagger | COMMENT |
| LOW | picard/config_upgrade.py | 61 | # See config_upgrade_hooks.py | COMMENT |
| LOW | picard/isrcsubmit.py | 1 | # Picard, the next-generation MusicBrainz tagger | COMMENT |
| LOW | picard/item.py | 1 | # Picard, the next-generation MusicBrainz tagger | COMMENT |
| LOW | picard/oauth.py | 1 | # Picard, the next-generation MusicBrainz tagger | COMMENT |
| LOW | picard/ui/moveable_list_view.py | 1 | # Picard, the next-generation MusicBrainz tagger | COMMENT |
| LOW | picard/ui/enums.py | 1 | # Picard, the next-generation MusicBrainz tagger | COMMENT |
| LOW | picard/ui/enums.py | 21 | # Copyright (C) 2017 Antonio Larrosa | COMMENT |
| LOW | picard/ui/playground.py | 1 | # Picard, the next-generation MusicBrainz tagger | COMMENT |
| LOW | picard/ui/theme.py | 1 | # Picard, the next-generation MusicBrainz tagger | COMMENT |
| LOW | picard/ui/tutorial.py | 1 | # Picard, the next-generation MusicBrainz tagger | COMMENT |
| LOW | picard/ui/match_icons.py | 1 | # Picard, the next-generation MusicBrainz tagger | COMMENT |
| LOW | picard/ui/util.py | 1 | # Picard, the next-generation MusicBrainz tagger | COMMENT |
| LOW | picard/ui/passworddialog.py | 1 | # Picard, the next-generation MusicBrainz tagger | COMMENT |
| LOW | picard/ui/theme_detect.py | 1 | # Picard, the next-generation MusicBrainz tagger | COMMENT |
| LOW | picard/ui/__init__.py | 1 | # Picard, the next-generation MusicBrainz tagger | COMMENT |
| LOW | picard/ui/theme_detect_qtdbus.py | 1 | # Picard, the next-generation MusicBrainz tagger | COMMENT |
| LOW | picard/ui/caa_types_selector.py | 1 | # Picard, the next-generation MusicBrainz tagger | COMMENT |
| LOW | picard/ui/cdlookup.py | 1 | # Picard, the next-generation MusicBrainz tagger | COMMENT |
| 670 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | picard/config_upgrade_hooks.py | 596 | except ValueError: | CODE |
| HIGH | picard/config_upgrade_hooks.py | 273 | except AttributeError: | CODE |
| HIGH | picard/config_upgrade_hooks.py | 249 | except AttributeError: | CODE |
| HIGH | picard/config.py | 426 | except KeyError: | CODE |
| HIGH | picard/metadata.py | 345 | except KeyError: | CODE |
| HIGH | picard/metadata.py | 387 | except KeyError: | CODE |
| HIGH | picard/log.py | 127 | except RuntimeError: | CODE |
| HIGH | picard/profile.py | 135 | except (AttributeError, KeyError): | CODE |
| HIGH | picard/profile.py | 142 | except (AttributeError, KeyError): | CODE |
| HIGH | picard/__init__.py | 156 | except: # noqa: E722,F722 # pylint: disable=bare-except | CODE |
| HIGH | picard/__init__.py | 208 | except: # noqa: E722,F722 # pylint: disable=bare-except | CODE |
| HIGH | picard/album.py | 573 | except KeyError: | CODE |
| HIGH | picard/album.py | 308 | except (RuntimeError, ValueError, AttributeError): | CODE |
| HIGH | picard/album.py | 327 | except RuntimeError: | CODE |
| HIGH | picard/matching.py | 446 | except (ValueError, KeyError): | CODE |
| HIGH | picard/matching.py | 459 | except (ValueError, KeyError): | CODE |
| HIGH | picard/matching.py | 914 | except ValueError: | CODE |
| HIGH | picard/matching.py | 929 | except ValueError: | CODE |
| HIGH | picard/mbjson.py | 742 | except (KeyError, IndexError, TypeError): | CODE |
| HIGH | picard/file.py | 1174 | except ValueError: | CODE |
| HIGH | picard/file.py | 1180 | except (ValueError, TypeError): | CODE |
| HIGH | picard/tagger.py | 218 | except OSError: | CODE |
| HIGH | picard/tagger.py | 1871 | except ImportError: | CODE |
| HIGH | picard/tagger.py | 1780 | except FileNotFoundError: | CODE |
| HIGH | picard/ui/theme.py | 112 | except ImportError: | CODE |
| HIGH | picard/ui/theme.py | 603 | except AttributeError: | CODE |
| HIGH | picard/ui/collectionmenu.py | 145 | except RuntimeError: | CODE |
| HIGH | picard/ui/options/dialog.py | 214 | except (ValueError, TypeError): | CODE |
| HIGH | picard/ui/options/dialog.py | 429 | except AttributeError: | CODE |
| HIGH | picard/ui/options/cdlookup.py | 80 | except ValueError: | CODE |
| HIGH | picard/ui/options/renaming_compat.py | 102 | except TypeError: | CODE |
| HIGH | picard/ui/options/profiles.py | 719 | except tomllib.TOMLDecodeError: | CODE |
| HIGH | picard/ui/mainwindow/__init__.py | 887 | except ValueError: | CODE |
| HIGH | picard/ui/itemviews/custom_columns/registry.py | 130 | except Exception: | CODE |
| HIGH | picard/ui/itemviews/custom_columns/registry.py | 173 | except Exception: | CODE |
| HIGH | picard/ui/itemviews/custom_columns/sorting_adapters.py | 288 | except (KeyError, TypeError): | CODE |
| HIGH | picard/ui/itemviews/custom_columns/sorting_adapters.py | 307 | except TypeError: | CODE |
| HIGH | picard/ui/itemviews/custom_columns/script_provider.py | 139 | except TypeError: | CODE |
| HIGH | picard/ui/coverartbox/__init__.py | 400 | except (AttributeError, TypeError, ValueError): | CODE |
| HIGH | picard/ui/coverartbox/__init__.py | 458 | except CoverArtImageError: | CODE |
| HIGH | picard/ui/dialogs/installconfirm.py | 173 | except Exception: | CODE |
| HIGH | picard/ui/dialogs/installconfirm.py | 190 | except Exception: | CODE |
| HIGH | picard/ui/dialogs/installplugin.py | 59 | except ImportError: | CODE |
| HIGH | picard/ui/dialogs/installplugin.py | 466 | except AttributeError: | CODE |
| HIGH | picard/ui/widgets/pluginlistwidget.py | 317 | except Exception: | CODE |
| HIGH | picard/ui/widgets/pluginlistwidget.py | 253 | except (AttributeError, Exception): | CODE |
| HIGH | picard/ui/widgets/pluginlistwidget.py | 836 | except Exception: | CODE |
| HIGH | picard/ui/widgets/plugindetailswidget.py | 283 | except Exception: | CODE |
| HIGH | picard/ui/widgets/plugindetailswidget.py | 157 | except Exception: | CODE |
| HIGH | picard/formats/vorbis.py | 277 | except KeyError: | CODE |
| HIGH | picard/formats/id3.py | 996 | except KeyError: | CODE |
| HIGH | picard/formats/id3.py | 604 | except BaseException: | CODE |
| HIGH | picard/formats/mp4.py | 330 | except ValueError: | CODE |
| HIGH | picard/formats/mp4.py | 344 | except ValueError: | CODE |
| HIGH | picard/formats/mp4.py | 337 | except ValueError: | CODE |
| HIGH | picard/formats/mp4.py | 351 | except ValueError: | CODE |
| HIGH | picard/formats/mp4.py | 313 | except ValueError: | CODE |
| HIGH | picard/acoustid/json_helpers.py | 143 | except TypeError: | CODE |
| HIGH | picard/util/filenaming.py | 109 | except IndexError: | CODE |
| HIGH | picard/util/filenaming.py | 420 | except OSError: | CODE |
| 53 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | picard/config_upgrade_hooks.py | 77 | # ---------------------- | COMMENT |
| MEDIUM | picard/config_upgrade_hooks.py | 116 | # --------------- | COMMENT |
| MEDIUM | picard/tagger.py | 1539 | # ======================================================================= | COMMENT |
| MEDIUM | picard/tagger.py | 1541 | # ======================================================================= | COMMENT |
| MEDIUM | picard/tagger.py | 1553 | # ======================================================================= | COMMENT |
| MEDIUM | picard/tagger.py | 1555 | # ======================================================================= | COMMENT |
| MEDIUM | picard/tagger.py | 1610 | # ======================================================================= | COMMENT |
| MEDIUM | picard/tagger.py | 1612 | # ======================================================================= | COMMENT |
| MEDIUM⚡ | picard/config_upgrade.py | 64 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | picard/config_upgrade.py | 66 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | picard/config_upgrade.py | 73 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | picard/config_upgrade.py | 163 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | picard/config_upgrade.py | 165 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | picard/ui/match_icons.py | 43 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | picard/ui/match_icons.py | 45 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | picard/ui/match_icons.py | 62 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | picard/ui/match_icons.py | 64 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | picard/webservice/ratecontrol.py | 35 | # ============================================================================ | COMMENT |
| MEDIUM | picard/webservice/ratecontrol.py | 37 | # ============================================================================ | COMMENT |
| MEDIUM | test/ui/test_match_icons.py | 30 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/ui/test_match_icons.py | 32 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/session/conftest.py | 47 | # ============================================================================= | COMMENT |
| MEDIUM | test/session/conftest.py | 49 | # ============================================================================= | COMMENT |
| MEDIUM | test/session/conftest.py | 98 | # ============================================================================= | COMMENT |
| MEDIUM | test/session/conftest.py | 100 | # ============================================================================= | COMMENT |
| MEDIUM | test/session/conftest.py | 138 | # ============================================================================= | COMMENT |
| MEDIUM | test/session/conftest.py | 140 | # ============================================================================= | COMMENT |
| MEDIUM | test/session/conftest.py | 201 | # ============================================================================= | COMMENT |
| MEDIUM | test/session/conftest.py | 203 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | test/session/conftest.py | 232 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | test/session/conftest.py | 233 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | test/session/conftest.py | 235 | # ============================================================================= | COMMENT |
| MEDIUM | test/session/conftest.py | 338 | # ============================================================================= | COMMENT |
| MEDIUM | test/session/conftest.py | 340 | # ============================================================================= | COMMENT |
| MEDIUM | test/session/conftest.py | 355 | # ============================================================================= | COMMENT |
| MEDIUM | test/session/conftest.py | 357 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | test/session/test_data.py | 85 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | test/session/test_data.py | 87 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | test/session/test_data.py | 112 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | test/session/test_data.py | 114 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | test/session/test_data.py | 143 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | test/session/test_data.py | 145 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | test/session/test_data.py | 171 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | test/session/test_data.py | 173 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | test/session/test_data.py | 200 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | test/session/test_data.py | 202 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | test/session/test_data.py | 216 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | test/session/test_data.py | 218 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | test/session/test_data.py | 231 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | test/session/test_data.py | 233 | # ============================================================================= | COMMENT |
| MEDIUM | test/session/test_data.py | 39 | # ============================================================================= | COMMENT |
| MEDIUM | test/session/test_data.py | 41 | # ============================================================================= | COMMENT |
| MEDIUM | scripts/test_plugin_redirects.sh | 33 | # ============================================================================= | COMMENT |
| MEDIUM | scripts/test_plugin_redirects.sh | 35 | # ============================================================================= | COMMENT |
| MEDIUM | scripts/test_plugin_redirects.sh | 68 | # ============================================================================= | COMMENT |
| MEDIUM | scripts/test_plugin_redirects.sh | 70 | # ============================================================================= | COMMENT |
| MEDIUM | scripts/test_plugin_redirects.sh | 103 | # ============================================================================= | COMMENT |
| MEDIUM | scripts/test_plugin_redirects.sh | 105 | # ============================================================================= | COMMENT |
| MEDIUM | scripts/test_plugin_redirects.sh | 172 | # ============================================================================= | COMMENT |
| MEDIUM | scripts/test_plugin_redirects.sh | 174 | # ============================================================================= | COMMENT |
| 42 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | picard/tagger.py | 285 | # Initialize these variables early as they are needed for a clean | COMMENT |
| MEDIUM | picard/ui/formattedtextdelegate.py | 96 | # Create a QTextDocument to render the formatted text | COMMENT |
| MEDIUM | picard/ui/formattedtextdelegate.py | 128 | # Create a QTextDocument to render the formatted text | COMMENT |
| MEDIUM | picard/ui/itemviews/__init__.py | 181 | # Create a layout for each view to include the filter box | COMMENT |
| MEDIUM | picard/ui/itemviews/custom_columns/manager_dialog.py | 460 | # Create a placeholder specification with blank expression | COMMENT |
| MEDIUM | picard/ui/itemviews/custom_columns/storage.py | 270 | # Create a mapping of class name strings to actual classes | COMMENT |
| MEDIUM | picard/ui/statusindicator/unity.py | 71 | # Create the signal message manually. | COMMENT |
| MEDIUM | picard/ui/widgets/plaintextedit.py | 92 | # Create a new data object with plain text only. Modifying the existing | COMMENT |
| MEDIUM | picard/ui/widgets/scripttextedit.py | 424 | # Initialize dynamic variables from current (possibly empty) script content. | COMMENT |
| MEDIUM | picard/util/textencoding.py | 61 | # This module provides utility functions to enable simplification of latin and punctuation unicode: | COMMENT |
| MEDIUM | picard/profiles/importer.py | 162 | # Create a new profile | COMMENT |
| MEDIUM | picard/plugin3/categories.py | 88 | # Create a list of (key, translated_title) tuples | COMMENT |
| MEDIUM | picard/git/backends/pygit2.py | 530 | # Create a new HEAD that points directly to the commit | COMMENT |
| MEDIUM | picard/session/session_loader.py | 730 | # The following block of methods are retained for scheduling and lifecycle. | COMMENT |
| MEDIUM | test/test_git.py | 211 | # Create a local git repository with tags | COMMENT |
| MEDIUM | test/test_profiles.py | 476 | # Create an option without in_profile | COMMENT |
| MEDIUM | test/plugins3/test_registry.py | 324 | # Create a fake local plugin directory with .git | COMMENT |
| MEDIUM | test/plugins3/test_plugin.py | 188 | # Create a test git repo | COMMENT |
| MEDIUM | test/plugins3/test_plugin.py | 211 | # Create a test git repo with a tag | COMMENT |
| MEDIUM | test/plugins3/test_plugin.py | 216 | # Create a tag | COMMENT |
| MEDIUM⚡ | test/plugins3/test_git.py | 200 | # Create a tag | COMMENT |
| MEDIUM⚡ | test/plugins3/test_git.py | 209 | # Create a dev branch with different content | COMMENT |
| MEDIUM⚡ | test/plugins3/test_git.py | 233 | # Create a lightweight tag (just a reference, no tag object) | COMMENT |
| MEDIUM | test/plugins3/test_git.py | 363 | # Create a dev branch in source | COMMENT |
| MEDIUM | test/plugins3/test_git.py | 388 | # Create a tag in source | COMMENT |
| MEDIUM | test/plugins3/test_git.py | 524 | # Create a v1.0.0 tag | COMMENT |
| MEDIUM | test/plugins3/test_local_non_git_plugin.py | 168 | # Create a fake .git directory | COMMENT |
| MEDIUM | test/plugins3/test_update.py | 663 | # Create a new commit on main | COMMENT |
| MEDIUM⚡ | test/plugins3/test_api.py | 282 | # Create a temporary config file | COMMENT |
| MEDIUM⚡ | test/plugins3/test_api.py | 287 | # Create a real QSettings instance | COMMENT |
| MEDIUM⚡ | test/plugins3/test_api.py | 476 | # Create a temporary config file | COMMENT |
| MEDIUM⚡ | test/plugins3/test_api.py | 481 | # Create a real QSettings instance | COMMENT |
| MEDIUM | test/plugins3/test_api.py | 244 | # Create a real handler that captures messages | COMMENT |
| MEDIUM | test/plugins3/test_api.py | 307 | # Create a new settings instance to verify persistence | COMMENT |
| MEDIUM⚡ | test/plugins3/test_manager.py | 457 | # Create a mock manifest | COMMENT |
| MEDIUM⚡ | test/plugins3/test_manager.py | 976 | # Create a plugin that will fail to load | COMMENT |
| MEDIUM | test/plugins3/test_manager.py | 132 | # Create a file in temp1 to ensure recursive cleanup | COMMENT |
| MEDIUM | test/plugins3/test_manager.py | 836 | # Create a nested structure with a read-only file, similar to .git pack files | COMMENT |
| MEDIUM | test/plugins3/test_manager.py | 874 | # Create a mock plugin with UUID | COMMENT |
| MEDIUM | test/plugins3/test_cli.py | 197 | # Create a temporary git repository | COMMENT |
| MEDIUM | test/plugins3/test_cli.py | 297 | # Create a real temporary config | COMMENT |
| MEDIUM⚡ | test/plugins3/test_install.py | 322 | # Create a temporary plugin directory and config file | COMMENT |
| MEDIUM⚡ | test/plugins3/test_install.py | 329 | # Create a real temporary config | COMMENT |
| MEDIUM | test/plugins3/test_install.py | 247 | # Create a fake existing plugin directory with UUID-based name | COMMENT |
| MEDIUM | test/plugins3/test_install.py | 285 | # Create a fake existing plugin directory with UUID-based name | COMMENT |
| MEDIUM⚡ | test/ui/test_custom_columns.py | 287 | # Create an object that will fail obj.column but have metadata | COMMENT |
| MEDIUM⚡ | test/ui/test_itemviews_match_quality.py | 796 | # Create a mock delegate column | COMMENT |
| MEDIUM⚡ | test/ui/test_itemviews_match_quality.py | 800 | # Create a mock item | COMMENT |
| MEDIUM | test/formats/test_registry.py | 369 | # Create a temp file with MOCK header | COMMENT |
| MEDIUM | test/formats/test_registry.py | 387 | # Create a temp file without MOCK header | COMMENT |
| MEDIUM | test/formats/test_registry.py | 403 | # Create a temp file with MOCK header | COMMENT |
| MEDIUM⚡ | test/formats/test_vorbis.py | 171 | # Create a test file that contains only disctotal / tracktotal, | COMMENT |
| MEDIUM | test/formats/test_id3.py | 311 | # Create a COMM frame with iTunes_CDDB_1 descriptor | COMMENT |
| MEDIUM⚡ | test/util/test_textencoding.py | 283 | # The following code set blocks are taken from: | COMMENT |
| MEDIUM⚡ | test/profiles/test_profile_import.py | 472 | # Create an existing profile with the same title | STRING |
| MEDIUM⚡ | test/script_text_edit/test_script_completer.py | 200 | # Create a custom mock class that handles __bool__ properly | COMMENT |
| MEDIUM⚡ | test/script_text_edit/test_script_completer.py | 476 | # Create a large script with many $set statements | COMMENT |
| MEDIUM⚡ | test/script_text_edit/test_script_completer.py | 526 | # Create a mock function with invalid structure | COMMENT |
| MEDIUM⚡ | test/script_text_edit/test_variable_extractor.py | 273 | # Create a long script with many variables | STRING |
| MEDIUM | test/script_text_edit/test_variable_extractor.py | 306 | # Create a large script | STRING |
| 16 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | setup.py | 231 | CODE | |
| LOW | picard/config_upgrade_hooks.py | 142 | CODE | |
| LOW | picard/releasegroup.py | 121 | CODE | |
| LOW | picard/config.py | 461 | CODE | |
| LOW | picard/config.py | 840 | CODE | |
| LOW | picard/metadata.py | 127 | CODE | |
| LOW | picard/metadata.py | 164 | CODE | |
| LOW | picard/metadata.py | 357 | CODE | |
| LOW | picard/metadata.py | 394 | CODE | |
| LOW | picard/track.py | 394 | CODE | |
| LOW | picard/profile.py | 155 | CODE | |
| LOW | picard/album.py | 313 | CODE | |
| LOW | picard/album.py | 577 | CODE | |
| LOW | picard/album.py | 799 | CODE | |
| LOW | picard/album.py | 865 | CODE | |
| LOW | picard/album.py | 1021 | CODE | |
| LOW | picard/album.py | 1138 | CODE | |
| LOW | picard/album.py | 1222 | CODE | |
| LOW | picard/matching.py | 384 | CODE | |
| LOW | picard/matching.py | 795 | CODE | |
| LOW | picard/matching.py | 863 | CODE | |
| LOW | picard/matching.py | 919 | CODE | |
| LOW | picard/mbjson.py | 224 | CODE | |
| LOW | picard/mbjson.py | 808 | CODE | |
| LOW | picard/mbjson.py | 824 | CODE | |
| LOW | picard/mbjson.py | 899 | CODE | |
| LOW | picard/mbjson.py | 920 | CODE | |
| LOW | picard/mbjson.py | 965 | CODE | |
| LOW | picard/file.py | 547 | CODE | |
| LOW | picard/file.py | 872 | CODE | |
| LOW | picard/file.py | 1006 | CODE | |
| LOW | picard/file.py | 1162 | CODE | |
| LOW | picard/tagger.py | 548 | CODE | |
| LOW | picard/tagger.py | 925 | CODE | |
| LOW | picard/tagger.py | 1007 | CODE | |
| LOW | picard/tagger.py | 1077 | CODE | |
| LOW | picard/tagger.py | 1322 | CODE | |
| LOW | picard/cluster.py | 288 | CODE | |
| LOW | picard/cluster.py | 361 | CODE | |
| LOW | picard/config_upgrade.py | 211 | CODE | |
| LOW | picard/isrcsubmit.py | 255 | CODE | |
| LOW | picard/ui/playground.py | 157 | CODE | |
| LOW | picard/ui/util.py | 397 | CODE | |
| LOW | picard/ui/util.py | 238 | CODE | |
| LOW | picard/ui/theme_detect.py | 72 | CODE | |
| LOW | picard/ui/theme_detect.py | 113 | CODE | |
| LOW | picard/ui/tagsfromfilenames.py | 50 | CODE | |
| LOW | picard/ui/scriptsmenu.py | 72 | CODE | |
| LOW | picard/ui/isrcsubmitdialog.py | 35 | CODE | |
| LOW | picard/ui/options/plugins.py | 198 | CODE | |
| LOW | picard/ui/options/dialog.py | 254 | CODE | |
| LOW | picard/ui/options/dialog.py | 591 | CODE | |
| LOW | picard/ui/options/dialog.py | 738 | CODE | |
| LOW | picard/ui/options/dialog.py | 1179 | CODE | |
| LOW | picard/ui/options/interface_quick_menu.py | 77 | CODE | |
| LOW | picard/ui/options/interface_quick_menu.py | 133 | CODE | |
| LOW | picard/ui/options/profiles.py | 255 | CODE | |
| LOW | picard/ui/options/profiles.py | 495 | CODE | |
| LOW | picard/ui/options/profiles.py | 663 | CODE | |
| LOW | picard/ui/options/profiles.py | 891 | CODE | |
| 205 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | picard/metadata.py | 57 | CODE | |
| LOW | picard/metadata.py | 58 | CODE | |
| LOW | picard/metadata.py | 59 | CODE | |
| LOW | picard/track.py | 94 | CODE | |
| LOW | picard/profile.py | 37 | CODE | |
| LOW | picard/matching.py | 64 | CODE | |
| LOW | picard/mbjson.py | 33 | CODE | |
| LOW | picard/mbjson.py | 67 | CODE | |
| LOW | picard/mbjson.py | 68 | CODE | |
| LOW | picard/mbjson.py | 70 | CODE | |
| LOW | picard/mbjson.py | 71 | CODE | |
| LOW | picard/file.py | 132 | CODE | |
| LOW | picard/file.py | 134 | CODE | |
| LOW | picard/file.py | 135 | CODE | |
| LOW | picard/tagger.py | 195 | CODE | |
| LOW | picard/cluster.py | 78 | CODE | |
| LOW | picard/config_upgrade.py | 356 | CODE | |
| LOW | picard/config_upgrade.py | 432 | CODE | |
| LOW | picard/item.py | 51 | CODE | |
| LOW | picard/item.py | 53 | CODE | |
| LOW | picard/ui/options/dialog.py | 80 | CODE | |
| LOW | picard/ui/options/dialog.py | 80 | CODE | |
| LOW | picard/ui/options/dialog.py | 80 | CODE | |
| LOW | picard/ui/options/dialog.py | 80 | CODE | |
| LOW | picard/ui/options/dialog.py | 80 | CODE | |
| LOW | picard/ui/options/dialog.py | 80 | CODE | |
| LOW | picard/ui/options/dialog.py | 80 | CODE | |
| LOW | picard/ui/options/dialog.py | 80 | CODE | |
| LOW | picard/ui/options/dialog.py | 80 | CODE | |
| LOW | picard/ui/options/dialog.py | 80 | CODE | |
| LOW | picard/ui/options/dialog.py | 80 | CODE | |
| LOW | picard/ui/options/dialog.py | 80 | CODE | |
| LOW | picard/ui/options/dialog.py | 80 | CODE | |
| LOW | picard/ui/options/dialog.py | 80 | CODE | |
| LOW | picard/ui/options/dialog.py | 80 | CODE | |
| LOW | picard/ui/options/dialog.py | 80 | CODE | |
| LOW | picard/ui/options/dialog.py | 80 | CODE | |
| LOW | picard/ui/options/dialog.py | 80 | CODE | |
| LOW | picard/ui/options/dialog.py | 80 | CODE | |
| LOW | picard/ui/options/dialog.py | 80 | CODE | |
| LOW | picard/ui/options/dialog.py | 80 | CODE | |
| LOW | picard/ui/options/dialog.py | 80 | CODE | |
| LOW | picard/ui/options/dialog.py | 80 | CODE | |
| LOW | picard/ui/options/dialog.py | 80 | CODE | |
| LOW | picard/ui/options/dialog.py | 80 | CODE | |
| LOW | picard/ui/options/dialog.py | 80 | CODE | |
| LOW | picard/ui/options/dialog.py | 80 | CODE | |
| LOW | picard/ui/options/dialog.py | 80 | CODE | |
| LOW | picard/ui/options/dialog.py | 80 | CODE | |
| LOW | picard/ui/options/dialog.py | 80 | CODE | |
| LOW | picard/ui/options/dialog.py | 80 | CODE | |
| LOW | picard/ui/options/dialog.py | 80 | CODE | |
| LOW | picard/ui/options/dialog.py | 80 | CODE | |
| LOW | picard/ui/options/dialog.py | 122 | CODE | |
| LOW | picard/ui/itemviews/custom_columns/resolve.py | 26 | CODE | |
| LOW | picard/ui/itemviews/custom_columns/__init__.py | 23 | CODE | |
| LOW | picard/ui/itemviews/custom_columns/__init__.py | 23 | CODE | |
| LOW | picard/ui/itemviews/custom_columns/__init__.py | 23 | CODE | |
| LOW | picard/ui/itemviews/custom_columns/__init__.py | 28 | CODE | |
| LOW | picard/ui/itemviews/custom_columns/__init__.py | 28 | CODE | |
| 184 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | picard/config.py | 453 | except Exception as why: | CODE |
| LOW | picard/track.py | 493 | except Exception: | CODE |
| LOW | picard/album.py | 614 | except Exception: | CODE |
| MEDIUM | picard/file.py | 217 | def _fast_hash(self): | CODE |
| LOW | picard/file.py | 204 | except Exception as e: | CODE |
| LOW | picard/file.py | 209 | except Exception as e: | CODE |
| LOW | picard/file.py | 224 | except Exception as e: | CODE |
| LOW | picard/tagger.py | 1429 | except Exception: | CODE |
| LOW | picard/tagger.py | 1491 | except Exception as e: | CODE |
| LOW | picard/plugin.py | 174 | except Exception: | CODE |
| LOW | picard/oauth.py | 214 | except Exception as e: | CODE |
| LOW | picard/oauth.py | 359 | except Exception as e: | CODE |
| LOW | picard/oauth.py | 399 | except Exception as e: | CODE |
| LOW | picard/oauth.py | 427 | except Exception as e: | CODE |
| LOW | picard/ui/theme_detect_qtdbus.py | 56 | except Exception: # noqa: BLE001 | CODE |
| LOW | picard/ui/options/plugins.py | 232 | except Exception as e: | CODE |
| LOW | picard/ui/options/plugins.py | 270 | except Exception as e: | CODE |
| LOW | picard/ui/options/plugins.py | 385 | except Exception as e: | CODE |
| MEDIUM | picard/ui/options/plugins.py | 242 | def on_registry_refreshed(success, error): | CODE |
| LOW⚡ | picard/ui/options/dialog.py | 722 | except Exception as e: | CODE |
| LOW | picard/ui/options/dialog.py | 535 | except Exception: | CODE |
| LOW | picard/ui/options/dialog.py | 938 | except Exception as e: | CODE |
| LOW | picard/ui/options/dialog.py | 948 | except Exception as e: | CODE |
| LOW | picard/ui/options/dialog.py | 964 | except Exception as e: | CODE |
| LOW | picard/ui/options/dialog.py | 1007 | except Exception as e: | CODE |
| LOW | picard/ui/options/scripting.py | 279 | except Exception as e: | CODE |
| LOW | picard/ui/mainwindow/__init__.py | 2445 | except Exception as ex: | CODE |
| LOW | picard/ui/itemviews/basetreeview.py | 408 | except Exception: | CODE |
| LOW | picard/ui/itemviews/custom_columns/registry.py | 130 | except Exception: | CODE |
| LOW | picard/ui/itemviews/custom_columns/registry.py | 173 | except Exception: | CODE |
| LOW | picard/ui/searchdialog/album.py | 326 | except Exception as e: | CODE |
| LOW | picard/ui/scripteditor/__init__.py | 997 | except Exception as e: | CODE |
| LOW | picard/ui/metadatabox/__init__.py | 520 | except Exception as e: | CODE |
| LOW⚡ | picard/ui/metadatabox/__init__.py | 660 | except Exception: | CODE |
| LOW⚡ | picard/ui/metadatabox/__init__.py | 667 | except Exception: | CODE |
| MEDIUM | picard/ui/metadatabox/__init__.py | 552 | def _paste_from_json(self, mimedata): | CODE |
| LOW⚡ | picard/ui/statusindicator/__init__.py | 88 | except Exception as err: | CODE |
| LOW⚡ | picard/ui/statusindicator/__init__.py | 97 | except Exception as err: | CODE |
| LOW | picard/ui/statusindicator/windows.py | 54 | except Exception as err: | CODE |
| LOW | picard/ui/dialogs/installconfirm.py | 173 | except Exception: | CODE |
| LOW | picard/ui/dialogs/installconfirm.py | 190 | except Exception: | CODE |
| LOW | picard/ui/dialogs/plugin_error.py | 118 | except Exception: | CODE |
| LOW | picard/ui/dialogs/installplugin.py | 376 | except Exception as e: | CODE |
| LOW | picard/ui/dialogs/installplugin.py | 469 | except Exception as e: | CODE |
| LOW | picard/ui/dialogs/installplugin.py | 537 | except Exception as e: | CODE |
| LOW | picard/ui/dialogs/installplugin.py | 573 | except Exception as e: | CODE |
| LOW | picard/ui/dialogs/plugininfo.py | 239 | except Exception: | CODE |
| LOW | picard/ui/widgets/pluginlistwidget.py | 317 | except Exception: | CODE |
| LOW | picard/ui/widgets/pluginlistwidget.py | 360 | except Exception: | CODE |
| LOW | picard/ui/widgets/pluginlistwidget.py | 535 | except Exception as e: | CODE |
| LOW | picard/ui/widgets/pluginlistwidget.py | 721 | except Exception as e: | CODE |
| LOW | picard/ui/widgets/pluginlistwidget.py | 836 | except Exception: | CODE |
| LOW | picard/ui/widgets/pluginlistwidget.py | 848 | except Exception as e: | CODE |
| LOW | picard/ui/widgets/pluginlistwidget.py | 1071 | except Exception as e: | CODE |
| LOW | picard/ui/widgets/plugindetailswidget.py | 157 | except Exception: | CODE |
| LOW | picard/ui/widgets/plugindetailswidget.py | 283 | except Exception: | CODE |
| LOW | picard/ui/widgets/plugindetailswidget.py | 370 | except Exception as e: | CODE |
| LOW | picard/ui/player/__init__.py | 100 | except Exception as err: | CODE |
| LOW | picard/formats/registry.py | 127 | except Exception as e: | CODE |
| LOW | picard/formats/registry.py | 163 | except Exception as e: | CODE |
| 133 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | picard/ui/util.py | 98 | run_executable('xdg-open', url.toString()) | CODE |
| HIGH | picard/ui/coverartbox/coverartthumbnail.py | 148 | log.debug("Dropped %s url (with %d bytes of data)", url.toString(), len(dropped_data or '')) | CODE |
| HIGH | picard/ui/coverartbox/__init__.py | 448 | log.debug('Fetched remote image with MIME-Type %s from %s', mime, url.toString()) | CODE |
| HIGH | picard/ui/coverartbox/__init__.py | 463 | log.debug('Possible Google images result, trying to fetch imgurl=%s', url.toString()) | CODE |
| HIGH | picard/ui/coverartbox/__init__.py | 468 | log.debug('Possible Bing images result, trying to fetch imgurl=%s', url.toString()) | CODE |
| HIGH | picard/ui/coverartbox/__init__.py | 492 | log.debug("Trying URL parsed from HTML: %s", url.toString()) | CODE |
| HIGH | picard/ui/coverartbox/__init__.py | 503 | coverartimage = CoverArtImage(url=url.toString(), types=['front'], data=data) | CODE |
| HIGH | picard/coverart/image.py | 138 | return "%s: %s" % (self.sourceprefix, self.url.toString()) | CODE |
| HIGH | picard/coverart/image.py | 178 | yield "url=%r" % self.url.toString() | CODE |
| HIGH | picard/coverart/image.py | 193 | yield "from %s" % self.url.toString() | CODE |
| HIGH | picard/util/mbserver/submission.py | 64 | return url.toString() | CODE |
| HIGH | picard/webservice/__init__.py | 937 | log.debug("Retrying without authentication: %s", url.toString()) | CODE |
| HIGH | picard/webservice/__init__.py | 940 | log.debug("Cannot retry without authentication: %s", url.toString()) | CODE |
| HIGH | picard/plugin3/cli.py | 2097 | commit_cmd = 'git add -A && git commit -m "Initial plugin scaffold"' | CODE |
| HIGH⚡ | test/test_log.py | 80 | self.item_queue.push(MockLogItem(i)) | CODE |
| HIGH⚡ | test/test_log.py | 89 | self.item_queue.push(MockLogItem(i)) | CODE |
| HIGH⚡ | test/test_log.py | 98 | self.item_queue.push(MockLogItem(i)) | CODE |
| HIGH⚡ | test/test_log.py | 104 | self.item_queue.push(MockLogItem(10)) | CODE |
| HIGH⚡ | test/test_log.py | 124 | self.item_queue.push(MockLogItem(4)) | CODE |
| HIGH⚡ | test/test_log.py | 125 | self.item_queue.push(MockLogItem(5)) | CODE |
| HIGH⚡ | test/test_log.py | 126 | self.item_queue.push(MockLogItem(11)) | CODE |
| HIGH⚡ | test/plugins3/test_registry.py | 553 | url_str = url.toString() | CODE |
| HIGH | test/plugins3/test_registry.py | 585 | calls.append(url.toString()) | CODE |
| HIGH | test/plugins3/test_registry.py | 612 | calls.append(url.toString()) | CODE |
| HIGH | test/coverart/test_image.py | 468 | self.assertEqual(image.url.toString(), 'file://' + path) | CODE |
| HIGH | test/webservice/test_api_helpers_musicbrainz.py | 56 | self.assertTrue(url.toString().startswith("https://mb.org/")) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | picard/config.py | 797 | # Check if there is a config file specifically for this version | COMMENT |
| LOW | picard/isrcsubmit.py | 271 | # Check if the ISRC is already assigned to another track on this release | COMMENT |
| LOW | picard/ui/filter.py | 135 | # Check if selected filters were removed and re-apply the filter | COMMENT |
| LOW | picard/ui/options/plugins.py | 211 | # Check if the update is still valid (current commit == old_commit from update info) | COMMENT |
| LOW | picard/ui/options/dialog.py | 258 | # Check if this is a plugin option page and if the plugin is enabled | COMMENT |
| LOW | picard/ui/options/dialog.py | 1170 | # Check if any other enabled profile has it | COMMENT |
| LOW | picard/ui/options/profiles.py | 682 | # Check if the file contains a profile UUID that already exists in the dialog | COMMENT |
| LOW | picard/ui/itemviews/custom_columns/registry.py | 149 | # Check if this widget uses our target columns | COMMENT |
| LOW | picard/ui/itemviews/custom_columns/validation.py | 211 | # Check if key already exists in context | COMMENT |
| LOW | picard/ui/infodialog/dialog.py | 201 | # Check if this object contains the tribute track | COMMENT |
| LOW | picard/ui/infodialog/dialog.py | 427 | # Check if this function isn't triggered by cell in Type column | COMMENT |
| LOW | picard/ui/widgets/context_detector.py | 129 | # Check if there's a complete variable before the %% | COMMENT |
| LOW | picard/ui/widgets/context_detector.py | 157 | # Check if we're in the first argument (no comma yet) and not closed | COMMENT |
| LOW⚡ | picard/ui/widgets/context_detector.py | 218 | # Check if it's a valid partial function name (alphanumeric/underscore characters) | COMMENT |
| LOW⚡ | picard/ui/widgets/context_detector.py | 234 | # Check if it's a valid partial variable name (alphanumeric/underscore characters) | COMMENT |
| LOW | picard/ui/widgets/pluginlistwidget.py | 366 | # Check if user has previously unchecked this plugin | COMMENT |
| LOW | picard/ui/widgets/scripttextedit.py | 260 | # Check if user scripts have changed and rescan if needed | COMMENT |
| LOW | picard/ui/widgets/scripttextedit.py | 569 | # Check if this is a tag-name function | COMMENT |
| LOW | picard/ui/widgets/scripttextedit.py | 693 | # Check if we should show the popup based on current context | COMMENT |
| LOW | picard/ui/widgets/plugindetailswidget.py | 309 | # Check if plugin is in do_not_update list and ask for confirmation | COMMENT |
| LOW | picard/ui/widgets/plugindetailswidget.py | 349 | # Check if parent has a plugin_list attribute | COMMENT |
| LOW | picard/formats/registry.py | 152 | # Read file header for format detection | COMMENT |
| LOW | picard/util/checkupdate.py | 128 | # Display results to user. | COMMENT |
| LOW | picard/extension_points/item_actions.py | 131 | action.setParent(action_menu) # Set parent to keep action alive | CODE |
| LOW⚡ | picard/extension_points/__init__.py | 123 | # Check if any enabled UUID maps to this module name | COMMENT |
| LOW | picard/webservice/__init__.py | 545 | # Check if task was aborted before starting | COMMENT |
| LOW | picard/plugin3/plugin_metadata.py | 370 | # Check if current commit matches a tag (prefer tag over branch) | COMMENT |
| LOW⚡ | picard/plugin3/cli.py | 848 | # Check if already installed first (unless reinstalling) | COMMENT |
| LOW⚡ | picard/plugin3/cli.py | 850 | # Check if any loaded plugin has this URL | COMMENT |
| LOW | picard/plugin3/cli.py | 432 | # Check if local non-git plugin | COMMENT |
| LOW | picard/plugin3/cli.py | 627 | # Check if this is a local non-git plugin | COMMENT |
| LOW | picard/plugin3/cli.py | 777 | # Check if it's a plugin ID (no slashes, no protocol) | COMMENT |
| LOW | picard/plugin3/cli.py | 831 | # Check if this URL is in the registry (possibly via redirect_from) | COMMENT |
| LOW | picard/plugin3/cli.py | 944 | # Check if installing from dirty local git repository | COMMENT |
| LOW | picard/plugin3/cli.py | 1002 | # Check if this is a failed plugin (no manifest) | COMMENT |
| LOW | picard/plugin3/cli.py | 1335 | # Check if plugin config exists | COMMENT |
| LOW | picard/plugin3/cli.py | 1389 | # Check if it's a failed plugin directory name | COMMENT |
| LOW | picard/plugin3/cli.py | 1406 | # Check if url is a local directory | COMMENT |
| LOW | picard/plugin3/cli.py | 2110 | # Check if it's an installed plugin | COMMENT |
| LOW | picard/plugin3/cli.py | 2120 | # Check if it's a local directory | COMMENT |
| LOW | picard/plugin3/plugin.py | 267 | # Check if it's a repository-level 404/not found error (not branch-level) | COMMENT |
| LOW | picard/plugin3/plugin.py | 409 | # Check if currently on a tag | COMMENT |
| LOW | picard/plugin3/plugin.py | 444 | # Set resolved_ref_type to indicate this is a tag | COMMENT |
| LOW | picard/plugin3/plugin.py | 724 | # Check if there's an existing API instance (from UI components) | COMMENT |
| LOW | picard/plugin3/manager/update.py | 181 | # Check if plugin is blacklisted (by current or redirected URL/UUID) | COMMENT |
| LOW | picard/plugin3/manager/update.py | 186 | # Check if plugin has versioning_scheme and current ref is a version tag | COMMENT |
| LOW | picard/plugin3/manager/__init__.py | 226 | # Check if we have an installed plugin for this URL to reuse its repository | COMMENT |
| LOW⚡ | picard/plugin3/manager/lifecycle.py | 337 | # Check if plugin is from registry (has known git URL) | COMMENT |
| LOW | picard/plugin3/manager/install.py | 91 | # Check if url is a local directory (git or plain) | COMMENT |
| LOW | picard/plugin3/manager/install.py | 230 | # Check if already installed from this path | COMMENT |
| LOW | picard/git/ops.py | 156 | # Check if ref exists in remote | COMMENT |
| LOW | picard/git/ops.py | 341 | # Check if we're switching to a remote branch | COMMENT |
| LOW | picard/git/utils.py | 42 | # Check if it's a local path (not a remote protocol) | COMMENT |
| LOW | picard/git/backends/pygit2.py | 233 | # Check if there's a ^{} version | COMMENT |
| LOW | picard/git/backends/pygit2.py | 288 | # Check if it's an annotated tag and dereference to commit | COMMENT |
| LOW | picard/git/backends/pygit2.py | 548 | # Check if we can use an existing repository | COMMENT |
| LOW | picard/session/session_exporter.py | 313 | # Check if this album has any files matched to it | COMMENT |
| LOW | test/ui/test_theme.py | 598 | # Set config to SYSTEM | COMMENT |
| LOW | test/formats/test_apev2.py | 208 | # Open file and rename it | COMMENT |
| LOW | scripts/migrate_plugin.py | 197 | # Check if it's a tuple of strings (implicit concatenation) | COMMENT |
| 18 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | picard/config.py | 469 | Register an option in this config section. The option type is determined by the type of the default value. | STRING |
| HIGH | picard/config.py | 637 | Register an option in this config section. Extends the base class method with profile support. Args: | STRING |
| HIGH | picard/log.py | 279 | Log a debug message only if the specified debug option is enabled. Can also be used as a guard that returns a calla | STRING |
| HIGH | picard/util/emptydir.py | 47 | Checks if a directory is considered empty. Args: path: Path to directory to check. ignored_fil | STRING |
| HIGH | picard/util/checkupdate.py | 55 | Checks if an update is available. Compares the version number of the currently running instance of Picard | STRING |
| HIGH | picard/util/__init__.py | 947 | Parses a string and interprets it as a matching pattern. - If pattern is of the form /pattern/flags it is interpret | STRING |
| HIGH | picard/util/__init__.py | 1194 | Converts text to title case following word boundary rules. Capitalizes the first character of each word in the inpu | STRING |
| HIGH | picard/profiles/importer.py | 109 | Import a profile from a TOML string. Args: config: The application Config object. toml_string: The | STRING |
| HIGH | picard/plugin3/api_impl.py | 225 | Log a debug message only if the specified debug option is enabled. Can also be used as a guard that returns a c | STRING |
| HIGH | picard/plugin3/validation.py | 47 | Read MANIFEST.toml from path and validate it. Args: path: Directory path containing MANIFEST.toml | STRING |
| HIGH | picard/plugin3/validation.py | 75 | Get plugin UUID, raising PluginNoUUIDError if not available. Args: plugin: Plugin object R | STRING |
| HIGH | picard/git/ops.py | 60 | Check if git working directory has uncommitted changes. Args: path: Path to git repository | STRING |
| HIGH | picard/git/ops.py | 107 | Validate that a ref exists in the repository. Args: url: Git repository URL ref: Git re | STRING |
| HIGH | picard/git/ops.py | 214 | Switch plugin to a different git ref (branch/tag/commit). Args: plugin: Plugin to switch | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | picard/formats/apev2.py | 0 | remove the tags from the file that were deleted in the ui | STRING |
| HIGH | picard/formats/vorbis.py | 0 | remove the tags from the file that were deleted in the ui | STRING |
| HIGH | picard/formats/mp4.py | 0 | remove the tags from the file that were deleted in the ui | STRING |
| HIGH | picard/formats/asf.py | 0 | remove the tags from the file that were deleted in the ui | STRING |
| HIGH | test/script_text_edit/test_script_completer.py | 0 | $set(_leading_underscore, "value") $set(trailing_underscore_, "value") $set(_both_underscores_, "value") $set(multiple__ | STRING |
| HIGH | test/script_text_edit/test_regex_fallback.py | 0 | $set(_leading_underscore, "value") $set(trailing_underscore_, "value") $set(_both_underscores_, "value") $set(multiple__ | STRING |
| HIGH | test/script_text_edit/test_ast_parsing.py | 0 | $set(_leading_underscore, "value") $set(trailing_underscore_, "value") $set(_both_underscores_, "value") $set(multiple__ | STRING |
| HIGH | test/script_text_edit/test_script_completer.py | 0 | test regex behavior with %variable% syntax in $set statements. | STRING |
| HIGH | test/script_text_edit/test_ast_parsing.py | 0 | test regex behavior with %variable% syntax in $set statements. | STRING |
| HIGH | test/script_text_edit/test_regex_fallback.py | 0 | test regex behavior with %variable% syntax in $set statements. | STRING |
| HIGH | test/script_text_edit/test_script_completer.py | 0 | $set(%variable%, "value") $set(%artist%, "value") $set(regular_var, "value") | STRING |
| HIGH | test/script_text_edit/test_regex_fallback.py | 0 | $set(%variable%, "value") $set(%artist%, "value") $set(regular_var, "value") | STRING |
| HIGH | test/script_text_edit/test_ast_parsing.py | 0 | $set(%variable%, "value") $set(%artist%, "value") $set(regular_var, "value") | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | picard/log.py | 77 | def set_verbosity(level: int) -> None: | CODE |
| LOW | picard/isrcsubmit.py | 107 | def _update_entry(self, file, recording_id: str, new_isrcs: set[NormalizedISRC]) -> None: | CODE |
| LOW | picard/ui/moveable_list_view.py | 62 | def update_buttons(self) -> None: | CODE |
| LOW | picard/ui/playground.py | 86 | def set_description(self, description: str, match_meaning: str, skip_meaning: str) -> None: | CODE |
| LOW | picard/ui/playground.py | 110 | def set_error(self, message: str) -> None: | CODE |
| LOW⚡ | picard/ui/theme.py | 204 | def set_color_scheme(color_scheme: QtCore.Qt.ColorScheme) -> None: | CODE |
| LOW | picard/ui/__init__.py | 286 | def set_window_title(self, title: str) -> None: | CODE |
| LOW | picard/ui/setupwizard.py | 123 | def set_checked(self, checked: bool) -> None: | STRING |
| LOW | picard/ui/setupwizard.py | 260 | def _update_move_to_state(self, checked: bool) -> None: | CODE |
| LOW | picard/ui/options/dialog.py | 1246 | def _update_profile_markers(self, pkey: str) -> None: | CODE |
| LOW | picard/ui/mainwindow/__init__.py | 2404 | def _set_profile_enabled(self, profile_id: str, enabled: bool) -> None: | CODE |
| LOW | picard/ui/itemviews/custom_columns/view_selector.py | 68 | def set_selected(self, view_ids: set[str]) -> None: | CODE |
| LOW | picard/ui/itemviews/custom_columns/manager_dialog.py | 633 | def _update_apply(self) -> None: | CODE |
| LOW | picard/ui/itemviews/custom_columns/manager_dialog.py | 644 | def _update_form_actions(self) -> None: | CODE |
| LOW | picard/ui/itemviews/custom_columns/spec_list_model.py | 113 | def set_specs(self, specs: list[CustomColumnSpec]) -> None: | CODE |
| LOW | picard/ui/itemviews/custom_columns/spec_list_model.py | 143 | def update_spec(self, row: int, spec: CustomColumnSpec) -> None: | CODE |
| LOW | picard/ui/itemviews/custom_columns/__init__.py | 59 | __all__ = [ | CODE |
| LOW | …ard/ui/itemviews/custom_columns/column_form_handler.py | 86 | def set_enabled(self, enabled: bool) -> None: | CODE |
| LOW | picard/ui/itemviews/custom_columns/column.py | 226 | def set_header_icon_size(self, width: int, height: int, border: int) -> None: | CODE |
| LOW⚡ | picard/ui/statusindicator/__init__.py | 79 | def set_progress(self, progress: float) -> None: ... | CODE |
| LOW | picard/ui/widgets/preferencelistwidget.py | 62 | def _setup_ui(self) -> None: | CODE |
| LOW | picard/ui/widgets/preferencelistwidget.py | 115 | def set_available_items(self, items: dict[str, str]) -> None: | CODE |
| LOW | picard/ui/widgets/preferencelistwidget.py | 120 | def set_selected_keys(self, keys: list[str]) -> None: | CODE |
| LOW | picard/ui/widgets/preferencelistwidget.py | 146 | def set_excluded_keys(self, keys: set[str]) -> None: | CODE |
| LOW | picard/ui/widgets/preferencelistwidget.py | 238 | def _update_buttons(self) -> None: | CODE |
| LOW | picard/ui/widgets/scripttextedit.py | 726 | def _update_completion_context(self, text_cursor: QTextCursor) -> None: | CODE |
| LOW | picard/formats/__init__.py | 60 | __all__ = [ | CODE |
| LOW | picard/coverart/image.py | 246 | def set_data(self, data: bytes) -> None: | CODE |
| LOW | picard/coverart/image.py | 270 | def set_external_file_data(self, data: bytes) -> None: | CODE |
| LOW⚡ | picard/extension_points/__init__.py | 138 | def set_plugin_uuid(uuid: str, module_name: str) -> None: | CODE |
| LOW | picard/webservice/api_helpers/__init__.py | 29 | __all__ = [ | CODE |
| LOW | picard/i18n/__init__.py | 42 | __all__ = [ | CODE |
| LOW | picard/plugin3/__init__.py | 29 | __all__ = [ | CODE |
| LOW | picard/plugin3/api.py | 48 | __all__ = [ | CODE |
| LOW | picard/plugin3/asyncops/__init__.py | 39 | __all__ = [ | CODE |
| LOW | picard/git/__init__.py | 43 | __all__ = [ | CODE |
| LOW | picard/session/session_loader.py | 358 | def set_expansions() -> None: | CODE |
| LOW | test/test_coverart_details_option.py | 132 | def update_display(self, force: bool = False) -> None: | CODE |
| LOW | test/ui/test_coverartbox_info.py | 73 | def set_metadata(self, metadata: object) -> None: # noqa: N802 (not Qt, but keep style) | CODE |
| LOW | test/ui/test_coverartbox_info.py | 76 | def set_marked_for_removal(self, marked: bool) -> None: | CODE |
| LOW | test/ui/test_coverartbox_info.py | 131 | def update_display(self, force: bool = False) -> None: | CODE |
| LOW | test/ui/test_coverartbox_info.py | 315 | def _setup_new_vs_original(box: CoverArtBox) -> None: | CODE |
| LOW | test/ui/test_coverart_removal_display.py | 175 | def set_metadata(self, metadata) -> None: | CODE |
| LOW | test/ui/test_coverart_removal_display.py | 181 | def set_marked_for_removal(self, marked_for_removal) -> None: | CODE |
| LOW | test/ui/test_coverart_removal_display.py | 204 | def update_display(self, force: bool = False) -> None: | CODE |
| LOW | test/script_text_edit/test_scripttextedit_highlight.py | 81 | def set_items(self, items: Iterable[str]) -> None: | CODE |
| LOW | test/script_text_edit/test_scripttextedit_highlight.py | 148 | def set_highlighted(self, text: str) -> None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | test/script_text_edit/test_context_aware_completion.py | 551 | # Step 1: Function name context | COMMENT |
| LOW⚡ | test/script_text_edit/test_context_aware_completion.py | 556 | # Step 2: Tag name argument context | COMMENT |
| LOW⚡ | test/script_text_edit/test_context_aware_completion.py | 568 | # Step 1: Variable context | COMMENT |
| LOW⚡ | test/script_text_edit/test_context_aware_completion.py | 574 | # Step 2: Partial variable context | COMMENT |
| LOW⚡ | test/script_text_edit/test_context_detector.py | 342 | # Step 1: Function name context | COMMENT |
| LOW⚡ | test/script_text_edit/test_context_detector.py | 345 | # Step 2: Tag name argument context | COMMENT |
| LOW⚡ | test/script_text_edit/test_context_detector.py | 350 | # Step 1: Variable context | COMMENT |
| LOW⚡ | test/script_text_edit/test_context_detector.py | 353 | # Step 2: Partial variable context | COMMENT |
| LOW | docs/PLUGINSV3/MIGRATION.md | 120 | ### Step 1: Run Migration Tool | COMMENT |
| LOW | docs/PLUGINSV3/MIGRATION.md | 144 | ### Step 2: Create MANIFEST.toml | COMMENT |
| LOW | docs/PLUGINSV3/MIGRATION.md | 185 | ### Step 2: Review Generated Code | COMMENT |
| LOW | docs/PLUGINSV3/MIGRATION.md | 195 | ### Step 3: Create Git Repository | COMMENT |
| LOW | docs/PLUGINSV3/MIGRATION.md | 345 | ### Step 1: Create MANIFEST.toml | COMMENT |
| LOW | docs/PLUGINSV3/MIGRATION.md | 357 | ### Step 5: Update Qt Imports | COMMENT |
| LOW | docs/PLUGINSV3/MIGRATION.md | 378 | ### Step 6: Add Translations (Work in Progress) | COMMENT |
| LOW | docs/PLUGINSV3/MIGRATION.md | 382 | ### Step 7: Update Configuration | COMMENT |
| LOW | scripts/eval_matching/SYNTHETIC_SCENARIOS.md | 51 | ### Step 1: Define the releases | COMMENT |
| LOW | scripts/eval_matching/SYNTHETIC_SCENARIOS.md | 97 | ### Step 2: Define the recordings (candidates) | COMMENT |
| LOW | scripts/eval_matching/SYNTHETIC_SCENARIOS.md | 143 | ### Step 3: Define the scenarios (test cases) | COMMENT |
| LOW | scripts/eval_matching/SYNTHETIC_SCENARIOS.md | 173 | ### Step 4: Run and verify | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | picard/ui/tablebaseddialog.py | 120 | # We need to check if the visual index is valid before converting | COMMENT |
| LOW | picard/ui/widgets/context_detector.py | 123 | # If it ends with %%, we need to check if it's a literal %% or a new variable | COMMENT |
| LOW | picard/util/filenaming.py | 83 | # before returning, we need to check if we didn't cut in the middle | COMMENT |
| LOW⚡ | test/script_text_edit/test_context_aware_completion.py | 551 | # Step 1: Function name context | COMMENT |
| LOW⚡ | test/script_text_edit/test_context_aware_completion.py | 556 | # Step 2: Tag name argument context | COMMENT |
| LOW⚡ | test/script_text_edit/test_context_aware_completion.py | 568 | # Step 1: Variable context | COMMENT |
| LOW⚡ | test/script_text_edit/test_context_aware_completion.py | 574 | # Step 2: Partial variable context | COMMENT |
| LOW⚡ | test/script_text_edit/test_context_detector.py | 342 | # Step 1: Function name context | COMMENT |
| LOW⚡ | test/script_text_edit/test_context_detector.py | 345 | # Step 2: Tag name argument context | COMMENT |
| LOW⚡ | test/script_text_edit/test_context_detector.py | 350 | # Step 1: Variable context | COMMENT |
| LOW⚡ | test/script_text_edit/test_context_detector.py | 353 | # Step 2: Partial variable context | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | picard/ui/metadatabox/__init__.py | 107 | DiffColors = namedtuple('DiffColors', ('text', 'placeholder', 'removed_bg', 'added_bg')) | CODE |
| LOW | picard/plugin3/init_templates.py | 323 | author: Author string, e.g. "Jane Doe" or "Jane Doe <jane@example.com>" | STRING |
| LOW⚡ | test/plugins3/test_cli.py | 1192 | MockPluginManager(), verb='init', name='Test', target_dir=str(target), author='Jane Doe' | CODE |
| LOW⚡ | test/plugins3/test_cli.py | 1196 | self.assertIn('authors = ["Jane Doe"]', manifest) | CODE |
| LOW⚡ | test/plugins3/test_cli.py | 1206 | self.assertIn('authors = ["Jane Doe"]', manifest) | CODE |
| LOW⚡ | test/plugins3/test_cli.py | 1590 | MockPluginManager(), verb='init', name='Test', target_dir=str(target), author='Jane Doe' | CODE |
| LOW⚡ | test/plugins3/test_cli.py | 1596 | self.assertEqual(author_name, 'Jane Doe') | CODE |
| LOW | test/formats/test_id3_load.py | 203 | frame.email = 'user@example.com' | CODE |
| LOW | test/formats/test_id3_load.py | 206 | config_params = {'rating_user_email': 'user@example.com'} | CODE |
| LOW | test/data/testplugins3/registry.toml | 90 | "John Doe", | CODE |
| LOW | test/data/testplugins3/registry.toml | 109 | "Jane Doe", | CODE |
| LOW | docs/PLUGINSV3/CLI.md | 1148 | picard-cli plugins init "My Cool Plugin" --author "Jane Doe" --category metadata | STRING |
| LOW | docs/PLUGINSV3/MIGRATION.md | 149 | PLUGIN_AUTHOR = "John Doe" | CODE |
| LOW | docs/PLUGINSV3/MIGRATION.md | 163 | authors = ["John Doe"] | CODE |
| LOW | docs/PLUGINSV3/MIGRATION.md | 421 | PLUGIN_AUTHOR = "John Doe" | CODE |
| LOW | docs/PLUGINSV3/MIGRATION.md | 479 | authors = ["John Doe"] | CODE |
| LOW | docs/PLUGINSV3/MANIFEST.md | 81 | | `authors` | array | Plugin author/contributor names | `["John Doe", "Jane Smith"]` | | CODE |
| LOW | docs/PLUGINSV3/MANIFEST.md | 82 | | `maintainers` | array | Plugin maintainer names | `["John Doe"]` | | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | picard/tagger.py | 906 | # We should just return True here, except that seems to | COMMENT |
| LOW | picard/ui/itemviews/__init__.py | 523 | # Delegate columns are handled by delegate, just set size hint | COMMENT |
| MEDIUM | picard/ui/itemviews/match_quality_column.py | 86 | """Get comprehensive match statistics for the given object. | STRING |
| MEDIUM | picard/ui/widgets/plugindetailswidget.py | 208 | # Always enable description button since PluginInfoDialog shows comprehensive info | COMMENT |
| MEDIUM | picard/util/textencoding.py | 59 | # These are non-trivial, and the software to do these is far from comprehensive. | COMMENT |
| MEDIUM | picard/plugin3/plugin.py | 413 | # Use robust reference type detection | COMMENT |
| MEDIUM | picard/plugin3/plugin.py | 201 | """Check if current ref is a tag using robust type detection.""" | STRING |
| MEDIUM | picard/git/ref_utils.py | 19 | """Git reference utilities for robust reference type detection.""" | STRING |
| LOW⚡ | test/plugins3/test_registry.py | 659 | # Should not raise, just return False (not blacklisted) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | picard/ui/itemviews/custom_columns/factory.py | 275 | CODE | |
| LOW | picard/ui/itemviews/custom_columns/column.py | 114 | CODE | |
| LOW | picard/coverart/image.py | 466 | CODE | |
| LOW | picard/script/serializer.py | 446 | CODE | |
| LOW | picard/tags/tagvar.py | 108 | CODE | |
| LOW | picard/webservice/__init__.py | 160 | CODE | |
| LOW | picard/browser/addrelease.py | 206 | CODE | |
| LOW | picard/plugin3/api_impl.py | 788 | CODE | |
| LOW | picard/plugin3/api_impl.py | 852 | CODE | |
| LOW | picard/plugin3/init_templates.py | 70 | CODE | |
| LOW | picard/plugin3/manager/__init__.py | 292 | CODE | |
| LOW | test/plugins3/test_cli.py | 1399 | CODE | |
| LOW | test/plugins3/helpers.py | 374 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | picard/remotecommands/handlers.py | 303 | for x in self.tagger.window.log_dialog.log_tail.contents(): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | picard/config_upgrade_hooks.py | 639 | # We need to make sure to load all keys in the config file, not just | COMMENT |
| LOW | picard/util/filenaming.py | 286 | # and don't forget to cache | STRING |
| LOW | picard/util/filenaming.py | 286 | # and don't forget to cache | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | picard/util/thread.py | 123 | def run_task( | CODE |
| LOW | test/plugins3/test_migration.py | 171 | def my_function(): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | picard/profiles/exporter.py | 241 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/tools/generate_match_icons.py | 26 | # Usage: | COMMENT |