Repository Analysis

soxoj/maigret

🕵️‍♂️ Collect a dossier on a person by username from 3000+ sites

17.8 Moderate AI signal View on GitHub
17.8
Adjusted Score
17.8
Raw Score
100%
Time Factor
2026-05-30
Last Push
31,032
Stars
Python
Language
26,771
Lines of Code
97
Files
379
Pattern Hits
2026-05-31
Scan Date

Score History

Severity Breakdown

CRITICAL 0HIGH 5MEDIUM 23LOW 351

Pattern Findings

379 matches across 10 categories. Click a row to expand file-level details.

Hyper-Verbose Identifiers231 hits · 258 pts
SeverityFileLineSnippet
LOWmaigret/submit.py120 def generate_additional_fields_dialog(self, engine: MaigretEngine, dialog):
LOWmaigret/submit.py197 async def get_html_response_to_compare(
LOWmaigret/notify.py157 def make_colored_terminal_notify(
LOWmaigret/notify.py167 def make_simple_terminal_notify(
LOWmaigret/checking.py86def build_cloudflare_bypass_config(
LOWmaigret/sites.py118 def __is_equal_by_url_or_name(self, url_or_name_str: str):
LOWmaigret/report.py47def sort_report_by_data_points(results):
LOWmaigret/web/app.py106async def search_multiple_usernames(usernames, options):
LOWmaigret/web/app.py117def sanitize_username_for_path(username: str) -> str:
LOWpyinstaller/maigret_standalone.py20def _launched_by_double_click() -> bool:
LOWtests/test_utils.py17def test_case_convert_camel_to_snake():
LOWtests/test_utils.py24def test_case_convert_snake_to_camel():
LOWtests/test_utils.py31def test_case_convert_snake_to_title():
LOWtests/test_utils.py38def test_case_convert_camel_with_digits_to_snake():
LOWtests/test_utils.py63def test_url_extract_main_part_negative():
LOWtests/test_utils.py68def test_url_extract_main_part():
LOWtests/test_utils.py87def test_url_make_profile_url_regexp():
LOWtests/test_utils.py154def test_is_plausible_username_accepts_bare_usernames():
LOWtests/test_utils.py161def test_is_plausible_username_rejects_urls():
LOWtests/test_utils.py168def test_is_plausible_username_accepts_http_prefixed_handles():
LOWtests/test_utils.py176def test_is_plausible_username_rejects_path_like():
LOWtests/test_utils.py181def test_is_plausible_username_rejects_emails():
LOWtests/test_utils.py186def test_is_plausible_username_rejects_whitespace_and_empty():
LOWtests/test_utils.py193def test_is_plausible_username_rejects_non_strings():
LOWtests/conftest.py48def pytest_collection_modifyitems(items):
LOWtests/conftest.py52def get_test_reports_filenames():
LOWtests/conftest.py100def httpserver_listen_address():
LOWtests/test_sites.py36def test_load_empty_db_from_str():
LOWtests/test_sites.py66def test_site_correct_initialization():
LOWtests/test_sites.py79def test_site_strip_engine_data():
LOWtests/test_sites.py89def test_site_strip_engine_data_with_site_prior_updates():
LOWtests/test_sites.py131def test_extract_id_from_url_skips_none_groups():
LOWtests/test_sites.py174def test_ranked_sites_dict_names():
LOWtests/test_sites.py185def test_ranked_sites_dict_disabled():
LOWtests/test_sites.py194def test_ranked_sites_dict_id_type():
LOWtests/test_sites.py205def test_ranked_sites_dict_excluded_tags():
LOWtests/test_sites.py228def test_ranked_sites_dict_excluded_tags_with_top():
LOWtests/test_sites.py253def test_ranked_sites_dict_mirrors_disabled_parent():
LOWtests/test_sites.py283def test_ranked_sites_dict_mirrors_no_extra_without_parent_in_top():
LOWtests/test_sites.py319def test_has_site_url_or_name(default_db):
LOWtests/test_checking.py163def test_parse_usernames_single_username():
LOWtests/test_checking.py169def test_parse_usernames_list_of_usernames():
LOWtests/test_checking.py175def test_parse_usernames_malformed_list():
LOWtests/test_checking.py183def test_parse_usernames_rejects_url_value():
LOWtests/test_checking.py193def test_parse_usernames_rejects_email_value():
LOWtests/test_checking.py201def test_parse_usernames_filters_urls_inside_list():
LOWtests/test_checking.py210def test_parse_usernames_supported_id():
LOWtests/test_checking.py220def test_update_results_info_links():
LOWtests/test_checking.py232def test_update_results_info_no_website():
LOWtests/test_checking.py238def test_extract_ids_data_bad_html_returns_empty():
LOWtests/test_checking.py245def test_get_failed_sites_filters_permanent_errors():
LOWtests/test_checking.py273def test_timeout_check_invalid():
LOWtests/test_checking.py282def test_debug_response_logging_writes(tmp_path, monkeypatch):
LOWtests/test_checking.py290def test_debug_response_logging_no_response(tmp_path, monkeypatch):
LOWtests/test_checking.py310def test_process_site_result_no_response_returns_info():
LOWtests/test_checking.py317def test_process_site_result_status_already_set():
LOWtests/test_checking.py326def test_process_site_result_status_code_claimed():
LOWtests/test_checking.py334def test_process_site_result_status_code_available():
LOWtests/test_checking.py341def test_process_site_result_message_claimed():
LOWtests/test_checking.py29async def test_checking_by_status_code(httpserver, local_test_db):
171 more matches not shown…
Excessive Try-Catch Wrapping55 hits · 62 pts
SeverityFileLineSnippet
LOWmaigret/submit.py95 except Exception:
LOWmaigret/submit.py240 except Exception as e:
LOWmaigret/ai.py153 except Exception:
MEDIUMmaigret/checking.py170def _make_request(
MEDIUMmaigret/checking.py343def check(self) -> Tuple[Optional[str], int, Optional[CheckError]]:
MEDIUMmaigret/checking.py1632def extract_ids_data(html_text, logger, site) -> Dict:
LOWmaigret/checking.py219 except Exception as e:
LOWmaigret/checking.py302 except Exception as e:
LOWmaigret/checking.py384 except Exception as e:
LOWmaigret/checking.py554 except Exception as e:
LOWmaigret/checking.py608 except Exception as e:
LOWmaigret/checking.py731 except Exception as e:
LOWmaigret/checking.py1063 except Exception as e:
LOWmaigret/checking.py1511 except Exception as e:
LOWmaigret/checking.py1580 except Exception as e:
LOWmaigret/checking.py1635 except Exception as e:
LOWmaigret/checking.py1661 except Exception as e:
LOWmaigret/executors.py212 except Exception as e:
LOWmaigret/db_updater.py112 except Exception:
LOWmaigret/db_updater.py155 except Exception:
MEDIUMmaigret/db_updater.py73def _load_state() -> dict:
LOWmaigret/sites.py521 except Exception as error:
LOWmaigret/sites.py545 except Exception as error:
LOWmaigret/sites.py555 except Exception as error:
LOWmaigret/sites.py571 except Exception as error:
LOWmaigret/settings.py74 except Exception as error:
LOWmaigret/maigret.py72 except Exception as e:
LOWmaigret/maigret.py105 except Exception as e:
LOWmaigret/maigret.py689 except Exception as e:
LOWmaigret/maigret.py1098 except Exception as e:
LOWmaigret/report.py202 except Exception as e:
LOWmaigret/report.py494 except Exception as e:
LOWmaigret/report.py520 except Exception as e:
LOWmaigret/web/app.py101 except Exception as e:
LOWmaigret/web/app.py112 except Exception as e:
LOWmaigret/web/app.py215 except Exception as e:
LOWmaigret/web/app.py361 except Exception as e:
MEDIUMmaigret/web/app.py127def process_search_task(usernames, options, timestamp):
LOWpyinstaller/maigret_standalone.py34 except Exception:
LOWtests/test_checking.py646 except Exception:
LOWtests/test_checking.py668 except Exception:
LOWtests/test_data.py93 except Exception:
LOWutils/check_top_n.py115 except Exception as e:
LOWutils/check_top_n.py125 except Exception as e:
LOWutils/check_top_n.py176 except Exception as e:
LOWutils/update_site_data.py88 except Exception as e:
LOWutils/update_site_data.py100 except Exception:
LOWutils/update_site_data.py278 except Exception as e:
MEDIUMutils/update_site_data.py94def get_base_domain(url):
LOWutils/site_check.py148 except Exception as e:
LOWutils/site_check.py158 except Exception as e:
LOWutils/site_check.py219 except Exception as e:
LOWutils/site_check.py650 except Exception:
LOWutils/import_sites.py86 except Exception as e:
MEDIUMutils/import_sites.py253 # print(f'Error: {str(e)}')
Decorative Section Separators10 hits · 39 pts
SeverityFileLineSnippet
MEDIUMtests/test_checking.py597# -----------------------------------------------------------------------------
MEDIUMtests/test_checking.py603# -----------------------------------------------------------------------------
MEDIUMtests/test_idempotent_writes.py22# ---------------------------------------------------------------------------
MEDIUMtests/test_idempotent_writes.py24# ---------------------------------------------------------------------------
MEDIUMtests/test_idempotent_writes.py161# ---------------------------------------------------------------------------
MEDIUMtests/test_idempotent_writes.py163# ---------------------------------------------------------------------------
MEDIUMtests/test_keyword_filtering.py133# ---------------------------------------------------------------------------
MEDIUMtests/test_keyword_filtering.py136# ---------------------------------------------------------------------------
MEDIUMtests/test_maigret.py207# -----------------------------------------------------------------------------
MEDIUMtests/test_maigret.py217# -----------------------------------------------------------------------------
Unused Imports37 hits · 36 pts
SeverityFileLineSnippet
LOWmaigret/submit.py6
LOWmaigret/submit.py13
LOWmaigret/__init__.py9
LOWmaigret/__init__.py22
LOWmaigret/__init__.py23
LOWmaigret/__init__.py23
LOWmaigret/__init__.py23
LOWmaigret/__init__.py24
LOWmaigret/__init__.py11
LOWmaigret/executors.py7
LOWmaigret/maigret.py11
LOWmaigret/web/app.py1
LOWtests/test_executors.py6
LOWtests/test_executors.py6
LOWtests/test_permutator.py1
LOWtests/test_errors.py4
LOWtests/test_db_updater.py4
LOWtests/test_db_updater.py5
LOWtests/test_db_updater.py7
LOWtests/test_db_updater.py9
LOWtests/test_db_updater.py11
LOWtests/test_db_updater.py11
LOWtests/test_db_updater.py11
LOWtests/test_cloudflare_webgate.py3
LOWtests/test_cli.py3
LOWtests/test_maigret.py16
LOWutils/fp_probe_top_sites.py12
LOWutils/update_site_data.py14
LOWutils/site_check.py22
LOWutils/site_check.py22
LOWutils/site_check.py37
LOWutils/site_check.py38
LOWutils/site_check.py38
LOWutils/site_check.py38
LOWutils/site_check.py44
LOWutils/site_check.py45
LOWutils/import_sites.py10
Cross-File Repetition5 hits · 25 pts
SeverityFileLineSnippet
HIGHmaigret/notify.py0convert object to string. keyword arguments: self -- this object. return value: nicely formatted string to get informati
HIGHmaigret/notify.py0convert object to string. keyword arguments: self -- this object. return value: nicely formatted string to get informati
HIGHmaigret/result.py0convert object to string. keyword arguments: self -- this object. return value: nicely formatted string to get informati
HIGHmaigret/result.py0convert object to string. keyword arguments: self -- this object. return value: nicely formatted string to get informati
HIGHmaigret/result.py0convert object to string. keyword arguments: self -- this object. return value: nicely formatted string to get informati
Deep Nesting23 hits · 22 pts
SeverityFileLineSnippet
LOWmaigret/submit.py132
LOWmaigret/notify.py247
LOWmaigret/checking.py670
LOWmaigret/checking.py854
LOWmaigret/checking.py1357
LOWmaigret/checking.py1527
LOWmaigret/checking.py1640
LOWmaigret/checking.py170
LOWmaigret/sites.py285
LOWmaigret/sites.py603
LOWmaigret/maigret.py63
LOWmaigret/permutator.py10
LOWmaigret/report.py135
LOWmaigret/report.py284
LOWmaigret/report.py445
LOWmaigret/report.py671
LOWmaigret/report.py181
LOWmaigret/web/app.py127
LOWtests/test_data.py84
LOWutils/check_top_n.py132
LOWutils/update_site_data.py158
LOWutils/site_check.py417
LOWutils/site_check.py656
Self-Referential Comments6 hits · 18 pts
SeverityFileLineSnippet
MEDIUMtests/test_submit.py24 # Create the Submitter instance
MEDIUMtests/test_submit.py48 # Create the Submitter instance without engines
MEDIUMtests/test_submit.py149 # Initialize necessary objects
MEDIUMtests/test_submit.py197 # Initialize necessary objects
MEDIUMtests/test_submit.py251 # Initialize necessary objects
MEDIUMutils/site_check.py194 # Create a simple notifier
Redundant / Tautological Comments7 hits · 10 pts
SeverityFileLineSnippet
LOWmaigret/submit.py467 # Check if the site check is ordinary or not
LOWmaigret/notify.py272 # Check if this is a keyword match
LOWmaigret/executors.py170 # Add tasks to the queue
LOWmaigret/executors.py221 # Add tasks to the queue
LOWmaigret/db_updater.py250 # Check if update available
LOWmaigret/web/app.py306 # Check if job is completed
LOWutils/check_top_n.py247 # Check if status_code would work
Over-Commented Block4 hits · 4 pts
SeverityFileLineSnippet
LOWcookies.txt1# HTTP Cookie File downloaded with cookies.txt by Genuinous @genuinous
LOWtests/test_maigret.py201 extract_ids_from_results(TEST_EXAMPLE, test_db) == {
LOW.github/workflows/codeql-analysis.yml1# For most projects, this workflow file will not need changing; you simply need
LOW.github/workflows/codeql-analysis.yml41 - name: Initialize CodeQL
AI Slop Vocabulary1 hit · 2 pts
SeverityFileLineSnippet
LOWtests/test_checking.py178 # should swallow the error and just return empty