[英]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
,即使存在,它仍然抱怨缺少自動加載功能。
此解決方案特定於git
和composer
。
沒有任何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.