代碼規範 - Phan靜態分析

Phan

簡介

Phan是一個PHP的靜態分析器,它傾向於最小化誤報。它試圖證實錯誤而不是正確。php

它會查找常見問題,並在類型信息可用或能夠推斷時驗證各類操做的類型兼容性。laravel

擴展安裝

  • astgit

  • pcntl.sogithub

    • mac: 用源碼編譯安裝
    • windows: 不支持

入門

## 安裝
composer require --dev phan/phan

## 初始化配置
vendor/bin/phan --init --init-level=3

## 執行
vendor/bin/phan

## 執行(windows)
sh vendor\bin\phan

核心配置解讀 .phan/config.php

return [
    // 開啓的子進程數量,須要使用pcntl擴展,windows不支持,mac安裝後,能夠修改
    'processes' => 1,
    
    // 開啓進度條
    'progress_bar' => true,
    
    // 解析的目錄(包含依賴,依賴須要從exclude剔除)
    'directory_list' => [
        'app',
        'vendor' // 建議最小化原則,少加載文件
    ],
    
    // 不須要解析的目錄
    'exclude_analysis_directory_list' => [
        'vendor',
        '.phan',
    ],
    
    // 須要解析的單獨的文件
    'file_list' => [],
    
    // 須要剔除的文件列表
    'exclude_file_list' => [],
    
    // 自動加載的內部類庫,通常用於加載擴展stub,下面引入了laravel的stub
    'autoload_internal_extension_signatures' => [
        'laravelIdeHelper' => '_ide_helper.php',
        'laravelMeta' => '.phpstorm.meta.php'
    ],
]

忽略部分報錯:建議儘可能不要使用

suppress 忽略整個方法

class D {
    /**
     * @suppress PhanUndeclaredClassMethod
     */
    function g() {
        C::f();
    }
}

@phan-suppress-current-line 忽略當前行

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();  
}
相關文章
相關標籤/搜索