AI Slop Code RIsk Monitor

smicallef/spiderfoot

SpiderFoot automates OSINT for threat intelligence and mapping your attack surface.

26.8 Elevated pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for smicallef/spiderfoot, a Python project with 23,315 GitHub stars. SynthScan examined 98,643 lines of code across 764 source files, recording 1479 pattern matches distributed across 13 syntactic categories. The legacy adjusted pattern signal is 26.8 (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.

26.8
Adjusted Signal
26.8
Raw Pattern Score
100%
Time Factor
2026-04-13
Last Push
23.3K
Stars
Python
Language
98.6K
Lines of Code
764
Files
1.5K
Pattern Hits
2026-10-12
Scan Date
0.06
HC Hit Rate

Risk Review · v3

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

Cognitive Ownership Risk 34.5/100 · MEDIUM

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

Hallucinated Dependency & Supply Chain Risk 0.4/100 · LOW

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

Agent Over-Engineering Ratio 63.4/100 · HIGH

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

PR Review Velocity Impact 74.5/100 · HIGH

Which changes need focused human review? 1479 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 45MEDIUM 495LOW 939

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 1479 distinct pattern matches across 13 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.

Decorative Section Separators478 hits · 1431 pts
SeverityFileLineSnippetContext
MEDIUMsf.py3# -------------------------------------------------------------------------------COMMENT
MEDIUMsf.py12# -------------------------------------------------------------------------------COMMENT
MEDIUMsflib.py2# -------------------------------------------------------------------------------COMMENT
MEDIUMsflib.py11# -------------------------------------------------------------------------------COMMENT
MEDIUMsfwebui.py2# -----------------------------------------------------------------COMMENT
MEDIUMsfwebui.py11# -----------------------------------------------------------------COMMENT
MEDIUMsfcli.py3# -------------------------------------------------------------------------------COMMENT
MEDIUMsfcli.py12# -------------------------------------------------------------------------------COMMENT
MEDIUMsfscan.py2# -----------------------------------------------------------------COMMENT
MEDIUMsfscan.py11# -----------------------------------------------------------------COMMENT
MEDIUMspiderfoot/db.py2# -------------------------------------------------------------------------------COMMENT
MEDIUMspiderfoot/db.py11# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_opennic.py2# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_opennic.py12# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_commoncrawl.py2# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_commoncrawl.py12# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_citadel.py2# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_citadel.py11# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_dnsraw.py2# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_dnsraw.py12# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_cinsscore.py2# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_cinsscore.py11# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_myspace.py1# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_myspace.py10# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_tool_onesixtyone.py2# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_tool_onesixtyone.py12# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_junkfiles.py2# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_junkfiles.py11# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_cloudflaredns.py2# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_cloudflaredns.py12# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_surbl.py2# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_surbl.py12# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_urlscan.py2# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_urlscan.py11# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_archiveorg.py2# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_archiveorg.py12# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_bitcoinwhoswho.py2# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_bitcoinwhoswho.py11# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_greynoise_community.py2# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_greynoise_community.py13# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_fullhunt.py2# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_fullhunt.py11# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_apple_itunes.py2# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_apple_itunes.py11# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_bitcoinabuse.py2# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_bitcoinabuse.py11# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_isc.py2# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_isc.py11# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_accounts.py2# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_accounts.py12# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_openphish.py2# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_openphish.py11# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_tool_retirejs.py2# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_tool_retirejs.py11# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_spyonweb.py2# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_spyonweb.py12# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_hackertarget.py2# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_hackertarget.py13# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_securitytrails.py2# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_securitytrails.py11# -------------------------------------------------------------------------------COMMENT
418 more matches not shown…
Excessive Try-Catch Wrapping327 hits · 333 pts
SeverityFileLineSnippetContext
LOWsf.py165 except Exception as e:CODE
LOWsf.py177 except Exception as e:CODE
LOWsf.py194 except Exception as e:CODE
LOWsflib.py165 except Exception as e:CODE
LOWsflib.py1238 except Exception:CODE
LOWsflib.py1287 except Exception as e:CODE
LOWsflib.py1331 except Exception as e:CODE
LOWsflib.py1372 except Exception as e:CODE
LOWsflib.py1397 except Exception as e:CODE
LOWsflib.py1429 except Exception as e:CODE
LOWsflib.py1526 except Exception:CODE
LOWsflib.py1531 except Exception:CODE
LOWsfwebui.py265 except Exception:CODE
LOWsfwebui.py346 except Exception:CODE
LOWsfwebui.py386 except Exception:CODE
LOWsfwebui.py391 except Exception:CODE
LOWsfwebui.py843 except Exception as e:CODE
LOWsfwebui.py897 except Exception as e:CODE
LOWsfwebui.py1125 except Exception as e:CODE
LOWsfwebui.py1149 except Exception as e:CODE
LOWsfwebui.py1191 except Exception as e:CODE
LOWsfwebui.py1206 except Exception:CODE
LOWsfwebui.py1232 except Exception:CODE
LOWsfwebui.py1371 except Exception as e:CODE
LOWsfwebui.py1491 except Exception as e:CODE
LOWsfwebui.py1553 except Exception as e:CODE
LOWsfwebui.py1579 except Exception:CODE
LOWsfwebui.py1605 except Exception:CODE
LOWsfwebui.py1704 except Exception:CODE
LOWsfwebui.py1709 except Exception:CODE
LOWsfwebui.py1737 except Exception:CODE
LOWsfwebui.py1768 except Exception:CODE
LOWsfwebui.py1807 except Exception:CODE
LOWsfwebui.py1831 except Exception:CODE
LOWsfwebui.py1852 except Exception:CODE
LOWsfwebui.py1876 except Exception:CODE
LOWsfcli.py416 except Exception as e:CODE
MEDIUMsfcli.py417 self.edprint(f"Error parsing command: {e}")CODE
MEDIUMsfcli.py550 self.edprint(f"Error running your query: {j[1]}")CODE
LOWsfcli.py850 except Exception as e:CODE
MEDIUMsfcli.py1223 self.edprint("Error fetching SpiderFoot server-side config.")CODE
MEDIUMsfcli.py1314 self.edprint(f"Error setting SpiderFoot server-side config: {j[1]}")CODE
LOWsfscan.py296 except Exception:CODE
LOW⚡sfscan.py313 except Exception:CODE
LOW⚡sfscan.py322 except Exception as e:CODE
LOW⚡sfscan.py330 except Exception as e:CODE
LOW⚡sfscan.py339 except Exception as e:CODE
LOW⚡sfscan.py346 except Exception as e:CODE
LOW⚡sfscan.py354 except Exception as e:CODE
LOW⚡sfscan.py534 except Exception:CODE
LOW⚡sfscan.py544 except Exception:CODE
LOW⚡sfscan.py553 except Exception:CODE
LOWspiderfoot/db.py319 except Exception as e:CODE
LOWspiderfoot/db.py345 except Exception:CODE
LOWspiderfoot/db.py359 except Exception as e:CODE
LOWspiderfoot/db.py390 except Exception:CODE
LOWspiderfoot/threadpool.py257 except Exception: # noqa: B902CODE
LOWspiderfoot/plugin.py389 except Exception as e:CODE
LOWspiderfoot/plugin.py524 except Exception as e:CODE
MEDIUMspiderfoot/plugin.py498def threadWorker(self) -> None:CODE
267 more matches not shown…
Over-Commented Block239 hits · 238 pts
SeverityFileLineSnippetContext
LOWsf.py1#!/usr/bin/env python3COMMENT
LOWsflib.py1# -*- coding: utf-8 -*-COMMENT
LOWsfwebui.py1# -*- coding: utf-8 -*-COMMENT
LOWdocker-compose.yml1version: "3"COMMENT
LOWsfcli.py1#!/usr/bin/env python3COMMENT
LOWsfscan.py1# -*- coding: utf-8 -*-COMMENT
LOWspiderfoot/db.py1# -*- coding: utf-8 -*-COMMENT
LOWspiderfoot/plugin.py101 # Current event being processedCOMMENT
LOWspiderfoot/plugin.py341COMMENT
LOWspiderfoot/static/js/spiderfoot.js1//-------------------------------------------------------------------------------COMMENT
LOWdocs/conf.py1# Configuration file for the Sphinx documentation builder.COMMENT
LOWdocs/conf.py41# for a list of supported languages.COMMENT
LOWmodules/sfp_opennic.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_commoncrawl.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_citadel.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_dnsraw.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_cinsscore.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_tool_onesixtyone.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_junkfiles.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_cloudflaredns.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_surbl.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_urlscan.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_archiveorg.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_bitcoinwhoswho.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_greynoise_community.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_fullhunt.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_apple_itunes.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_bitcoinabuse.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_isc.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_accounts.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_openphish.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_tool_retirejs.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_spyonweb.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_hackertarget.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_securitytrails.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_dnsneighbor.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_threatcrowd.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_bingsearch.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_dnsbrute.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_sociallinks.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_robtex.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_hosting.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_trumail.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_openstreetmap.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_company.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_dnszonexfer.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_cleantalk.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_uceprotect.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_textmagic.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_emailrep.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_tool_testsslsh.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_cleanbrowsing.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_coinblocker.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_zoneh.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_whatcms.py1# -------------------------------------------------------------------------------COMMENT
LOWmodules/sfp_c99.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_pulsedive.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_abstractapi.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_alienvaultiprep.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_crt.py1# -*- coding: utf-8 -*-COMMENT
179 more matches not shown…
Docstring Block Structure38 hits · 190 pts
SeverityFileLineSnippetContext
HIGHsflib.py307Convert a Python dictionary to something storable in the database. Args: opts (dict): Dictionary ofSTRING
HIGHsflib.py371Take strings, etc. from the database or UI and convert them to a dictionary for Python to process. ArgsSTRING
HIGHsfwebui.py194Convert data to HTML entities; except quotes and ampersands. Args: inputList (list): list of stringSTRING
HIGHsfwebui.py796Rerun a scan. Args: id (str): scan ID Returns: None Raises: STRING
HIGHsfwebui.py1089Save settings, also used to completely reset them to default. Args: allopts: TBD token STRING
HIGHsfwebui.py1376Initiate a scan. Args: scanname (str): scan name scantarget (str): scan target STRING
HIGHspiderfoot/db.py449Search database. Args: criteria (dict): search criteria such as: - scan_id (search STRING
HIGHspiderfoot/db.py550Logs a batch of events to the database. Args: batch (list): tuples containing: instanceId, classifiSTRING
HIGHspiderfoot/db.py720Return info about a scan instance (name, target, created, started, ended, status) Args: instanceId STRING
HIGHspiderfoot/db.py749Obtain a summary of the results, filtered by event type, module or entity. Args: instanceId (str): STRING
HIGHspiderfoot/db.py803Obtain a summary of the correlations, filtered by rule or risk Args: instanceId (str): scan instancSTRING
HIGHspiderfoot/db.py848Obtain a list of the correlations from a scan Args: instanceId (str): scan instance ID RetSTRING
HIGHspiderfoot/db.py889Obtain the data for a scan and event type. Args: instanceId (str): scan instance ID eveSTRING
HIGHspiderfoot/db.py978Obtain a unique list of elements. Args: instanceId (str): scan instance ID eventType (sSTRING
HIGHspiderfoot/db.py1020Get scan logs. Args: instanceId (str): scan instance ID limit (int): limit number of reSTRING
HIGHspiderfoot/db.py1066Get scan errors. Args: instanceId (str): scan instance ID limit (int): limit number of STRING
HIGHspiderfoot/db.py1103Delete a scan instance. Args: instanceId (str): scan instance ID Returns: boolSTRING
HIGHspiderfoot/db.py1138Set the false positive flag for a result. Args: instanceId (str): scan instance ID resuSTRING
HIGHspiderfoot/db.py1177Store the default configuration in the database. Args: optMap (dict): config options ReturSTRING
HIGHspiderfoot/db.py1306Retrieve configuration data for a scan component. Args: instanceId (str): scan instance ID STRING
HIGHspiderfoot/db.py1470History of data from the scan. Args: instanceId (str): scan instance ID Returns: STRING
HIGHspiderfoot/db.py1499Get the source IDs, types and data for a set of IDs. Args: instanceId (str): scan instance ID STRING
HIGHspiderfoot/db.py1550Get the child IDs, types and data for a set of IDs. Args: instanceId (str): scan instance ID STRING
HIGHspiderfoot/db.py1599Get the full set of upstream IDs which are parents to the supplied set of IDs. Args: instanceId (stSTRING
HIGHspiderfoot/db.py1670Get the full set of downstream IDs which are children of the supplied set of IDs. Args: instanceId STRING
HIGHspiderfoot/db.py1728Create a correlation result in the database. Args: instanceId (str): scan instance ID rSTRING
HIGHspiderfoot/correlation.py134Build up the criteria to be used to query the database. Args: matchrule (dict): dict representing aSTRING
HIGHspiderfoot/correlation.py843Work through all the components of the rule to produce a final set of data elements for building into correlatioSTRING
HIGHspiderfoot/correlation.py898Build the correlation title with field substitution. Args: rule (dict): correlation rule STRING
HIGHspiderfoot/helpers.py122Load modules from modules directory. Args: path (str): file system path for modules directory STRING
HIGHspiderfoot/helpers.py176Load correlation rules from correlations directory. Args: path (str): file system path for correlatSTRING
HIGHspiderfoot/helpers.py345Return dictionary words from several language dictionaries. Args: wordlists (list[str]): list of woSTRING
HIGHspiderfoot/helpers.py373Return list of human names from wordlist file. Args: wordlists (list[str]): list of wordlist file nSTRING
HIGHspiderfoot/helpers.py401Return list of usernames from wordlist file. Args: wordlists (list[str]): list of wordlist file namSTRING
HIGHspiderfoot/helpers.py560Return a format-agnostic collection of tuples to use as the basis for building graphs in various formats. STRING
HIGHspiderfoot/helpers.py637Converts a dictionary of k -> array to a nested tree that can be digested by d3 for visualizations. ArgSTRING
HIGHspiderfoot/helpers.py775Find all URLs within the supplied content. This function does not fetch any URLs. A dictionary will beSTRING
HIGHspiderfoot/helpers.py1144Given a certificate as a DER-encoded blob of bytes, returns a PEM-encoded string version of the same certificate. STRING
Hyper-Verbose Identifiers173 hits · 182 pts
SeverityFileLineSnippetContext
LOWsfwebui.py491 def scaneventresultexportmulti(self: 'SpiderFootWebUi', ids: str, filetype: str = "csv", dialect: str = "excel") -> CODE
LOW⚡test/unit/test_spiderfootwebui.py217 def test_scan_viz_multi_should_return_a_string(self):CODE
LOW⚡test/unit/test_spiderfootwebui.py227 def test_scanopts_should_return_dict(self):CODE
LOW⚡test/unit/test_spiderfootwebui.py235 def test_rerunscan_invalid_scan_id_should_return_error(self):CODE
LOW⚡test/unit/test_spiderfootwebui.py378 def test_eventtypes_should_return_list(self):CODE
LOW⚡test/unit/test_spiderfootwebui.py385 def test_modules_should_return_list(self):CODE
LOW⚡test/unit/test_spiderfootwebui.py392 def test_correlationrules_should_return_list(self):CODE
LOW⚡test/unit/test_spiderfootwebui.py399 def test_ping_should_return_list(self):CODE
LOW⚡test/unit/test_spiderfootwebui.py545 def test_scanlist_should_return_a_list(self):CODE
LOW⚡test/unit/test_spiderfootwebui.py555 def test_scanstatus_should_return_a_list(self):CODE
LOW⚡test/unit/test_spiderfootwebui.py565 def test_scansummary_should_return_a_list(self):CODE
LOWtest/unit/test_spiderfootwebui.py24 def test_init_no_web_config_should_raise(self):CODE
LOWtest/unit/test_spiderfootwebui.py76 def test_clean_user_input_should_return_a_list(self):CODE
LOWtest/unit/test_spiderfootwebui.py83 def test_clean_user_input_invalid_input_should_raise(self):CODE
LOWtest/unit/test_spiderfootwebui.py94 def test_clean_user_input_should_clean_user_input(self):CODE
LOWtest/unit/test_spiderfootwebui.py109 def test_search_base_should_return_a_list(self):CODE
LOWtest/unit/test_spiderfootwebui.py123 def test_scan_correlations_export(self):CODE
LOWtest/unit/test_spiderfootwebui.py134 def test_scan_event_result_export_should_return_bytes(self):CODE
LOWtest/unit/test_spiderfootwebui.py147 def test_scan_event_result_export_multi(self):CODE
LOWtest/unit/test_spiderfootwebui.py160 def test_scan_search_result_export(self):CODE
LOWtest/unit/test_spiderfootwebui.py172 def test_scan_export_logs_invalid_scan_id_should_return_string(self):CODE
LOWtest/unit/test_spiderfootwebui.py184 def test_scan_export_logs_should_return_bytes(self):CODE
LOWtest/unit/test_spiderfootwebui.py195 def test_scan_export_json_multi(self):CODE
LOWtest/unit/test_spiderfootwebui.py206 def test_scan_viz_should_return_a_string(self):CODE
LOWtest/unit/test_spiderfootwebui.py300 def test_optsexport_should_return_a_string(self):CODE
LOWtest/unit/test_spiderfootwebui.py307 def test_optsraw_should_return_a_list(self):CODE
LOWtest/unit/test_spiderfootwebui.py325 def test_scandelete_invalid_scanid_should_return_an_error(self):CODE
LOWtest/unit/test_spiderfootwebui.py336 def test_savesettings_invalid_csrf_token_should_return_an_error(self):CODE
LOWtest/unit/test_spiderfootwebui.py351 def test_savesettingsraw_invalid_csrf_token_should_return_an_error(self):CODE
LOWtest/unit/test_spiderfootwebui.py363 def test_reset_settings_should_return_true(self):CODE
LOWtest/unit/test_spiderfootwebui.py410 def test_query_should_perform_sql_query(self):CODE
LOWtest/unit/test_spiderfootwebui.py424 def test_query_invalid_query_should_return_error(self):CODE
LOWtest/unit/test_spiderfootwebui.py441 def test_start_scan_should_start_a_scan(self):CODE
LOWtest/unit/test_spiderfootwebui.py452 def test_start_scan_invalid_scanname_should_return_error(self):CODE
LOWtest/unit/test_spiderfootwebui.py464 def test_start_scan_invalid_scantarget_should_return_error(self):CODE
LOWtest/unit/test_spiderfootwebui.py476 def test_start_scan_unrecognized_scantarget_type_should_return_error(self):CODE
LOWtest/unit/test_spiderfootwebui.py486 def test_start_scan_invalid_modules_should_return_error(self):CODE
LOWtest/unit/test_spiderfootwebui.py498 def test_start_scan_invalid_typelist_should_return_error(self):CODE
LOWtest/unit/test_spiderfootwebui.py510 def test_stopscan_invalid_scanid_should_return_an_error(self):CODE
LOWtest/unit/test_spiderfootwebui.py521 def test_scanlog_should_return_a_list(self):CODE
LOWtest/unit/test_spiderfootwebui.py533 def test_scanerrors_should_return_a_list(self):CODE
LOWtest/unit/test_spiderfootwebui.py577 def test_scaneventresults_should_return_a_list(self):CODE
LOWtest/unit/test_spiderfootwebui.py589 def test_scaneventresultsunique_should_return_a_list(self):CODE
LOWtest/unit/test_spiderfootwebui.py601 def test_search_should_return_a_list(self):CODE
LOWtest/unit/test_spiderfootwebui.py613 def test_scan_history_missing_scanid_should_return_error(self):CODE
LOWtest/unit/test_spiderfootwebui.py627 def test_scan_history_should_return_a_list(self):CODE
LOWtest/unit/test_spiderfootwebui.py637 def test_scan_element_type_discovery_should_return_a_dict(self):CODE
LOW⚡test/unit/test_spiderfoot.py139 def test_config_serialize_invalid_opts_should_raise(self):CODE
LOW⚡test/unit/test_spiderfoot.py145 def test_config_serialize_should_return_a_dict(self):CODE
LOW⚡test/unit/test_spiderfoot.py151 def test_config_unserialize_invalid_opts_should_raise(self):CODE
LOW⚡test/unit/test_spiderfoot.py157 def test_config_unserialize_invalid_reference_point_should_raise(self):CODE
LOW⚡test/unit/test_spiderfoot.py163 def test_config_unserialize_should_return_a_dict(self):CODE
LOW⚡test/unit/test_spiderfoot.py169 def test_cache_get_invalid_label_should_return_none(self):CODE
LOW⚡test/unit/test_spiderfoot.py175 def test_cache_get_invalid_timeout_should_return_none(self):CODE
LOW⚡test/unit/test_spiderfoot.py313 def test_host_domain_invalid_tldlist_should_return_none(self):CODE
LOW⚡test/unit/test_spiderfoot.py319 def test_is_domain_valid_domain_should_return_true(self):CODE
LOW⚡test/unit/test_spiderfoot.py327 def test_is_domain_invalid_domain_should_return_false(self):CODE
LOW⚡test/unit/test_spiderfoot.py346 def test_is_domain_invalid_tldlist_should_return_false(self):CODE
LOW⚡test/unit/test_spiderfoot.py353 def test_is_domain_invalid_tld_should_return_false(self):CODE
LOW⚡test/unit/test_spiderfoot.py361 def test_valid_host_invalid_tldlist_should_return_false(self):CODE
113 more matches not shown…
Deep Nesting187 hits · 181 pts
SeverityFileLineSnippetContext
LOWsf.py235CODE
LOWsflib.py254CODE
LOWsflib.py306CODE
LOWsflib.py370CODE
LOWsflib.py534CODE
LOWsflib.py562CODE
LOWsflib.py801CODE
LOWsflib.py976CODE
LOWsflib.py1191CODE
LOWsflib.py1459CODE
LOWsfwebui.py1035CODE
LOWsfwebui.py1088CODE
LOWsfwebui.py1375CODE
LOWsfcli.py228CODE
LOWsfcli.py449CODE
LOWsfcli.py854CODE
LOWsfcli.py1176CODE
LOWsfscan.py52CODE
LOWsfscan.py260CODE
LOWsfscan.py438CODE
LOWsfscan.py517CODE
LOWspiderfoot/db.py286CODE
LOWspiderfoot/db.py549CODE
LOWspiderfoot/db.py1220CODE
LOWspiderfoot/db.py1305CODE
LOWspiderfoot/db.py1598CODE
LOWspiderfoot/threadpool.py72CODE
LOWspiderfoot/threadpool.py240CODE
LOWspiderfoot/plugin.py312CODE
LOWspiderfoot/plugin.py498CODE
LOWspiderfoot/target.py157CODE
LOWspiderfoot/correlation.py133CODE
LOWspiderfoot/correlation.py410CODE
LOWspiderfoot/correlation.py608CODE
LOWspiderfoot/correlation.py744CODE
LOWspiderfoot/correlation.py793CODE
LOWspiderfoot/correlation.py985CODE
LOWspiderfoot/correlation.py617CODE
LOWspiderfoot/helpers.py344CODE
LOWspiderfoot/helpers.py372CODE
LOWspiderfoot/helpers.py400CODE
LOWspiderfoot/helpers.py559CODE
LOWspiderfoot/helpers.py774CODE
LOWmodules/sfp_opennic.py129CODE
LOWmodules/sfp_commoncrawl.py134CODE
LOWmodules/sfp_dnsraw.py68CODE
LOWmodules/sfp_cinsscore.py84CODE
LOWmodules/sfp_cinsscore.py125CODE
LOWmodules/sfp_junkfiles.py86CODE
LOWmodules/sfp_surbl.py128CODE
LOWmodules/sfp_fullhunt.py139CODE
LOWmodules/sfp_accounts.py289CODE
LOWmodules/sfp_openphish.py151CODE
LOWmodules/sfp_tool_retirejs.py73CODE
LOWmodules/sfp_spyonweb.py192CODE
LOWmodules/sfp_hackertarget.py222CODE
LOWmodules/sfp_securitytrails.py96CODE
LOWmodules/sfp_securitytrails.py149CODE
LOWmodules/sfp_dnsneighbor.py66CODE
LOWmodules/sfp_dnsneighbor.py144CODE
127 more matches not shown…
Self-Referential Comments8 hits · 24 pts
SeverityFileLineSnippetContext
MEDIUMsfscan.py114 # Create a unique ID for this scan in the back-end DB.COMMENT
MEDIUMsfscan.py374 # Create a pseudo module for the root event to originate fromCOMMENT
MEDIUMspiderfoot/logger.py55 # Create a new database handle when the first log batch is processedCOMMENT
MEDIUMmodules/sfp_hackertarget.py337 # Create an IP Address event stemming from the netblock as theCOMMENT
MEDIUMmodules/sfp_tool_testsslsh.py155 # Create a temporary output fileCOMMENT
MEDIUMmodules/sfp_builtwith.py249 # Create the name/co-hostCOMMENT
MEDIUMmodules/sfp_bingsharedip.py161 # Create an IP Address event stemming from the netblock as theCOMMENT
MEDIUMcorrelations/template.yaml34# Define the collections to perform here. Refer to the README.mdCOMMENT
Empty Error Handlers4 hits · 20 pts
SeverityFileLineSnippetContext
HIGHsflib.py1422except UnicodeDecodeError:CODE
HIGHsfcli.py1445except BaseException:CODE
HIGHspiderfoot/correlation.py635except Exception:CODE
HIGHmodules/sfp_dnsdumpster.py74except Exception:CODE
Redundant / Tautological Comments12 hits · 18 pts
SeverityFileLineSnippetContext
LOWspiderfoot/plugin.py382 # Check if we've been asked to stop in the meantime, so thatCOMMENT
LOWspiderfoot/correlation.py1068 # Check if any of the options aren't validCOMMENT
LOWmodules/sfp_accounts.py313 # Check if a state cache exists first, to not have to do this all the timeCOMMENT
LOWmodules/sfp_slideshare.py103 # Check if the profile is valid and extract nameCOMMENT
LOWmodules/sfp_hunter.py139 # Check if we have more results on further pagesCOMMENT
LOWmodules/sfp_onioncity.py147 # Check if we've been asked to stopCOMMENT
LOWmodules/sfp_torch.py102 # Check if we've been asked to stopCOMMENT
LOWmodules/sfp_template.py273 # Check if the module has already analysed this event data.COMMENT
LOWmodules/sfp_tool_dnstwist.py105 # Check if the TLD has wildcards before testingCOMMENT
LOWmodules/sfp_similar.py118 # Check if the TLD has wildcards before testingCOMMENT
LOWmodules/sfp_skymem.py141 # Check if we're on the last page of resultsCOMMENT
LOWmodules/sfp_onionsearchengine.py97 # Check if we've been asked to stopCOMMENT
Cross-File Repetition3 hits · 15 pts
SeverityFileLineSnippetContext
HIGHmodules/sfp_sorbs.py0query dronebl dns for an ipv4 address. args: qaddr (str): ipv4 address. returns: list: dronebl dns entriesSTRING
HIGHmodules/sfp_spamcop.py0query dronebl dns for an ipv4 address. args: qaddr (str): ipv4 address. returns: list: dronebl dns entriesSTRING
HIGHmodules/sfp_dronebl.py0query dronebl dns for an ipv4 address. args: qaddr (str): ipv4 address. returns: list: dronebl dns entriesSTRING
Unused Imports8 hits · 8 pts
SeverityFileLineSnippetContext
LOWspiderfoot/__init__.py1CODE
LOWspiderfoot/__init__.py2CODE
LOWspiderfoot/__init__.py3CODE
LOWspiderfoot/__init__.py4CODE
LOWspiderfoot/__init__.py5CODE
LOWspiderfoot/__init__.py6CODE
LOWspiderfoot/__init__.py7CODE
LOWspiderfoot/__init__.py8CODE
Modern Structural Boilerplate1 hit · 1 pts
SeverityFileLineSnippetContext
LOWspiderfoot/plugin.py151 def _updateSocket(self, socksProxy: str) -> None:CODE
AI Structural Patterns1 hit · 0 pts
SeverityFileLineSnippetContext
LOWsflib.py1191CODE