用途:分析 Phoenix 应用的上下文(Context)边界与模块耦合,确保上下文分离清晰、架构边界合理,适合在检查跨上下文调用、验证依赖或拆分模块前使用。
主要能力:提供三种模式,/phx:boundaries 检查违规,/phx:boundaries --assess 对上下文健康度评分(0-100),/phx:boundaries --fix 针对违规给出修复建议。评估按模块数量、公共 API 面、扇出、扇入、循环依赖和边界违规等指标加权计分,并输出各上下文的模块数、API、扇出、扇入与得分表,列出问题与建议。
必要用法:评估时使用 Glob 统计 lib/my_app// 下各上下文的 .ex 文件数,用 Grep 统计 lib/my_app/.ex 中的公共函数定义,运行 mix xref graph --format stats 做依赖分析,运行 mix xref graph --format cycles --label compile 检查编译期循环依赖。其他分析命令包括 mix xref graph --label compile-connected、mix xref graph --sink MyApp.Accounts --label compile、mix xref callers MyApp.Accounts.get_user!/1。
规则与限制:依赖规则规定控制器只能调用上下文、Plug、Conn,不能直接调用 Repo 与 Schemas;LiveView 只能调用上下文、组件与 PubSub;上下文可调用自身 schema、Repo 与其他上下文,但不能调用 Web 层模块;Schema 只能使用 Ecto 类型与校验。检测到 web 层使用 Repo、Schema 含查询、跨上下文导入 schema、LiveView 含业务逻辑等即为红旗。资料强调在未运行 mix xref 前不要重构上下文边界,并建议以 /phx:plan、/phx:quick、/phx:review 作为后续步骤。具体命令行为与输出可能随环境变化,资料未提供安装命令与价格信息。