
223
第 10 章
Hack
工具
一门编程语言的特性只是使它走向完美道路上的一部分。如果要表现得更加强大,语言
需要有一个完善的周边工具生态系统:编辑器及
IDE
支持,调试器、静态分析工具和
lint
工具等。
Hack
的类型检查器构建在强大的静态分析平台上,这个平台可以支持很多
这种用途。
标准的
HHVM/Hack
安装中会附带很多有用的代码检查工具,包括从
PHP
迁移到
Hack
的工具以及把
Hack
转换为
PHP
的工具。本章主要讲述这些工具。
10.1
检查代码库
Hack
类型检查器的核心基础架构是一个服务端,用于记录关于代码库的一系列事实。可
以使用
hh_client
基于对上述一系列事实的查询来检查类型错误。关于
hh_client
查询
数据,本节将对其他可用的选项进行阐述:
--search
使用这个标志位可以执行一个对给定符号名称的模糊查询。在该标志位后传递一个
用于查询的字符串作为实参。请注意这同时会对搜索内置符号系统进行查询。
$
hh_client --search wrap
File "/home/oyamauchi/hack/test.php", line 58, characters 7-13: Wrapper,
Class
这个查询是非常灵敏的。类型检查器的服务器端对代码库进行索引,并不需要读取
任何源文件就能够执行该搜索功能。
这里有很多相关的标志位,用于限制将会返回的符号种类:
--search-class
、
--search-function
、
--search-constant
和
--search-typedef ...