sherlock-project/sherlock
Hunt down social media accounts by username across social networks
Python★ 100,967+1,766 that day#6 on trending
B76.9/100
Duplication81
1.7% in python, docker, bashDead code87
0%Complexity64
41.8% The score is jscpd's own --health model: markup, data and text left out, tests kept. The numbers below are the trending scan's.
0.9%duplicated over all files · 90 of 9,968 lines
8clones
47files scanned
Most complex files
- sherlock_project/sherlock.py125 cx
- sherlock_project/sites.py31 cx
- sherlock_project/notify.py23 cx
- tests/test_validate_targets.py18 cx
- devel/summarize_site_validation.py17 cx
- tests/conftest.py13 cx
- tests/test_probes.py13 cx
- tests/test_ux.py11 cx
- tests/sherlock_interactives.py8 cx
- sherlock_project/result.py4 cx
Dead code 0% unused · 0 findings
No dead code found — everything here is reachable.
Only 9 of the files count as code, too few for a code-only percentage; the numbers above cover every file.
Largest clones in the code
- 15 lines in 2 placespython54 tokens
45any queries are performed. This method will typically be 46overridden by higher level classes that will inherit from it. 47 48Keyword Arguments: 49self -- This object. 50message -- Object that is used to give context to start 51 of query. 52 Default is None. 53 54Return Value:First 10 of 15 lines.
Largest clones over all files, tests and data included
- 11 lines in 3 placesyamldata files80 tokens.github/ISSUE_TEMPLATE/false-negative.yml:17–27.github/ISSUE_TEMPLATE/false-positive.yml:18–28.github/ISSUE_TEMPLATE/site-request.yml:25–35
17 Reddit is returning false negatives because... 18 validations: 19 required: false 20- type: checkboxes 21 id: terms 22 attributes: 23 label: Code of Conduct 24 description: By submitting this issue, you agree to follow our [Code of Conduct](https://github.com/sherlock-project/sherlock/blob/master/docs/CODE_OF_COND… 25 options: 26 - label: I agree to follow this project's Code of ConductFirst 10 of 11 lines.
- 12 lines in 2 placespythontests107 tokens
62def test_likely_negatives_via_message(self, sites_info, site, random_len): 63 num_attempts: int = 3 64 attempted_usernames: list[str] = [] 65 status: QueryStatus = QueryStatus.CLAIMED 66 for i in range(num_attempts): 67 acceptable_types = string.ascii_letters + string.digits 68 random_handle = ''.join(random.choice(acceptable_types) for _ in range (random_len)) 69 attempted_usernames.append(random_handle) 70 status = simple_query(sites_info=sites_info, site=site, username=random_handle) 71 if status is QueryStatus.AVAILABLE:First 10 of 12 lines.
- 12 lines in 2 placesyamldata files80 tokens
4labels: ["false negative"] 5body: 6 - type: markdown 7 attributes: 8 value: | 9 Please include the site name in the title of your issue. 10 Submit **one site per report** for faster resolution. If you have multiple sites in the same report, it often takes longer to fix. 11 - type: textarea 12 id: additional-info 13 attributes:First 10 of 12 lines.
- 11 lines in 2 placesyamldata files78 tokens
- 8 lines in 2 placesyamldata files72 tokens
By format, code only
| Format | Files | Lines | Clones | Duplicated lines | Duplication |
|---|---|---|---|---|---|
| python | 8 | 1,731 | 1 | 15 | 0.87% |
| bash | 1 | 14 | 0 | 0 | 0% |
By format, all files
| Format | Files | Lines | Clones | Duplicated lines | Duplication |
|---|---|---|---|---|---|
| yaml | 9 | 541 | 5 | 53 | 9.8% |
| python | 16 | 2,168 | 3 | 37 | 1.71% |
| json | 5 | 4,588 | 0 | 0 | 0% |
| markdown | 6 | 2,397 | 0 | 0 | 0% |
| toml | 1 | 68 | 0 | 0 | 0% |
| text | 3 | 64 | 0 | 0 | 0% |
| docker | 2 | 50 | 0 | 0 | 0% |
| ini | 2 | 49 | 0 | 0 | 0% |
| bash | 2 | 25 | 0 | 0 | 0% |
| editorconfig | 1 | 18 | 0 | 0 | 0% |
Trending appearances
| Day | Rank | Stars | Files | Lines | Clones | All files | Code | Health | Commit |
|---|---|---|---|---|---|---|---|---|---|
| Nov 8, 2026 | #6 | 100,967 (+1,766) | 47 | 9,968 | 8 | 0.9% | — | B 76.9 | c588d7c |
Want this for your own project? Install jscpd and run jscpd ., or measure it the way the baselines were measured.