yi1306c12 / my-laravel

0 stars 0 forks source link

PHPStan & Larastan導入 #1

Closed yi1306c12 closed 1 month ago

yi1306c12 commented 6 months ago

意義

LarastanでLaravelプロジェクトを静的解析しよう! #PHP - Qiita

気になる点

laravel/.githubでは.github/workflows/static-analysis.ymlが定義されているが、

yi1306c12 commented 1 month ago

phpstan-strict-rules入れると、Laravelのもともとのコードに対しても指摘が飛ぶようになる。

 ------ ----------------------------------------------------------------------- 
  Line   tests/Unit/ExampleTest.php                                             
 ------ ----------------------------------------------------------------------- 
  :14    Dynamic call to static method PHPUnit\Framework\Assert::assertTrue().  
 ------ ----------------------------------------------------------------------- 

こういうのは、Issueにもある通り、ignore patternに追加することで対応しましょう。

 ignoreErrors:
   - '#Dynamic call to static method PHPUnit\\Framework\\.*#'

PHPコードでの、`empty()`避けようねとか`===`のほうがベター、などは phpstan/phpstan-strict-rules を使って指摘しよう - Software engineering from east direction

とあるが、多分元ネタのissueはこれで、そこにあるようにselfから呼ぶほうが回避方法としては妥当な気がする。

<?php

namespace Tests\Unit;

use PHPUnit\Framework\TestCase;

class ExampleTest extends TestCase
{
    /**
     * A basic test example.
     */
    public function test_that_true_is_true(): void
    {
-        $this->assertTrue(true);
+        self::assertTrue(true);
    }
}

phpunit公式もこう言っておられるので…

The short answer is: there is no right way. And there is no wrong way, either. It is a matter of personal preference. 1. Assertions — PHPUnit 11.3 Manual

yi1306c12 commented 1 month ago

こういうのもあるけど、存在していても使わないので削除した。

 ------ ------------------------------------------------
  Line   routes/console.php
 ------ ------------------------------------------------
  :6     Dynamic call to static method
         Illuminate\Console\Scheduling\Event::hourly().
  :7     Undefined variable: $this
 ------ ------------------------------------------------
yi1306c12 commented 1 month ago

やっぱり必要だったかも…