簡體   English   中英

使用PHPSTAN配置VIM ALE插件

[英]Configuring VIM ALE plugin with PHPSTAN

我在使用ALE進行PHP開發。 有可能將phpstan用作linters之一,但是無論我做什么,都會有通知phpstan無法加載類/方法定義:

Function foo not found while trying to analyse it - autoloading is probably not configured properly.

不幸的是, ALE默認配置無濟於事,因為它期望phpstan位於$PATH ,即使存在,它仍然抱怨缺少自動加載功能。

此解決方案特定於gitcomposer

沒有任何vcs或composer我找不到很好的解決方案。

因此,首先我們假設項目中使用了composer ,因此生成了autoload.php文件。 如果您不使用此功能,則可能應該這樣做,因為它將類映射到文件並使自動加載變得簡單。

不幸的是,使用全局phpstan二進制是徒勞的。 這是因為phpstan在當前目錄中查找自動加載或霓虹燈配置文件,該文件告訴它在哪里查找類定義。 因此,如果您不想被迫從根項目的目錄中打開項目中的每個文件,那么應該有另一個解決方案。

使用composer在您的項目中安裝的phpstan二進制文件(在vendor/bin/phpstan )可以解決此問題。 本地二進制文件使用相同的autoload.php並正確找到每個類定義。 因此,我們需要告訴ale phpstan二進制文件在哪里。

在以下行中插入vimrc文件(或更佳地在.vim/ftplugin/php.vim ):

let g:ale_php_phpstan_executable = system('if ! type git &> /dev/null; then echo phpstan; else PSE=`git rev-parse --show-toplevel 2> /dev/null`/vendor/bin/phpstan; if [ -x "$PSE" ]; then echo -n $PSE; else echo phpstan; fi; fi')

它告訴phpstan可執行文件的ALE路徑,該路徑由運行shell phpstan確定。

if ! type git if ! type git part檢查系統中是否有git命令。 如果不是,則默認phpstan文本將返回到變量。

git rev-parse --show-toplevel試圖找出我們是否在git倉庫中,以及它的頂層目錄是什么。 如果找到正確,它將通過將/vendor/bin/phpstan到頂級目錄來確定phpstan的路徑。 這是本地安裝的phpstan應駐留的位置。 如果沒有這樣的文件或它不是可執行文件,則將返回默認的phpstan變量值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM