Provided by: hhvm_3.11.1+dfsg-1ubuntu1_amd64 bug

NAME

       hh_server - Hack language typechecker daemon

SYNOPSIS

       hh_server [--check [--json]] DIRECTORY

DESCRIPTION

       hh_server(1) is the actual typechecker that enforces the Hack type system. It is typically
       accessed via hh_client(1); see the documentation for that tool for more information on the
       Hack type system and how to interface with hh_server(1).

       Directly  invoking  hh_server(1) is of minimal use, since hh_client(1) will start and stop
       it as needed. The only widely useful manual invocation is --check mode.

       With no options, hh_server(1) will start up, do an initial  typecheck  of  DIRECTORY,  and
       continue  running,  waiting  for  connections  from  hh_client(1).  Again, this is not the
       normal way the server should be invoked -- just  running  hh_client(1)  and  ignoring  the
       existence of this server binary is sufficient for common use.

OPTIONS

       --check
              Start  up,  check  the DIRECTORY, print type errors in a human-readable format, and
              then exit. This "batch mode" might be useful in  cases  where  a  single  check  is
              needed  and so starting a long-running daemon is not appropriate, such as in a pre-
              commit hook. The output is intended for human  consumption,  not  tools;  for  tool
              consumption, see --json below.

       --json If  --check  is  specified,  generate  machine-readable  JSON output instead of the
              human-readable output generated by default.

       --check TARGET
              Start up and check DIRECTORY in the same manner as  --check  mode.  Then,  re-check
              TARGET  and  attempt  to  add type annotations to locations in those files that are
              missing. The analysis process is slow and imperfect, but often useful. This process
              can    change    the    code    in    ways    that    fail    at    runtime;    see
              http://docs.hhvm.com/manual/en/install.hack.conversion.php for detailed information
              on  how  to combine this mode with hackificator(1) and hack_remove_soft_types(1) to
              do a full and safe conversion from PHP to Hack.

EXIT STATUS

       If --check is specified, exits with 0 if there are  no  type  errors,  nonzero  otherwise.
       Other exit values are undefined.

ENVIRONMENT and FILES

       Uses  the  same scheme for constructing a path to a socket for client/server communication
       that hh_client(1) uses. See its documentation for a description.

EXAMPLE

       It might be useful to have a pre-commit hook to make sure that  type  errors  don't  sneak
       into  trunk.  A  hook might want to directly invoke hh_server(1) so that it doesn't need a
       running daemon. That can be done with something like

              hh_server --check /var/www

       and, if that fails, printing  its  output  and  rejecting  the  commit.  For  tool  usage,
       something like

              hh_server --check --json /var/www

       might  be  more  appropriate;  the  JSON output can be passed up to a code review tool and
       displayed there.

       This is only for cases where having a long-running daemon  is  inappropriate.  For  normal
       development  usage, invoking hh_client(1) and allowing it to use the server itself will be
       much faster to check code and return type errors.

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_client(1), hackificator(1), hack_remove_soft_types(1).
       http://docs.hhvm.com/manual/en/install.hack.bootstrapping.php
       http://www.hacklang.org/

                                                                                     HH_SERVER(1)