摘要:簡(jiǎn)介是一個(gè)的靜態(tài)分析器,它傾向于最小化誤報(bào)。它試圖證明錯(cuò)誤而不是正確。它會(huì)查找常見問題,并在類型信息可用或可以推斷時(shí)驗(yàn)證各種操作的類型兼容性。
Phan 簡(jiǎn)介
Phan是一個(gè)PHP的靜態(tài)分析器,它傾向于最小化誤報(bào)。它試圖證明錯(cuò)誤而不是正確。
它會(huì)查找常見問題,并在類型信息可用或可以推斷時(shí)驗(yàn)證各種操作的類型兼容性。
擴(kuò)展安裝
ast
windows
mac: pecl install ast
pcntl.so
mac: 用源碼編譯安裝
windows: 不支持
入門## 安裝 composer require --dev phan/phan ## 初始化配置 vendor/bin/phan --init --init-level=3 ## 執(zhí)行 vendor/bin/phan ## 執(zhí)行(windows) sh vendorinphan核心配置解讀 .phan/config.php
return [ // 開啟的子進(jìn)程數(shù)量,需要使用pcntl擴(kuò)展,windows不支持,mac安裝后,可以修改 "processes" => 1, // 開啟進(jìn)度條 "progress_bar" => true, // 解析的目錄(包含依賴,依賴需要從exclude剔除) "directory_list" => [ "app", "vendor" // 建議最小化原則,少加載文件 ], // 不需要解析的目錄 "exclude_analysis_directory_list" => [ "vendor", ".phan", ], // 需要解析的多帶帶的文件 "file_list" => [], // 需要剔除的文件列表 "exclude_file_list" => [], // 自動(dòng)加載的內(nèi)部類庫(kù),一般用于加載擴(kuò)展stub,下面引入了laravel的stub "autoload_internal_extension_signatures" => [ "laravelIdeHelper" => "_ide_helper.php", "laravelMeta" => ".phpstorm.meta.php" ], ]忽略部分報(bào)錯(cuò):建議盡量不要使用 suppress 忽略整個(gè)方法
class D { /** * @suppress PhanUndeclaredClassMethod */ function g() { C::f(); } }@phan-suppress-current-line 忽略當(dāng)前行
function test_line_suppression() { echo $undef1; // @phan-suppress-current-line PhanUndeclaredVariable echo $undef2 + missingFn(); }@phan-suppress-next-line 忽略下一行
function test_line_suppression() { // @phan-suppress-next-line PhanUndeclaredVariable, PhanUndeclaredFunction echo $undefVar2 + missing_function(); }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/31386.html
摘要:比如上面的例子文件文件我們利用做了語(yǔ)法解析檢測(cè),代碼如下報(bào)錯(cuò)哪里類重復(fù)了不存在查看該屬性是否存在于父類中原理能就是對(duì)解析出來的繼續(xù)做分析,但是前人栽樹后人乘涼,這樣的完整工具已經(jīng)有大神幫我們做好了。 原文:我的個(gè)人博客 https://mengkang.net/1356.html 工作了兩三年,技術(shù)停滯不前,迷茫沒有方向,不如看下我的直播 PHP 進(jìn)階之路 (金三銀四跳槽必考,一般人...
摘要:默認(rèn)的配置不會(huì)檢測(cè)任何代碼。參數(shù)列表質(zhì)量檢測(cè)包其他有人問,你為什么要這么折磨自己呢其實(shí)像類型代碼質(zhì)量工具,不是僅僅自己拿來玩的,在開發(fā)人員略多的技術(shù)團(tuán)隊(duì),可以通過使用它來達(dá)到代碼規(guī)范一致,如果每個(gè)人代碼都不一樣,后果不堪設(shè)想。 showImg(https://segmentfault.com/img/bVbtfeF?w=1796&h=724); 前言 我一生的文章都會(huì)放在這里,我的博客...
摘要:自動(dòng)化接入和升級(jí)方案通過命令行工具提供一鍵接入升級(jí)能力,同時(shí)集成到團(tuán)隊(duì)腳手架中,大大降低了工程接入和維護(hù)的成本。原始代碼經(jīng)過解析器的解析,在管道中逐一經(jīng)過所有規(guī)則的檢查,最終檢測(cè)出所有不符合規(guī)范的代碼,并輸出為報(bào)告。 引言 代碼規(guī)范是軟件開發(fā)領(lǐng)域經(jīng)久不衰的話題,幾乎所有工程師在開發(fā)過程中都會(huì)遇到,并或多或少會(huì)思考過這一問題。隨著前端應(yīng)用的大型化和復(fù)雜化,越來越多的前端工程師和團(tuán)隊(duì)開始重...
摘要:而前端要使用模塊化的原因或者要解決的問題就是解決命名沖突管理依賴提高代碼的可復(fù)用性相關(guān)模塊化規(guī)范常見的規(guī)范有規(guī)范規(guī)范是在推廣過程中對(duì)模塊定義的規(guī)范化產(chǎn)出,主要用于瀏覽器端。目前的各類全局變量都可以模塊化。 開發(fā)中明顯可以感覺到加載一個(gè)HTML需要依賴很多的JS文件依賴,比如到一定階段的HTML頁(yè)面,尾部就是這樣的: 隨著所需功能越來越多,我們就需引入更多的JS依...
摘要:參考資料前端模塊化詳解完整版入門近一萬(wàn)字的語(yǔ)法知識(shí)點(diǎn)補(bǔ)充徹底搞清楚中的和和詳解 前言 前端的模塊化之路經(jīng)歷了漫長(zhǎng)的過程,想詳細(xì)了解的小伙伴可以看浪里行舟大神寫的前端模塊化詳解(完整版),這里根據(jù)幾位大佬們寫的文章,將模塊化規(guī)范部分做了匯總和整理,希望讀完的小伙伴能有些收獲,也希望覺得有用的小伙伴可以點(diǎn)個(gè)贊,筆芯。 什么是模塊 將一個(gè)復(fù)雜的程序依據(jù)一定的規(guī)則(規(guī)范)封裝成幾個(gè)塊(文件)...
閱讀 1809·2019-08-30 13:54
閱讀 2725·2019-08-29 17:27
閱讀 1109·2019-08-29 17:23
閱讀 3350·2019-08-29 15:20
閱讀 1225·2019-08-29 11:28
閱讀 1566·2019-08-26 10:39
閱讀 1315·2019-08-26 10:29
閱讀 639·2019-08-26 10:13