Typechecker Setup

2018-10-27 11:31 更新

安裝好typechecker,你需要設(shè)置你的代碼,可以用typechecker。

.hhconfig

首先,你將需要一個.hhconfig文件。這個文件很多次是空的(例如,只是touch .hhconfig),但也可以將配置設(shè)置添加到這個文件中。

該.hhconfig文件應(yīng)該放在項目代碼庫的頂級目錄中。Typechecker需要全局分析您的代碼才能進行適當(dāng)?shù)念愋蜋z查,因此需要知道項目根目錄的位置。它使用該.hhconfig文件 - 當(dāng)調(diào)用Typechecker時hh_client,它將首先.hhconfig查找當(dāng)前目錄中或之上的第一個,然后檢查.hhconfig所在位置下的所有文件。

.hhconfig第一次創(chuàng)建新的并運行typechecker 的正常順序如下:

%(root project directory) touch .hhconfig
# Then run the typechecker client.
%(root project directory) hh_client

通用配置選項

通常,默認(rèn)值為空.hhconfig將用于類型檢查。但是,有一些可以放在.hhconfig文件中的配置選項。

assume_php

默認(rèn)值:true 用法:assume_php = false

嚴(yán)格模式文件中,由于禁用了PHP兼容性(除此之外),Typechecker具有假設(shè)所有代碼引用也都在Hack中的奢侈品。部分模式文件沒有這個奢侈品。由于部分模式與PHP具有完全的互操作性,因此其中的代碼允許調(diào)用PHP函數(shù)并操作PHP類 - Typechecker的代碼看不到。這意味著當(dāng)typechecker在部分模式文件中看到類或函數(shù)名稱時,它一無所知,它必須假定該類或函數(shù)在一個PHP文件中被定義,它看不到,并且必須允許該代碼通過。

這對PHP兼容性很好,通常是部分轉(zhuǎn)換的代碼庫中所需要的。然而,它有一些缺點 - 最值得注意的是,它不會捕獲到真正不存在的類的拼寫錯誤或意外引用。這些問題只會在運行時顯示。

該assume_php選項控制此行為。其默認(rèn)值,true如上所述。當(dāng)設(shè)置為false,那么Typechecker不再認(rèn)為部分模式文件中的引用不能知道的類和函數(shù)在PHP文件中是無效的。它會在部分模式文件中引發(fā)錯誤,就像嚴(yán)格模式文件一樣。這有助于覆蓋部分轉(zhuǎn)換的代碼庫。然而,為了獲得更大的覆蓋率,當(dāng)然,所有的代碼當(dāng)然都可以看到typechecker,當(dāng)然 - 你的轉(zhuǎn)換必須足夠遠,所有的代碼都是在Hack文件中(即使它只是聲明模式)。代碼沒有需要完全轉(zhuǎn)換為嚴(yán)格模式; 將這種增加覆蓋范圍擴大到嚴(yán)格模式之外就是這個選擇。

user_attributes

默認(rèn)值:empty 用法:user_attributes = CustomAttribute1 CustomAttribute2

您可以user_attributes使用所有自定義用戶屬性填充配置設(shè)置。此設(shè)置的主要用途是幫助確保您不會在代碼庫中拼寫任何屬性。它還可以確保您可以跟蹤應(yīng)使用什么屬性來避免將任何流氓屬性添加到代碼中。

高級配置選項

您幾乎肯定不需要更改任何這些選項,如果您不正確地執(zhí)行此操作將會打破任何事情。它們被包括在這里是為了完整。

Memory

這些是用于高級調(diào)整typechecker如何使用內(nèi)存。除非您的代碼庫包含超過10,000,000行代碼,否則不需要更改這些代碼。

  • gc_minor_heap_size - OCaml GC的標(biāo)準(zhǔn)配置參數(shù)
  • gc_space_overhead - OCaml GC的標(biāo)準(zhǔn)配置參數(shù)
  • sharedmem_global_size - Typechecker用于存儲有關(guān)代碼庫的全局類型信息的區(qū)域大小
  • sharedmem_heap_size - 在類型檢查時用于永久和臨時存儲的線程之間共享的總區(qū)域的大小

unsafe_xhp

默認(rèn)值:false 用法:unsafe_xhp = true

設(shè)置此選項會true嚴(yán)重影響Typechecker對XHP文件的分析,在使用XHP時完全隱藏某些大類錯誤。只有在將Hack支持直接添加到庫之前手動添加Hack類型到某些古代版本的XHP庫,然后在隨后的4年內(nèi)未升級,這才有用。(如果你想知道你是否屬于這個類別,你不會。)


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號