Provided by: hhvm_3.21.0+dfsg-2ubuntu2_amd64 

NAME
hh_client - Interface to Hack language typechecker
SYNOPSIS
hh_client [MODE] [OPTIONS] [DIRECTORY]
DESCRIPTION
hh_client(1) is an interface to a static analysis tool which is what enforces most of the Hack language's
type system. Code must pass validation of this tool in order to be considered valid code in the Hack
language.
There are several possible MODEs for hh_client(1) (see below). By default, it will invoke the check mode,
with the current directory as DIRECTORY. These are reasonable defaults, meaning that most users can
simply invoke the command as
hh_client
with no arguments to get a list of type errors across the entire project.
All of the MODEs accept a DIRECTORY as an optional final argument. This denotes the project upon which to
operate. hh_client(1) walks up the filesystem from the DIRECTORY until it finds a file called .hhconfig
and then operates on the body of Hack language code rooted in this directory. If no DIRECTORY is
specified, it uses the current directory by default. This means you may run hh_client(1) in any
subdirectory of your project and get type errors for the whole project without ever specifying a
DIRECTORY explicitly.
hh_client(1) implements very little logic itself, but rather serves as an interface to the hh_server(1)
daemon. The server will automatically be started and restarted as needed.
MODES
check
The default MODE if none is specified. With no OPTIONS specified, it prints a list of type errors on
standard output, or prints "No errors!" if there were none.
Many OPTIONS affect the output of check mode, sometimes causing it to do completely different things.
(Those can be considered "sub-modes" of check mode.) Many of these options are undergoing considerable
revision and so are not documented here; read the source for a full list.
Widely-useful OPTIONS for check mode include:
--color FILE
Sub-mode which prints out information on what parts of FILE are actually typechecked and which are
not. Due to Hack's partial mode and PHP interoperability, the type system may not know the types
of parts of a program. In this case, it trusts the programmer and carries on. The --color mode
prints out a file with ANSI terminal colors, where green code is actually fully checked, and red
code cannot be fully checked due to such missing type information.
--help Prints information about hh_client(1) and its command line options, and then exits. Many of the
options described there are experimental, especially if they are not described in this man page.
--from EDITOR
Prints output in the format expected by a specific editor. Valid values of EDITOR are emacs and
vim. For usage by other tools, try --json instead.
--json Prints output in a JSON format intended for machine consumption, instead of the output intended
for human consumption that is output by default.
--retries NUM
If the typechecker daemon is busy, try NUM times to connect to it before giving up. Set NUM to 0
to disable retries if the server is not immediately available.
--status
Prints human-readable type error information to standard out and then exits. The default sub-mode
of check if none is specified. This output is not intended for usage by tools, but only for human
consumption. For output intended for tool usage, see the --json and/or --from options.
--version
Prints the current client version, including build ID and build date, and then exits.
--auto-complete
Autocompletes text on STDIN where the cursor is replaced with AUTO332. Returns a newline-
separated list.
--search STRING
Fuzzy search symbol definitions for STRING. Returns a newline-separated list.
start
Explicitly starts the hh_server(1) daemon if it is not already running. This is not normally necessary,
since check mode will start it as needed if it is not running.
stop
Explicitly stops the hh_server(1) daemon if it is running. This is not normally necessary, since the
daemon will exit if it has not been used for an extended period of time.
restart
Explicitly stops and then starts again the hh_server(1) daemon. Fails if the daemon is not currently
running. Restarting the daemon is not normally necessary, since it updates its state in the background,
and hh_client(1) will restart it automatically if the typechecker binaries have been updated.
EXIT STATUS
For check mode in the --status sub-mode, hh_client(1) returns 0 if there are no type errors, and non-zero
otherwise.
Exit statuses for any other invocations are currently undefined and subject to change.
ENVIRONMENT
USER Used in combination with the path to the project root in order to locate the socket for
communicating with the running hh_server(1) daemon. Normally set by your login environment, but
may be unset in some nonstandard setups.
FILES
.hhconfig
When determining where the project root is in order to figure out what files to actually
typecheck, hh_client(1) walks up the directory tree from the specified DIRECTORY until it finds
this file. The set of files recursively included in the directory with the .hhconfig file is the
set of files typechecked.
/tmp/hh_server_$USER/
The client looks inside this directory for sockets to communicate with the hh_server(1) daemon.
The sockets are named based on a hash of the absolute path of the project root.
BUGS
The Hack language is part of the HHVM project. Known bugs can be found at that tracker, and new ones
should be reported there as well: https://github.com/facebook/hhvm/issues
SEE ALSO
hh_server(1), hackificator(1), hack_remove_soft_types(1).
http://docs.hhvm.com/hack/typechecker/setup
http://www.hacklang.org/
HH_CLIENT(1)