PHPSTAN規則在不運行代碼的情況下檢測不允許的呼叫等。
生產代碼中不應使用一些功能,方法和常數。一個很好的例子是var_dump() ,通常用於快速調試問題,但應在簽發代碼之前刪除。有時不是。
另一個示例將是通用記錄器。假設您使用的是通用記錄庫之一,但是您有自己的記錄儀,可以在調用通用記錄器之前添加更多信息或消毒數據。您的代碼不應直接調用通用記錄器,而應使用您的自定義記錄器。
如果配置,此phpstan擴展程序將檢測到這種用法。應當指出的是,此擴展不是一種防禦或檢測敵對開發人員的方式,因為他們可以混淆呼叫。該擴展是要成為另一隻眼睛,發現自己的錯誤,而不是旨在檢測所有這些。
測試將提供當前檢測到的示例。如果不被測試覆蓋,可能是,但最有可能無法檢測到。 *Test.php文件是測試,從這些文件開始,分析的測試代碼在SRC中,在LIBS中所需的測試類。
如果需要檢測更多電話,請隨時提交問題或創建拉請請求。
使用作曲家安裝擴展名:
composer require --dev spaze/phpstan-disallowed-calls
PHPSTAN是PHP靜態分析工具,是一項要求。
如果您使用phpstan/Extension-installer,則可以設置並可以跳過配置。
對於手動安裝,將其添加到您的phpstan.neon :
includes :
- vendor/spaze/phpstan-disallowed-calls/extension.neon 您可以從捆綁的配置文件開始。
擴展名也支持多功能自定義規則。
假設您已禁止使用自定義規則的foo() 。但是,您要在自定義包裝器中使用時或第一個參數等於指定值時重新允許它。擴展名提供了多種方法:
重新承擔屬性使用類似的配置。
使用提供的發電機來生成PHP的disable_functions & disable_classes配置指令中的配置段。
------ --------------------------------------------------------
Line libraries/Report/Processor/CertificateTransparency.php
------ --------------------------------------------------------
116 Calling var_dump() is forbidden, use logger instead
------ --------------------------------------------------------
函數名稱,方法名稱,類名稱,名稱空間是匹配的,無論其情況如何(不稱呼print_r也會找到print_R呼叫),而其他任何內容都不是諸如常數,文件名,路徑。
您也可以無需任何其他PHPSTAN規則即可使用此擴展程序。如果您想例如檢查第三方代碼或某些內容的使用情況,這可能會很有用。
如果您想貢獻(很棒,謝謝!),則應為您的貢獻添加/運行測試。首先通過運行composer install來安裝Dev依賴項,然後使用composer test運行Phpunit測試,請參見composer.json中的scripts 。測試還可以在GitHub上進行,每次推動上的操作。
您可以通過運行composer cs-fix自動修復編碼樣式問題。
有一個類似的項目,其配置略有不同,幾乎同時創建(僅幾天的差異):phpstan禁止代碼。