AI Slop Code Risk Monitor

joke2k/faker

SlopCodeMonitor badge for joke2k/faker Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).

Faker is a Python package that generates fake data for you.

1.6 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for joke2k/faker, a Python project with 19,475 GitHub stars. SynthScan examined 376,800 lines of code across 840 source files, recording 511 pattern matches distributed across 15 syntactic categories. The legacy adjusted pattern signal is 1.6 (Low 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.

1.6
Adjusted Signal
1.6
Raw Pattern Score
100%
Time Factor
2026-10-28
Last Push
19.5K
Stars
Python
Language
376.8K
Lines of Code
840
Files
511
Pattern Hits
2026-10-31
Scan Date
0.01
HC Hit Rate

Risk Review · Payload v1

Use each vector to guide manual verification of the underlying findings.

Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.

Cognitive Ownership Risk 6.7/100 · LOW

Can maintainers explain intent, assumptions, and trade-offs? 473 finding(s).

Hallucinated Dependency & Supply Chain Risk 0.2/100 · LOW

Are imports declared and package/API names verified? 15 finding(s).

Agent Over-Engineering Ratio 6.4/100 · LOW

Are wrappers, guards, and repeated structures necessary? 426 finding(s).

PR Review Velocity Impact 7.4/100 · LOW

Which changes need focused human review? 511 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

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.

Severity Breakdown

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.

CRITICAL 0HIGH 8MEDIUM 14LOW 489

Directory Score Breakdown

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.

Pattern Findings

The scanner identified 511 distinct pattern matches across 15 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.

Hyper-Verbose Identifiers402 hits · 437 pts
SeverityFileLineSnippetContext
LOWgenerate_stubs.py28def get_module_and_member_to_import(cls: Type, locale: Optional[str] = None) -> Tuple[str, str]:CODE
LOWgenerate_stubs.py71def get_member_functions_and_variables(cls: object, include_mangled: bool = False) -> UniqueMemberFunctionsAndVariables:CODE
LOWtests/test_generator.py17 def foo_formatter_with_arguments(self, param="", append=""):CODE
LOW⚡tests/test_generator.py31 def test_get_formatter_returns_correct_formatter(self, generator):CODE
LOW⚡tests/test_generator.py36 def test_get_formatter_with_unknown_formatter(self, generator):CODE
LOW⚡tests/test_generator.py46 def test_format_calls_formatter_on_provider(self, generator):CODE
LOW⚡tests/test_generator.py49 def test_format_passes_arguments_to_formatter(self, generator):CODE
LOW⚡tests/test_generator.py53 def test_add_provider_overrides_old_provider(self, generator):CODE
LOW⚡tests/test_generator.py58 def test_parse_without_formatter_tokens(self, generator):CODE
LOW⚡tests/test_generator.py61 def test_parse_with_valid_formatter_tokens(self, generator):CODE
LOW⚡tests/test_generator.py65 def test_arguments_group_with_values(self, generator):CODE
LOW⚡tests/test_generator.py73 def test_arguments_group_with_dictionaries(self, generator):CODE
LOW⚡tests/test_generator.py79 def test_arguments_group_with_invalid_name(self, generator):CODE
LOW⚡tests/test_generator.py83 def test_arguments_group_with_invalid_argument_type(self, generator):CODE
LOW⚡tests/test_generator.py88 def test_parse_with_valid_formatter_arguments(self, generator):CODE
LOW⚡tests/test_generator.py94 def test_parse_with_unknown_arguments_group(self, generator):CODE
LOW⚡tests/test_generator.py99 def test_parse_with_unknown_formatter_token(self, generator):CODE
LOW⚡tests/test_generator.py104 def test_magic_call_calls_format(self, generator):CODE
LOW⚡tests/test_generator.py107 def test_magic_call_calls_format_with_arguments(self, generator):CODE
LOW⚡tests/test_generator.py117 def test_random_seed_doesnt_seed_system_random(self, mock_system_random, generator):CODE
LOWtests/test_cli_arg_parsing.py9 def test_cli_include_argument_parsing(self):CODE
LOWtests/test_cli_arg_parsing.py24 def test_cli_multiple_includes(self):CODE
LOWtests/test_factory.py29 def test_documentor_skips_unimplemented_formatters(self):CODE
LOWtests/test_factory.py45 def test_print_provider_handles_non_utf_output(self):CODE
LOWtests/test_factory.py72 def test_command_custom_provider(self):CODE
LOWtests/test_factory.py105 def test_cli_seed_with_repeat(self):CODE
LOWtests/test_factory.py162 def test_lang_unlocalized_provider(self):CODE
LOWtests/test_factory.py169 def test_lang_localized_provider(self, with_default=True):CODE
LOWtests/test_factory.py213 def test_lang_localized_provider_without_default(self):CODE
LOWtests/test_factory.py295 def test_prefix_suffix_always_string(self):CODE
LOWtests/test_factory.py303 def test_random_pystr_characters(self):CODE
LOW⚡tests/test_factory.py358 def test_arbitrary_digits_pydecimal(self):CODE
LOW⚡tests/test_factory.py366 def test_pyfloat_empty_range_error(self):CODE
LOW⚡tests/test_factory.py372 def test_pyfloat_same_min_max(self):CODE
LOW⚡tests/test_factory.py378 def test_includes_does_not_mutate_default_providers(self):CODE
LOWtests/test_optional.py13 def test_optional_probability(self) -> None:CODE
LOWtests/test_optional.py25 def test_optional_valid_range(self) -> None:CODE
LOWtests/test_unique_exclude.py12 def test_exclude_types_excludes_bools(self):CODE
LOW⚡tests/test_unique_exclude.py24 def test_exclude_types_still_enforces_other_types(self):CODE
LOW⚡tests/test_unique_exclude.py32 def test_exclude_types_with_limited_values(self):CODE
LOW⚡tests/test_unique_exclude.py40 def test_without_exclusion_bools_exhaust(self):CODE
LOWtests/test_unique_exclude.py53 def test_exclude_types_chainable(self):CODE
LOWtests/test_unique_exclude.py63 def test_exclude_multiple_types(self):CODE
LOWtests/test_unique_exclude.py75 def test_exclude_types_shares_seen_dict(self):CODE
LOWtests/test_unique_exclude.py89 def test_exclude_types_preserves_across_locales(self):CODE
LOW⚡tests/test_proxy.py356 def test_multiple_locale_factory_selection_unsupported_method(self):CODE
LOW⚡tests/test_proxy.py363 def test_weighting_disabled_single_choice(self, mock_choices_fn, mock_choice_fn):CODE
LOW⚡tests/test_proxy.py371 def test_weighting_disabled_with_locales(self, mock_choices_fn, mock_choice_fn):CODE
LOW⚡tests/test_proxy.py403 def test_weighting_disabled_multiple_choices(self, mock_choices_fn, mock_choice_fn):CODE
LOW⚡tests/test_proxy.py413 def test_weighting_enabled_multiple_choices(self, mock_choices_fn, mock_choice_fn):CODE
LOW⚡tests/test_proxy.py421 def test_dir_include_all_providers_attribute_in_list(self):CODE
LOW⚡tests/test_proxy.py484 def test_copy_rebinds_single_locale_proxies(self):CODE
LOW⚡tests/test_proxy.py493 def test_copy_rebinds_multiple_locale_proxies(self):CODE
LOW⚡tests/test_proxy.py503 def test_copy_unique_uses_copied_proxy_state(self):CODE
LOWtests/test_proxy.py44 def test_locale_as_list_invalid_value_type(self):CODE
LOWtests/test_proxy.py50 def test_locale_as_ordereddict(self):CODE
LOWtests/test_proxy.py187 def test_single_locale_proxy_behavior(self):CODE
LOWtests/test_proxy.py210 def test_multiple_locale_proxy_behavior(self):CODE
LOWtests/test_proxy.py227 def test_multiple_locale_caching_behavior(self):CODE
LOWtests/test_proxy.py252 def test_multiple_locale_factory_selection_no_weights(self, mock_factory_distribution, mock_factory_choice):CODE
342 more matches not shown…
Deep Nesting30 hits · 28 pts
SeverityFileLineSnippetContext
LOWgenerate_stubs.py28CODE
LOWgenerate_stubs.py71CODE
LOWgenerate_stubs.py93CODE
LOWtests/test_providers_formats.py15CODE
LOWtests/providers/test_misc.py204CODE
LOWtests/providers/test_misc.py328CODE
LOWtests/providers/test_ssn.py260CODE
LOWtests/providers/test_ssn.py275CODE
LOWtests/providers/test_internet.py274CODE
LOWtests/providers/test_internet.py350CODE
LOWtests/providers/test_person.py231CODE
LOWtests/providers/test_person.py251CODE
LOWtests/providers/test_person.py1905CODE
LOWtests/providers/test_person.py1925CODE
LOWfaker/documentor.py48CODE
LOWfaker/proxy.py31CODE
LOWfaker/providers/misc/__init__.py679CODE
LOWfaker/providers/misc/__init__.py756CODE
LOWfaker/providers/python/__init__.py60CODE
LOWfaker/providers/person/pl_PL/__init__.py4122CODE
LOWfaker/providers/date_time/th_TH/__init__.py86CODE
LOWfaker/providers/date_time/th_TH/__init__.py172CODE
LOWfaker/providers/ssn/en_US/__init__.py205CODE
LOWfaker/providers/ssn/hu_HU/__init__.py14CODE
LOWfaker/providers/ssn/no_NO/__init__.py33CODE
LOWfaker/providers/lorem/__init__.py203CODE
LOWfaker/providers/address/ru_RU/__init__.py1557CODE
LOWfaker/providers/address/ru_RU/__init__.py1578CODE
LOWfaker/providers/company/it_IT/__init__.py349CODE
LOWscripts/check_test_class_order.py62CODE
Over-Commented Block24 hits · 23 pts
SeverityFileLineSnippetContext
LOWtests/providers/test_ssn.py381COMMENT
LOWtests/providers/test_ssn.py421 # even when using the same seed_instance() due to using random.choice() for GG to avoid validCOMMENT
LOWtests/providers/test_ssn.py521 itin = self.fake.ssn(taxpayer_identification_number_type="ITIN")COMMENT
LOWfaker/providers/misc/__init__.py261 # | ver | rand_a (12 bits) |var| rand_b |COMMENT
LOWfaker/providers/file/__init__.py21 # application/ecmascriptCOMMENT
LOWfaker/providers/person/zh_TW/__init__.py1from collections import OrderedDictCOMMENT
LOWfaker/providers/person/zh_TW/__init__.py521 first_names.update(first_names_female)COMMENT
LOWfaker/providers/person/hu_HU/__init__.py1from collections import OrderedDictCOMMENT
LOWfaker/providers/ssn/en_CA/__init__.py41COMMENT
LOWfaker/providers/ssn/hu_HU/__init__.py21 :param gender: gender of the person - "F" for female, M for male.COMMENT
LOWfaker/providers/ssn/hu_HU/__init__.py41 # It also includes information on original citizenship,but this isCOMMENT
LOWfaker/providers/phone_number/en_GB/__init__.py1from .. import Provider as PhoneNumberProviderCOMMENT
LOWfaker/providers/address/en_MS/__init__.py1from collections import OrderedDictCOMMENT
LOWfaker/providers/address/hu_HU/__init__.py41 "Petőfi",COMMENT
LOWdocs/conf.py1# Faker documentation build configuration file.COMMENT
LOWdocs/conf.py41COMMENT
LOWdocs/conf.py61COMMENT
LOWdocs/conf.py81# add_module_names = TrueCOMMENT
LOWdocs/conf.py101html_theme = "default"COMMENT
LOWdocs/conf.py121COMMENT
LOWdocs/conf.py141# If true, SmartyPants will be used to convert quotes and dashes toCOMMENT
LOWdocs/conf.py161# If true, links to the reST sources are added to the pages.COMMENT
LOWdocs/conf.py181COMMENT
LOWdocs/conf.py201# the title page.COMMENT
Empty Error Handlers4 hits · 20 pts
SeverityFileLineSnippetContext
HIGHtests/providers/test_ssn.py1051except ValueError:CODE
HIGHfaker/documentor.py96except IndexError:CODE
HIGHfaker/providers/date_time/__init__.py2217except OSError:CODE
HIGHfaker/decode/__init__.py11except IndexError:CODE
Cross-File Repetition4 hits · 20 pts
SeverityFileLineSnippetContext
HIGHfaker/providers/bank/fil_PH/__init__.py0implement automotive provider for ``tl_ph`` locale. there is no difference from the ``en_ph`` implementation.STRING
HIGHfaker/providers/bank/tl_PH/__init__.py0implement automotive provider for ``tl_ph`` locale. there is no difference from the ``en_ph`` implementation.STRING
HIGHfaker/providers/automotive/fil_PH/__init__.py0implement automotive provider for ``tl_ph`` locale. there is no difference from the ``en_ph`` implementation.STRING
HIGHfaker/providers/automotive/tl_PH/__init__.py0implement automotive provider for ``tl_ph`` locale. there is no difference from the ``en_ph`` implementation.STRING
Self-Referential Comments7 hits · 18 pts
SeverityFileLineSnippetContext
MEDIUMgenerate_stubs.py225body = f"""# This file is auto-generated by generate_stubs.py.CODE
MEDIUMtests/test_proxy.py173 # Create a new random instance for en_US factory with seed valueCOMMENT
MEDIUMtests/providers/test_barcode.py141 # Create a new UPC-A barcode based on the UPC-E barcodeCOMMENT
MEDIUMtests/providers/test_barcode.py152 # Create a new UPC-A barcode based on the UPC-E barcodeCOMMENT
MEDIUMfaker/providers/ssn/en_CA/__init__.py50 # Create an array of 8 elements initialized randomly. The first digitCOMMENT
MEDIUMfaker/providers/address/vi_VN/__init__.py1"""This module provides address-related functionalities for Vietnamese addresses."""STRING
MEDIUMdocs/conf.py3# This file is execfile()d with the current directory set to itsCOMMENT
Decorative Section Separators4 hits · 12 pts
SeverityFileLineSnippetContext
MEDIUMfaker/providers/person/zh_TW/__init__.py43 # =============================================================================COMMENT
MEDIUMfaker/providers/person/zh_TW/__init__.py523 # =============================================================================COMMENT
MEDIUMfaker/providers/ssn/hu_HU/__init__.py35 # ------------------------COMMENT
MEDIUMfaker/providers/ssn/hu_HU/__init__.py57 # -----------COMMENT
AI Slop Vocabulary4 hits · 9 pts
SeverityFileLineSnippetContext
MEDIUMtests/providers/test_internet.py957 # But every level henceforth should return the mocked valueCOMMENT
MEDIUMtests/providers/test_internet.py986 # every level henceforth should return the mocked valueCOMMENT
LOWfaker/providers/misc/__init__.py68 # Generator is unseeded anyway, just use urandomCOMMENT
LOWfaker/providers/date_time/th_TH/__init__.py76 # in that case just use the fmt_charCOMMENT
Fake / Example Data7 hits · 8 pts
SeverityFileLineSnippetContext
LOWCHANGELOG.md2222* Remove some words from ``en_US`` lorem ipsum provider. Thanks @Pomax.COMMENT
LOW⚡tests/providers/test_dynamic.py86 fake_data = [faker.my_provider(use_weighting=True) for _ in range(10_000)]CODE
LOW⚡tests/providers/test_dynamic.py88 for i in fake_data:CODE
LOW⚡tests/providers/test_dynamic.py101 fake_data = [faker.my_provider(use_weighting=False) for _ in range(10_000)]CODE
LOW⚡tests/providers/test_dynamic.py103 for i in fake_data:CODE
LOWfaker/providers/person/__init__.py203 :example: 'John Doe'STRING
LOWfaker/providers/company/__init__.py510 :example: 'Acme Ltd'STRING
Unused Imports8 hits · 8 pts
SeverityFileLineSnippetContext
LOWfaker/proxy.py1CODE
LOWfaker/__init__.py1CODE
LOWfaker/__init__.py2CODE
LOWfaker/__init__.py3CODE
LOWfaker/generator.py9CODE
LOWfaker/typing.py3CODE
LOWfaker/providers/color/color.py22CODE
LOWscripts/check_test_class_order.py14CODE
Modern Structural Boilerplate6 hits · 6 pts
SeverityFileLineSnippetContext
LOWfaker/factory.py13logger = logging.getLogger(__name__)CODE
LOWfaker/generator.py100 def set_formatter(self, name: str, formatter: Callable) -> None:CODE
LOWfaker/generator.py107 def set_arguments(self, group: str, argument: str, value: Optional[Any] = None) -> None:CODE
LOWfaker/typing.py43__all__ = ["OrderedDictType", "CreditCard", "CardType", "Country", "DateParseType", "HueType", "SexLiteral", "SeedType"]CODE
LOWfaker/providers/bank/en_PH/__init__.py5logger = logging.getLogger(__name__)CODE
LOWfaker/sphinx/docstring.py12logger = logging.getLogger(__name__)CODE
Excessive Try-Catch Wrapping5 hits · 6 pts
SeverityFileLineSnippetContext
LOWgenerate_stubs.py103 except Exception as e:CODE
LOWgenerate_stubs.py116 except Exception as e:CODE
LOW⚡tests/providers/test_address.py203 except Exception as e:CODE
LOWfaker/providers/ssn/uk_UA/__init__.py48 except Exception:CODE
LOWfaker/sphinx/docstring.py200 except Exception:CODE
Redundant / Tautological Comments4 hits · 6 pts
SeverityFileLineSnippetContext
LOWtests/providers/test_credit_card.py219 assert re.match(r"[\u4e00-\u9fff]+", card_data[1]) # Check if owner has Chinese charactersCODE
LOWfaker/proxy.py381 # Check if this first value is uniqueCOMMENT
LOWfaker/providers/misc/__init__.py902 # Check if an argument group has been suppliedCOMMENT
LOWfaker/sphinx/validator.py134 # Check if code element type is allowedCOMMENT
Slop Phrases1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMfaker/providers/phone_number/en_GB/__init__.py12 # It's worth noting that the following examples include incorrect notationCOMMENT
AI Structural Patterns1 hit · 1 pts
SeverityFileLineSnippetContext
LOWfaker/providers/ssn/nl_BE/__init__.py28CODE