本文档概述了 Sherlock 项目的代码库组织结构和重要文件。它详细介绍了构成该系统的仓库结构、核心组件和支持性基础设施文件。有关测试框架的信息,请参阅测试框架;有关 CI/CD 管道的详细信息,请参阅持续集成。
Sherlock 项目遵循清晰的模块化组织,将核心功能与支持性基础设施分离。仓库结构旨在方便使用和贡献。
来源:.gitignore, .editorconfig
Sherlock 的核心功能集中在几个关键文件中,这些文件负责在社交网络上搜索用户名。
系统的核心组件是 sherlock.py,它包含处理用户名、向社交网络发出请求以及处理响应的主要逻辑。
这个关键文件包含所有支持站点的结构化信息,包括:
这些核心组件之间的关系如下图所示:
来源:.gitignore
该仓库包含多个支持开发过程的配置文件。
.editorconfig 定义了不同编辑器和 IDE 之间一致的编码风格
[*.py]
indent_size = 4
quote_type = double
.gitignore 指定了版本控制中排除的文件和目录
开发环境
venv/, bin/, lib/).vscode/, .idea/)__pycache__/)测试产物
.coverage.tox/tests/.excluded_sites构建和分发
dist/*.egg-info/src/输出文件
requirements.txt 除外)Sherlock 的打包系统旨在让用户安装过程简单明了。
来源:.gitignore
该项目拥有一个健壮的测试框架,位于 tests/ 目录下。
来源:.gitignore8-10 .gitignore40-41
Sherlock 提供了多种部署方法,包括 pip 安装和 Docker 容器。
来源:.gitignore
该仓库包含多个文档文件,帮助用户和贡献者理解该项目。
来源:.gitignore
Sherlock 项目支持多种搜索结果输出格式:
这些输出文件通常从版本控制中排除,因为它们包含用户特定的结果。
该项目配置为与流行的开发工具和持续集成服务配合使用。
来源:.gitignore12-14 .gitignore46-47 .editorconfig1-19
项目结构设计为可维护和可扩展。将站点配置数据与核心引擎分离,使得在不修改主代码库的情况下轻松更新支持的站点成为可能。
通过这种组织方式,Sherlock 在核心组件的稳定性和站点配置的灵活性之间取得了平衡,使项目能够适应社交网络环境的变化,同时保持一致的用户体验。
来源:.gitignore, .editorconfig