Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Mago Laravel Package

carthage-software/mago

Mago is an extremely fast PHP linter, formatter, and static analyzer written in Rust. It helps teams catch issues early, enforce consistent style, and improve code quality across projects, with multiple install options like script, Homebrew, Composer, and Cargo.

View on GitHub
Deep Wiki
Context7

+++ title = "分析器命令参考" description = "mago analyze 接受的所有标志。" nav_order = 20 nav_section = "工具" nav_subsection = "Analyzer" +++

命令参考

Usage: mago analyze [OPTIONS] [PATHS]...

mago analysemago analyze 的别名,两者均可使用。

全局标志必须放在 analyze 之前。完整的全局标志列表见 CLI 概述

参数

参数 说明
[PATHS]... 要分析的文件或目录。提供时,本次运行将以这些路径替代 mago.toml 中的 paths

分析器专属选项

标志 说明
--no-stubs 跳过内置的 PHP 标准库 stub。仅在确实需要时使用。
--staged 仅分析 git 中暂存的文件。在非 git 仓库中运行会失败。
--stdin-input 从 stdin 读取文件内容,使用单一路径参数进行 baseline 查找和报告。用于编辑器集成。
--substitute <ORIG=TEMP> 在本次调用中以另一个文件替换某个宿主文件。用于变异测试。可重复使用。
--watch 持续运行,在文件变化时重新分析。参见监视模式
--list-codes 以 JSON 列出每一项分析器问题的代码。
-h, --help 打印帮助并退出。

报告、修复和 baseline 的共享标志记录在报告和修复选项页面。

从 stdin 读取

适用于通过管道传入未保存缓冲区内容的编辑器和 IDE 集成:

cat src/Example.php | mago analyze --stdin-input src/Example.php

需要恰好一个路径参数。它会作为逻辑(相对于工作区的)文件名,用于 baseline 匹配和诊断。路径会被规范化,因此 ./src/Example.phpsrc/Example.php 等价。与 --staged--watch 互斥。

替换文件

--substitute ORIG=TEMP 在单次运行期间用另一个文件替换某个宿主文件,且不会向磁盘写入任何内容。它为变异测试框架(Infection 等)而设计,这些框架会生成源文件的变异副本,并希望分析器针对项目其余部分对该变异进行评估。如果分析器在变异文件上报告了新错误,该变异就可以在不运行测试套件的情况下被判定为已被杀死。

mago analyze --substitute /abs/path/to/src/Foo.php=/tmp/mutation-42.php

规则:

  • ORIGTEMP 都必须是绝对路径,且两个文件都必须存在。
  • ORIG 必须是配置中某个 paths 下的宿主文件。第三方依赖或被排除的文件不能被替换。
  • 该标志可以重复使用,以便一次替换多个文件。
  • --stdin-input--staged 互斥。

在内部,TEMP 会被加入宿主路径,ORIG 会被加入本次运行的排除项,因此跨文件的类型推断仍然可以看到该变异。报告的问题和 baseline 条目引用的是 TEMP 而非 ORIG

监视模式

--watch 让分析器持续运行,在工作区中创建、修改或删除任何 PHP 文件时重新执行分析。

mago analyze --watch

自动重启

分析器还会监视那些会改变其自身配置的文件:

  • 已加载的 mago.toml(或 Mago 选用的任何配置)。
  • [analyzer].baseline 引用的 baseline 文件。
  • composer.jsoncomposer.lock

任何这些文件发生变化时,分析器会以重新加载的配置重启。因此你可以编辑 mago.toml 后保存,下一次分析就会使用新设置,无需手动重启。

如果监视模式启动时不存在任何配置文件,分析器会等待任意一种受支持的配置文件(mago.tomlmago.yamlmago.json 等)被创建,并在出现时重启。

Ctrl+C 停止监视。

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
calmfox/watch-sylius
damienfern/grpc-symfony-bundle
atoolo/index-bundle
atoolo/genai-bundle
coprotoai/laravel-ticket
davidjln/llm-carbon-bundle
cryonighter/valid-request-bundle
coolms/taxonomy-bundle
coolms/field-bundle
articulate-orm/symfony
aaix/laravel-tall-architect
ephoto/akeneo-connector
emmanuelballery/eb-plantumlbundle
emielburgman/symfony-visitor-beacon
emielburgman/symfony-visit-storage
emielburgman/symfony-security-headers
emielburgman/symfony-log-viewer
emarref/xdebug-bundle
emarref/pubnub-bundle
elriseio/finance-money-bundle