music library manager and MusicBrainz tagger
This report presents the forensic synthetic code analysis of beetbox/beets, a Python project with 15,384 GitHub stars. SynthScan v2.0 examined 111,070 lines of code across 356 source files, recording 1383 pattern matches distributed across 16 syntactic categories. The overall adjusted score of 13.6 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).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 1383 distinct pattern matches across 16 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | test/test_library.py | 50 | def test_load_restores_data_from_db(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 56 | def test_load_clears_dirty_flags(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 64 | def test_store_changes_database_value(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 71 | def test_store_only_writes_dirty_fields(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 78 | def test_store_clears_dirty_flags(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 83 | def test_store_album_cascades_flex_deletes(self): | CODE |
| LOW⚡ | test/test_library.py | 196 | def test_directory_works_with_trailing_slash(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 201 | def test_directory_works_without_trailing_slash(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 206 | def test_destination_substitutes_metadata_values(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 214 | def test_destination_preserves_extension(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 220 | def test_lower_case_extension(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 226 | def test_destination_pads_some_indices(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 238 | def test_destination_pads_date_values(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 246 | def test_destination_escapes_slashes(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 254 | def test_destination_escapes_leading_dot(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 261 | def test_destination_preserves_legitimate_slashes(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 268 | def test_destination_long_names_truncated(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 274 | def test_destination_long_names_keep_extension(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 280 | def test_distination_windows_removes_both_separators(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 335 | def test_multi_value_string_query_path(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 344 | def test_multi_value_match_query_path(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 353 | def test_multi_value_string_query_path_no_substring_match(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 362 | def test_albumtype_query_path(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 386 | def test_get_formatted_does_not_replace_separators(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 393 | def test_get_formatted_pads_with_zero(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 399 | def test_get_formatted_uses_kbps_bitrate(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 405 | def test_get_formatted_uses_khz_samplerate(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 411 | def test_get_formatted_datetime(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 423 | def test_artist_falls_back_to_albumartist(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 430 | def test_albumartist_falls_back_to_artist(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 437 | def test_artist_overrides_albumartist(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 444 | def test_albumartist_overrides_artist(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 451 | def test_unicode_extension_in_fragment(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 458 | def test_asciify_character_expanding_to_slash(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 465 | def test_destination_with_replacements(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 474 | def test_destination_with_empty_component(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 503 | def test_album_field_in_template(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 513 | def test_formatted_item_value(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 522 | def test_get_method_with_default(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 526 | def test_get_method_with_specified_default(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 554 | def test_artist_falls_back_to_albumartist(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 559 | def test_albumartist_falls_back_to_artist(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 564 | def test_both_artist_and_albumartist_empty(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 655 | def test_nonexistent_function(self, item): | CODE |
| LOW⚡ | test/test_library.py | 659 | def test_if_def_field_return_self(self, item): | CODE |
| LOW⚡ | test/test_library.py | 664 | def test_if_def_field_not_defined(self, item): | CODE |
| LOW⚡ | test/test_library.py | 717 | def test_unique_expands_to_disambiguating_year(self, items): | CODE |
| LOW⚡ | test/test_library.py | 721 | def test_unique_with_default_arguments_uses_albumtype(self, items): | CODE |
| LOW⚡ | test/test_library.py | 729 | def test_unique_expands_to_nothing_for_distinct_albums(self, items): | CODE |
| LOW⚡ | test/test_library.py | 737 | def test_use_fallback_numbers_when_identical(self, items): | CODE |
| LOW⚡ | test/test_library.py | 746 | def test_unique_falls_back_to_second_distinguishing_field(self, items): | CODE |
| LOW⚡ | test/test_library.py | 812 | def test_sunique_expands_to_disambiguating_year(self, items): | CODE |
| LOW⚡ | test/test_library.py | 816 | def test_sunique_with_default_arguments_uses_trackdisambig(self, items): | CODE |
| LOW⚡ | test/test_library.py | 824 | def test_sunique_expands_to_nothing_for_distinct_singletons(self, items): | CODE |
| LOW⚡ | test/test_library.py | 831 | def test_sunique_does_not_match_album(self, items): | CODE |
| LOW⚡ | test/test_library.py | 836 | def test_sunique_use_fallback_numbers_when_identical(self, items): | CODE |
| LOW⚡ | test/test_library.py | 844 | def test_sunique_falls_back_to_second_distinguishing_field(self, items): | CODE |
| LOW⚡ | test/test_library.py | 914 | def test_undefined_value_not_substituted(self, item): | CODE |
| LOW⚡ | test/test_library.py | 917 | def test_plugin_value_not_substituted(self, item): | CODE |
| LOW⚡ | test/test_library.py | 921 | def test_plugin_value_overrides_attribute(self, item): | CODE |
| 933 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/test_library.py | 3 | CODE | |
| LOW | test/test_importer.py | 3 | CODE | |
| LOW | test/plugins/test_albumtypes.py | 3 | CODE | |
| LOW | test/plugins/conftest.py | 1 | CODE | |
| LOW | test/plugins/test_musicbrainz.py | 3 | CODE | |
| LOW | test/plugins/test_hook.py | 1 | CODE | |
| LOW | test/plugins/test_convert.py | 1 | CODE | |
| LOW | test/plugins/test_mbpseudo.py | 1 | CODE | |
| LOW | test/plugins/test_tidal.py | 3 | CODE | |
| LOW | test/plugins/test_embedart.py | 1 | CODE | |
| LOW | test/plugins/lyrics_pages.py | 1 | CODE | |
| LOW | test/plugins/test_aura.py | 1 | CODE | |
| LOW | test/plugins/test_smartplaylist.py | 2 | CODE | |
| LOW | test/plugins/test_ftintitle.py | 3 | CODE | |
| LOW | test/plugins/test_lyrics.py | 3 | CODE | |
| LOW | test/plugins/test_art.py | 3 | CODE | |
| LOW | beetsplug/replaygain.py | 1 | CODE | |
| LOW | beetsplug/missing.py | 3 | CODE | |
| LOW | beetsplug/titlecase.py | 5 | CODE | |
| LOW | beetsplug/_typing.py | 1 | CODE | |
| LOW | beetsplug/autobpm.py | 3 | CODE | |
| LOW | beetsplug/fetchart.py | 3 | CODE | |
| LOW | beetsplug/mbcollection.py | 1 | CODE | |
| LOW | beetsplug/convert.py | 3 | CODE | |
| LOW | beetsplug/musicbrainz.py | 3 | CODE | |
| LOW | beetsplug/hook.py | 3 | CODE | |
| LOW | beetsplug/lyrics.py | 3 | CODE | |
| LOW | beetsplug/ftintitle.py | 3 | CODE | |
| LOW | beetsplug/edit.py | 3 | CODE | |
| LOW | beetsplug/random.py | 1 | CODE | |
| LOW | beetsplug/lastimport.py | 1 | CODE | |
| LOW | beetsplug/aura.py | 3 | CODE | |
| LOW | beetsplug/deezer.py | 3 | CODE | |
| LOW | beetsplug/listenbrainz.py | 3 | CODE | |
| LOW | beetsplug/playlist.py | 1 | CODE | |
| LOW | beetsplug/parentwork.py | 5 | CODE | |
| LOW | beetsplug/mbpseudo.py | 3 | CODE | |
| LOW | beetsplug/albumtypes.py | 3 | CODE | |
| LOW | beetsplug/beatport.py | 3 | CODE | |
| LOW | beetsplug/chroma.py | 5 | CODE | |
| LOW | beetsplug/spotify.py | 6 | CODE | |
| LOW | beetsplug/smartplaylist.py | 3 | CODE | |
| LOW | beetsplug/replace.py | 1 | CODE | |
| LOW | beetsplug/_utils/musicbrainz.py | 11 | CODE | |
| LOW | beetsplug/_utils/__init__.py | 1 | CODE | |
| LOW | beetsplug/_utils/__init__.py | 1 | CODE | |
| LOW | beetsplug/_utils/playcount.py | 1 | CODE | |
| LOW | beetsplug/_utils/vfs.py | 5 | CODE | |
| LOW | beetsplug/_utils/requests.py | 1 | CODE | |
| LOW | beetsplug/lastgenre/client.py | 3 | CODE | |
| LOW | beetsplug/lastgenre/__init__.py | 10 | CODE | |
| LOW | beetsplug/lastgenre/utils.py | 3 | CODE | |
| LOW | beetsplug/metasync/__init__.py | 3 | CODE | |
| LOW | beetsplug/discogs/__init__.py | 5 | CODE | |
| LOW | beetsplug/discogs/types.py | 1 | CODE | |
| LOW | beetsplug/discogs/states.py | 3 | CODE | |
| LOW | beetsplug/tidal/api_types.py | 1 | CODE | |
| LOW | beetsplug/tidal/session.py | 1 | CODE | |
| LOW | beetsplug/tidal/__init__.py | 1 | CODE | |
| LOW | beetsplug/tidal/api.py | 1 | CODE | |
| 100 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/util/test_functemplate.py | 8 | CODE | |
| LOW | test/plugins/test_bpd.py | 124 | CODE | |
| LOW | test/plugins/test_bpd.py | 254 | CODE | |
| LOW | test/plugins/test_lastgenre.py | 764 | CODE | |
| LOW | beetsplug/duplicates.py | 333 | CODE | |
| LOW | beetsplug/replaygain.py | 845 | CODE | |
| LOW | beetsplug/replaygain.py | 848 | CODE | |
| LOW | beetsplug/titlecase.py | 170 | CODE | |
| LOW | beetsplug/advancedrewrite.py | 51 | CODE | |
| LOW | beetsplug/acousticbrainz.py | 149 | CODE | |
| LOW | beetsplug/acousticbrainz.py | 250 | CODE | |
| LOW | beetsplug/fetchart.py | 91 | CODE | |
| LOW | beetsplug/fetchart.py | 252 | CODE | |
| LOW | beetsplug/fetchart.py | 418 | CODE | |
| LOW | beetsplug/fetchart.py | 519 | CODE | |
| LOW | beetsplug/fetchart.py | 905 | CODE | |
| LOW | beetsplug/fetchart.py | 1042 | CODE | |
| LOW | beetsplug/fetchart.py | 1146 | CODE | |
| LOW | beetsplug/fetchart.py | 1311 | CODE | |
| LOW | beetsplug/fetchart.py | 1559 | CODE | |
| LOW | beetsplug/fetchart.py | 1603 | CODE | |
| LOW | beetsplug/fetchart.py | 530 | CODE | |
| LOW | beetsplug/convert.py | 402 | CODE | |
| LOW | beetsplug/convert.py | 568 | CODE | |
| LOW | beetsplug/musicbrainz.py | 714 | CODE | |
| LOW | beetsplug/lyrics.py | 1148 | CODE | |
| LOW | beetsplug/mbsync.py | 85 | CODE | |
| LOW | beetsplug/importfeeds.py | 86 | CODE | |
| LOW | beetsplug/edit.py | 385 | CODE | |
| LOW | beetsplug/edit.py | 418 | CODE | |
| LOW | beetsplug/types.py | 16 | CODE | |
| LOW | beetsplug/zero.py | 19 | CODE | |
| LOW | beetsplug/zero.py | 82 | CODE | |
| LOW | beetsplug/bpsync.py | 118 | CODE | |
| LOW | beetsplug/aura.py | 242 | CODE | |
| LOW | beetsplug/listenbrainz.py | 191 | CODE | |
| LOW | beetsplug/playlist.py | 147 | CODE | |
| LOW | beetsplug/subsonicplaylist.py | 17 | CODE | |
| LOW | beetsplug/subsonicplaylist.py | 92 | CODE | |
| LOW | beetsplug/subsonicplaylist.py | 93 | CODE | |
| LOW | beetsplug/ipfs.py | 266 | CODE | |
| LOW | beetsplug/badfiles.py | 183 | CODE | |
| LOW | beetsplug/importsource.py | 57 | CODE | |
| LOW | beetsplug/mbpseudo.py | 189 | CODE | |
| LOW | beetsplug/chroma.py | 425 | CODE | |
| LOW | beetsplug/embedart.py | 76 | CODE | |
| LOW | beetsplug/embedart.py | 101 | CODE | |
| LOW | beetsplug/spotify.py | 807 | CODE | |
| LOW | beetsplug/the.py | 19 | CODE | |
| LOW | beetsplug/bpd/gstplayer.py | 214 | CODE | |
| LOW | beetsplug/bpd/__init__.py | 371 | CODE | |
| LOW | beetsplug/bpd/__init__.py | 822 | CODE | |
| LOW | beetsplug/bpd/__init__.py | 1372 | CODE | |
| LOW | beetsplug/lastgenre/__init__.py | 381 | CODE | |
| LOW | beetsplug/discogs/__init__.py | 469 | CODE | |
| LOW | beetsplug/discogs/__init__.py | 549 | CODE | |
| LOW | beetsplug/discogs/__init__.py | 594 | CODE | |
| LOW | beets/ui/__init__.py | 176 | CODE | |
| LOW | beets/ui/__init__.py | 363 | CODE | |
| LOW | beets/ui/__init__.py | 476 | CODE | |
| 33 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | test/plugins/test_web.py | 329 | # Create a temporary item | COMMENT |
| MEDIUM | test/plugins/test_web.py | 354 | # Create an item with a file | COMMENT |
| MEDIUM | test/plugins/test_web.py | 382 | # Create an item with a file | COMMENT |
| MEDIUM | test/plugins/test_web.py | 409 | # Create a temporary item | COMMENT |
| MEDIUM | test/plugins/test_web.py | 446 | # Create a temporary item | COMMENT |
| MEDIUM | test/plugins/test_web.py | 473 | # Create a temporary item | COMMENT |
| MEDIUM | test/plugins/test_web.py | 500 | # Create a temporary album | COMMENT |
| MEDIUM | test/plugins/test_web.py | 525 | # Create a temporary album | COMMENT |
| MEDIUM | test/plugins/test_web.py | 562 | # Create a temporary album | COMMENT |
| MEDIUM | test/plugins/test_web.py | 589 | # Create a temporary album | COMMENT |
| MEDIUM | test/plugins/test_web.py | 620 | # Create a temporary item | COMMENT |
| MEDIUM | test/plugins/test_web.py | 662 | # Create a temporary item | COMMENT |
| MEDIUM | test/plugins/test_bpd.py | 265 | # Create a config file: | COMMENT |
| MEDIUM | test/plugins/test_lastgenre.py | 637 | # Initialize plugin instance and item | COMMENT |
| MEDIUM | test/plugins/test_spotify.py | 206 | # Create a mock item with Japanese metadata | COMMENT |
| MEDIUM | beetsplug/convert.py | 716 | # Create a temporary file for the conversion. | COMMENT |
| MEDIUM | beetsplug/bareasc.py | 2 | # This module is adapted from Fuzzy in accordance to the licence of | COMMENT |
| MEDIUM | beetsplug/kodiupdate.py | 26 | # Create the payload. Id seems to be mandatory. | COMMENT |
| MEDIUM | beets/ui/commands/__init__.py | 1 | """This module provides the default commands for beets' command-line | STRING |
| MEDIUM | beets/importer/stages.py | 191 | # Create a new task for tagging the current items | COMMENT |
| MEDIUM | beets/util/color.py | 161 | # Define a regular expression to match ANSI codes. | COMMENT |
| MEDIUM | beets/util/functemplate.py | 1 | """This module implements a string formatter based on the standard PEP | STRING |
| MEDIUM | beets/util/functemplate.py | 176 | # Create a subexpression that joins the result components of | COMMENT |
| MEDIUM | beets/library/library.py | 107 | # Create the album structure using metadata from the first item. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | test/util/test_lyrics.py | 0 | [00:00.00] some synced lyrics / quelques paroles synchronisées [00:00.50] [00:01.00] some more synced lyrics / quelques | STRING |
| HIGH | test/library/test_migrations.py | 0 | [00:00.00] some synced lyrics / quelques paroles synchronisées [00:00.50] [00:01.00] some more synced lyrics / quelques | STRING |
| HIGH | test/plugins/test_lyrics.py | 0 | [00:00.00] some synced lyrics / quelques paroles synchronisées [00:00.50] [00:01.00] some more synced lyrics / quelques | STRING |
| HIGH | beetsplug/plexupdate.py | 0 | listens for beets db change and register the update for the end. | STRING |
| HIGH | beetsplug/kodiupdate.py | 0 | listens for beets db change and register the update for the end. | STRING |
| HIGH | beetsplug/sonosupdate.py | 0 | listens for beets db change and register the update for the end. | STRING |
| HIGH | beetsplug/embyupdate.py | 0 | listens for beets db change and register the update for the end. | STRING |
| HIGH | beetsplug/beatport.py | 0 | get the path to the json file for storing the oauth token. | STRING |
| HIGH | beetsplug/spotify.py | 0 | get the path to the json file for storing the oauth token. | STRING |
| HIGH | beetsplug/discogs/__init__.py | 0 | get the path to the json file for storing the oauth token. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/test_logging.py | 256 | except Exception as e: | CODE |
| LOW | test/test_logging.py | 266 | except Exception as e: | CODE |
| LOW | test/test_logging.py | 311 | except Exception: | CODE |
| MEDIUM | test/test_logging.py | 249 | def listener1(self): | CODE |
| MEDIUM | test/test_logging.py | 259 | def listener2(self): | CODE |
| LOW | beetsplug/duplicates.py | 228 | except Exception: | CODE |
| LOW | beetsplug/titlecase.py | 243 | except Exception as e: | CODE |
| LOW | beetsplug/autobpm.py | 98 | except Exception as exc: | CODE |
| LOW | beetsplug/autobpm.py | 105 | except Exception as exc: | CODE |
| LOW | beetsplug/deezer.py | 257 | except Exception as e: | CODE |
| LOW | beetsplug/scrub.py | 76 | except Exception: | CODE |
| LOW | beetsplug/subsonicupdate.py | 140 | except Exception as error: | CODE |
| LOW | beetsplug/beatport.py | 193 | except Exception as e: | CODE |
| LOW | beetsplug/embedart.py | 142 | except Exception as e: | CODE |
| LOW | beetsplug/thumbnails.py | 173 | except Exception: | CODE |
| LOW | beetsplug/inline.py | 103 | except Exception as exc: | CODE |
| LOW | beetsplug/inline.py | 115 | except Exception as exc: | CODE |
| LOW | beetsplug/replace.py | 113 | except Exception as e: | CODE |
| LOW | beetsplug/replace.py | 122 | except Exception as e: | CODE |
| MEDIUM | beetsplug/bpd/gstplayer.py | 105 | print(f"Error: {err}") | CODE |
| LOW | beetsplug/bpd/__init__.py | 918 | except Exception: | CODE |
| LOW | beetsplug/bpd/__init__.py | 1041 | except Exception: | CODE |
| LOW | beetsplug/lastgenre/client.py | 76 | except Exception as exc: | CODE |
| LOW | beetsplug/metasync/itunes.py | 72 | except Exception: | CODE |
| LOW | beetsplug/discogs/__init__.py | 475 | except Exception as exc: | CODE |
| LOW | beets/plugins.py | 422 | except Exception as exc: | CODE |
| LOW | beets/plugins.py | 440 | except Exception: | CODE |
| LOW | beets/metadata_plugins.py | 70 | except Exception as e: | CODE |
| LOW | beets/metadata_plugins.py | 421 | except Exception as e: | CODE |
| MEDIUM | beets/metadata_plugins.py | 191 | def data_source_mismatch_penalty(self) -> float: | CODE |
| LOW | beets/importer/tasks.py | 1119 | except Exception as exc: | CODE |
| LOW | beets/importer/state.py | 80 | except Exception as exc: | CODE |
| MEDIUM | beets/importer/state.py | 73 | def _open(self) -> None: | CODE |
| LOW | beets/util/__init__.py | 632 | except Exception as exc: | CODE |
| LOW | beets/util/functemplate.py | 158 | except Exception as exc: | CODE |
| LOW | beets/util/functemplate.py | 526 | except Exception: # Handle any exceptions thrown by compiled version. | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/plugins/test_web.py | 763 | # Check if any user data fields are using non-escaping <%= %> | COMMENT |
| LOW | test/plugins/test_replaygain.py | 93 | # Check if required plugins can be loaded by instantiating a | COMMENT |
| LOW | beetsplug/titlecase.py | 212 | # Check if A-Z is all uppercase or all lowercase | COMMENT |
| LOW | beetsplug/play.py | 154 | # Check if the selection exceeds configured threshold. If True, | COMMENT |
| LOW | beetsplug/ipfs.py | 148 | # Check if query is a hash | COMMENT |
| LOW | beetsplug/absubmit.py | 158 | # Close the file, so the extractor can overwrite it. | COMMENT |
| LOW | beetsplug/spotify.py | 271 | # Check if this is the audio features endpoint | COMMENT |
| LOW | beetsplug/embyupdate.py | 171 | # Check if at least a apikey or password is given. | COMMENT |
| LOW | beets/importer/tasks.py | 1135 | # Check if the file has an extension, | COMMENT |
| LOW | beets/util/artresizer.py | 652 | # Check if a local backend is available, and store an instance of the | COMMENT |
| LOW | beets/util/lyrics.py | 56 | # Set seed to 0 for deterministic results | COMMENT |
| LOW | beets/library/models.py | 941 | # Open the file. | COMMENT |
| LOW | beets/autotag/match.py | 65 | # Assign items to tracks | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | beetsplug/web/static/jquery.js | 9255 | // AMD modules. A named AMD is safest and most robust way to register. | COMMENT |
| LOW | beetsplug/tidal/__init__.py | 120 | # We just return early here as a lookup via isrc should | COMMENT |
| LOW | beetsplug/tidal/__init__.py | 143 | # We just return early here as a lookup via isrc should | COMMENT |
| MEDIUM | beets/exceptions.py | 2 | """UI exception. Commands should throw this in order to display | STRING |
| MEDIUM | beets/ui/__init__.py | 71 | # test harness, it doesn't have an `encoding` attribute. Just use | COMMENT |
| LOW | beets/importer/tasks.py | 1203 | # and add the current directory. If so, just add the directory | COMMENT |
| MEDIUM | beets/test/helper.py | 458 | # A test harness for all beets tests. | COMMENT |
| LOW | beets/util/__init__.py | 1085 | # Therefore, we just use `Any` here, which is not ideal, but works. | COMMENT |
| LOW | beets/util/functemplate.py | 347 | # Start of a group has no meaning hear; just pass | COMMENT |
| MEDIUM | beets/util/pipeline.py | 1 | """Simple but robust implementation of generator/coroutine-based | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | beetsplug/mbcollection.py | 185 | def update_collection(self, lib: Library, opts, args) -> None: | CODE |
| LOW | beetsplug/smartplaylist.py | 179 | def update_cmd(self, lib: Library, opts: Any, args: list[str]) -> None: | CODE |
| LOW | beetsplug/smartplaylist.py | 371 | def update_playlists(self, lib: Library) -> None: | CODE |
| LOW | beetsplug/_utils/__init__.py | 3 | __all__ = ["art", "vfs"] | CODE |
| LOW | beets/logging.py | 45 | __all__ = [ | CODE |
| LOW | beets/context.py | 13 | def set_music_dir(value: bytes) -> None: | CODE |
| LOW | beets/ui/commands/version.py | 23 | __all__ = ["version_cmd"] | CODE |
| LOW | beets/ui/commands/__init__.py | 53 | __all__ = ["default_commands"] | CODE |
| LOW | beets/importer/tasks.py | 158 | def set_choice(self, choice: Action | AlbumMatch | TrackMatch) -> None: | CODE |
| LOW | beets/importer/tasks.py | 275 | def set_fields(self, lib: library.Library) -> None: | CODE |
| LOW | beets/importer/tasks.py | 751 | def set_fields(self, lib: library.Library) -> None: | CODE |
| LOW | beets/importer/tasks.py | 804 | def set_choice(self, choice: Action | AlbumMatch | TrackMatch) -> None: | CODE |
| LOW | beets/importer/session.py | 91 | def set_config(self, config: confuse.ConfigView) -> None: | CODE |
| LOW | beets/importer/__init__.py | 16 | __all__ = [ | CODE |
| LOW | beets/library/__init__.py | 19 | __all__ = [ | CODE |
| LOW | beets/autotag/__init__.py | 34 | __all__ = [ | CODE |
| LOW | beets/dbcore/__init__.py | 21 | __all__ = [ | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/ui/test_ui.py | 181 | with open(self.env_config_path, "w") as file: | COMMENT |
| LOW | test/ui/test_ui.py | 201 | # '--config', cli_config_path_2, 'test') | COMMENT |
| LOW | beetsplug/web/static/underscore.js | 1 | // Underscore.js 1.2.2 | COMMENT |
| LOW | beetsplug/web/static/backbone.js | 1 | // Backbone.js 0.5.3 | COMMENT |
| LOW | beetsplug/web/static/backbone.js | 41 | return this; | COMMENT |
| LOW | beetsplug/web/static/backbone.js | 61 | // | COMMENT |
| LOW | beetsplug/web/static/backbone.js | 941 | // *{"event selector": "callback"}* | COMMENT |
| LOW | beetsplug/web/static/backbone.js | 1021 | // ------------- | COMMENT |
| LOW | beetsplug/web/static/jquery.js | 1381 | COMMENT | |
| LOW | beetsplug/web/static/jquery.js | 9241 | COMMENT | |
| LOW | beets/ui/commands/completion_base.sh | 1 | # Completion for the `beet` command | COMMENT |
| LOW | beets/ui/commands/completion_base.sh | 21 | # ---- | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/plugins/test_aura.py | 15 | def helper(session_helper): | CODE |
| LOW | test/plugins/test_lyrics.py | 34 | def helper(module_helper): | CODE |
| LOW | test/plugins/test_random.py | 12 | def helper(class_helper): | CODE |
| LOW | test/dbcore/test_sort.py | 23 | def helper(class_helper): | CODE |
| LOW | test/dbcore/test_query.py | 42 | def helper(class_helper): | CODE |
| LOW | beetsplug/lyrics.py | 221 | def handle_request(self) -> Iterator[None]: | CODE |
| LOW | beets/plugins.py | 344 | def helper(func: TFunc[str]) -> TFunc[str]: | CODE |
| LOW | beets/plugins.py | 358 | def helper(func: TFunc[Item]) -> TFunc[Item]: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | beets/dbcore/db.py | 504 | setattr(self, key, self._type(key).null) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | beets/ui/commands/completion_base.sh | 2 | # ================================= | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | beets/autotag/hooks.py | 207 | CODE | |
| LOW | beets/autotag/hooks.py | 322 | CODE | |
| LOW | beets/autotag/hooks.py | 442 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | beetsplug/missing.py | 249 | # TODO: Implement caching that without breaking other stuff | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/rsrc/lyrics/examplecom/beetssong.txt | 353 | cf_page_artist = 'John Doe'; | CODE |