建议 phper 尝试下静态分析工具 phpstan - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
liuyibao
V2EX    PHP

建议 phper 尝试下静态分析工具 phpstan

  •  
  •   liuyibao 2020-09-07 09:47:25 +08:00 4911 次点击
    这是一个创建于 1863 天前的主题,其中的信息可能已经有所发展或是发生改变。
    php 的主要缺点是代码容易写烂,这段时间尝试使用了 phpstan,的确很好,适合在现有项目上用。
    目前流行的还有 psalm 以及性能比较高的 phan,但是综合来看 phpstan 更适合现有项目,因为错误级别可以自定义,只建议在新的 service 文件上检测,因为底层 model 以及控制器依赖于框架,会报很多警告。

    项目根目录创建文件 phpstan.neon,建议配置如下:
    parameters:
    level: 8
    checkMissingIterableValueTpe: false
    bootstrapFiles:
    - phpstan/bootstrap.php

    (这个启动脚本看自己项目,如果都是标准 composer 加载可能不需要写,如果是使用类似 yii 这种是需要加载的,这个类似入口文件,自己可以改一改)

    PHPStorm 马上也要内置支持了:

    https://blog.jetbrains.com/phpstorm/2020/07/phpstan-and-psalm-support-coming-to-phpstorm/


    别问我 2020 了为啥还在用 PHP ^__^
    14 条回复    2020-09-10 09:09:38 +08:00
    monospace
        1
    monospace  
       2020-09-07 09:56:21 +08:00
    为啥 0202 年了还在用 PHP ?
    newtype0092
        2
    newtype0092  
       2020-09-07 10:19:37 +08:00   1
    @liuyibao @monospace 因为 2020 年以前写的 PHP 项目可能得维护到 2030 年
    ramdava
        3
    ramdava  
       2020-09-07 10:33:23 +08:00
    @monospace
    @newtype0092
    @liuyibao

    因为 PHP 是世界上最好的语言,不接受反驳
    liuxu
        4
    liuxu  
       2020-09-07 10:39:39 +08:00
    @newtype0092
    @monospace
    @liuyibao
    @ramdava

    然后 2030 年的小老弟接手项目后,添加的新需求 PHP 代码可能被 2040 年的少年维护
    pigzzz
        5
    pigzzz  
       2020-09-07 10:43:29 +08:00
    @liuxu 总结,php 千秋万代,源源不息
    Huelse
        6
    Huelse  
       2020-09-07 13:46:34 +08:00
    @pigzzz #5 新的语言和新的架构总会不断出现,php 哪怕只有 1%的占有率也能亘古不变,源远流长
    richzhu
        7
    richzhu  
       2020-09-07 13:54:22 +08:00
    哈哈哈哈,我正在看这个帖子,旁边一个 00 后同事来贱贱的说了一句,php 是什么? 跟万能充是一个东西嘛?
    wangluwl
        8
    wangluwl  
       2020-09-07 14:17:50 +08:00
    @richzhu 依然可以拍黄片
    wule61
        9
    wule61  
       2020-09-07 15:50:15 +08:00
    老铁,该用 golang 了
    fhsan
        10
    fhsan  
       2020-09-07 16:24:37 +08:00
    看了下培训班,现在没培训 php 的了?
    dvaknheo
        11
    dvaknheo  
       2020-09-07 17:32:02 +08:00
    ignoreErrors:
    - '#Unsafe usage of new static#'
    - '#no return typehint specified#'
    - '#with no typehint specified#'
    - '#has no typehint specified#'

    NjcyNzMzNDQ3
        12
    NjcyNzMzNDQ3  
       2020-09-08 09:36:29 +08:00
    感谢分享
    avenger
        13
    avenger  
       2020-09-09 10:14:15 +08:00
    这个也可以试一下,配合使用,疗效更好:
    https://psalm.dev
    liuyibao
        14
    liuyibao  
    OP
       2020-09-10 09:09:38 +08:00
    @avenger ,这位是老司机
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2972 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 47ms UTC 00:21 PVG 08:21 LAX 17:21 JFK 20:21
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86