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.
+++ title = "分析器" description = "分析器的功能,它与 linter 的区别,以及接下来的阅读路径。" nav_order = 10 nav_section = "工具" nav_subsection = "Analyzer" +++
一款面向 PHP 的静态分析引擎。它会构建整个项目的语义模型,然后遍历每个函数、方法和表达式,在代码运行之前捕获类型错误和逻辑上的不可能。
两个工具都用于发现问题,但它们工作在不同的层面。
linter 关注代码的形态:风格问题、不一致、代码异味。它不需要知道代码在运行时具体做什么。
分析器关注代码的含义。它跟踪每个变量在每个分支中的类型,知道一个类上每个方法实际返回什么,并跟随哪些异常会向外传播。它能捕获各种不可能的情形,例如在某个类型上调用根本不存在的方法、在需要 Order 处传入了 ?Order,或在已注解为绝不返回 null 的函数中返回 null。
如果把代码比作一篇文章,linter 负责语法校对,而分析器负责事实核查。
How can I help you explore Laravel packages today?