W3Cschool
恭喜您成為首批注冊用戶
獲得88經驗值獎勵
在大多數(shù)情況下,運行hh_client沒有任何明確的選項傳遞給它是所有你需要做的。但是,除了hh_client代碼的類型檢查之外,還有一些可以被傳遞到的選項來訪問代碼數(shù)據(jù)。
本節(jié)不會涵蓋所有選項,要查看所有選項,您可以通過使用幫助hh_client --help。
以下示例將用于討論這些選項:
<?hh // strict
namespace Hack\UserDocumentation\TypeChecker\Options\Examples\Options;
class VeryUniqueClass {
public function foo(): int {
return 4;
}
}
class VeryUniqueGenericClass<T> {
public function __construct(public T $x) {}
public function VeryUniqueMethod(VeryUniqueClass $a): ?T {
return $a->foo() === 4 ? $this->x : null;
}
}
function VeryUniqueFunction(): void {
$a = new VeryUniqueClass();
$b = new VeryUniqueGenericClass("Hello");
$b->VeryUniqueMethod($a);
$b = new VeryUniqueGenericClass(3);
$b->VeryUniqueMethod($a);
}
class VeryUniqueClassChild extends VeryUniqueClass {}
Output
注意:許多這些選項支持命名空間的類并作為其符號。只要確定你引用字符串。例如,
% hh_client --find-class-refs "\Hack\UserDocumentation\TypeChecker\Options\Examples\Options\VeryUniqueClass"
--check是默認的命令hh_client,表示typechecker應該做正常的做...檢查類型錯誤。
以下所有選項(服務器啟動和停止除外)實際上是此--check命令的選項。以下是等同的
%hh_client --check [OPTION]
%hh_client [OPTION]
--start
(和其sister命令--stop
和--restart
)不應該經常使用,而是允許您控制Hack服務器hh_server
。例如,如果您處于爛或隨機狀態(tài),則可能需要停止服務器。
--list-modes
將打印由Hack服務器監(jiān)視的所有文件的列表,并讓您知道每個文件的三種模式(或<?php
)中的哪一種。
:
:
strict user-documentation/hack/16-typechecker/modes-examples/call-into-decl.php
decl user-documentation/hack/16-typechecker/modes-examples/decl.inc.php
partial user-documentation/hack/16-typechecker/modes-examples/main-function.inc.php
php user-documentation/hack/16-typechecker/modes-examples/multiple-modes.php
php user-documentation/hack/16-typechecker/modes-examples/non-hack-code.php
partial user-documentation/hack/16-typechecker/modes-examples/partial.php
strict user-documentation/hack/16-typechecker/modes-examples/strict.php
:
:
如果您提供了一個表示符號的字符串的字符串,那么hh_client
將搜索它所知道的關于該符號的文件,并使用它是否找到一個函數(shù),類等來注釋結果。
% hh_client --search VeryUnique
File "options.php", line 5, characters 7-21: Hack\UserDocumentation\TypeChecker\Options\Examples\Options\VeryUniqueClass, class
File "options.php", line 18, characters 10-27: Hack\UserDocumentation\TypeChecker\Options\Examples\Options\VeryUniqueFunction, function
File "options.php", line 11, characters 7-28: Hack\UserDocumentation\TypeChecker\Options\Examples\Options\VeryUniqueGenericClass, class
你可以細化與sister選擇搜索--search-class,--search-function,--search-typedef,--search-constant。
--find-refs
并且其sister分別--find-class-refs
找到對命名函數(shù)或類的引用。
% hh_client --find-class-refs "\Hack\UserDocumentation\TypeChecker\Options\Examples\Options\VeryUniqueClass"
File "options.php", line 19, characters 12-26: Hack\UserDocumentation\TypeChecker\Options\Examples\Options\VeryUniqueClass::__construct
File "options.php", line 13, characters 36-50: Hack\UserDocumentation\TypeChecker\Options\Examples\Options\VeryUniqueClass
2 total results
--inheritance-children
并且其sisterinheritance-ancestor
打印,給出類名,打印繼承信息。
% hh_client --inheritance-children "\Hack\UserDocumentation\TypeChecker\Options\Examples\Options\VeryUniqueClass"
ile "options.php", line 5, characters 7-21: Hack\UserDocumentation\TypeChecker\Options\Examples\Options\VeryUniqueClass
inherited by File "options.php", line 26, characters 7-26: Hack\UserDocumentation\TypeChecker\Options\Examples\Options\VeryUniqueClassChild
--type-at-pos告訴hh_client嘗試確定特定表達式的類型。它采取以下形式:
%hh_client --type-at-pos options.php:22:3
您提供一個文件名,行號和列號用冒號分隔。列號是確定最難的部分。例如,變量是變量名稱的實際開始列,不包括該變量$。
% hh_client --type-at-pos options.php:22:3
Hack\UserDocumentation\TypeChecker\Options\Examples\Options\VeryUniqueGenericClass
這將列出由Hack服務器監(jiān)視的所有有輸入錯誤的文件。
這將提供關于Hack服務器的內部統(tǒng)計信息的基于json的表示,特別是在內存區(qū)域。
%hh_client --stats
{
“init_parsing_heap_size”:3375552“init_heap_size”:10226176,
“max_heap_size
”:12275072
}
Hack Typechecker有一個有限的linter。目前,它會檢查,如果你使用的是大寫TRUE,F(xiàn)ALSE而NULL并建議您使用小寫字母true,false并null代替。其他linter功能將來可能會添加。
此選項目前可在特定文件的基礎上使用。您必須指定要單獨的文件。
% hh_client --lint a.php
File "/tmp/test/a.php", line 4, characters 21-24:
Please use 'true' instead of 'TRUE' (Lint[5001])
File "/tmp/test/a.php", line 7, characters 24-27:
Please use 'true' instead of 'TRUE' (Lint[5001])
File "/tmp/test/a.php", line 12, characters 8-11:
Please use 'true' instead of 'TRUE' (Lint[5001])
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: