---
title: "PHPStan: percorsi dei file cliccabili nel terminale grazie a phpstan.neon"
date: 2026-05-01
lang: it
translationKey: phpstan-percorsi-file-cliccabili-nel-terminale
tags: [PHPStan, PHP]
description: "Come configurare phpstan.neon per ottenere percorsi completi negli errori di PHPStan, così da poterli aprire direttamente nell'IDE con un click."
---

Supponiamo che il tuo progetto PHP/Laravel abbia una struttura simile a questa:

```
.
├── artisan
├── (...)
├── routes
├── src
│   ├── App
│   └── Domain
├── (...)
├── vendor
└── vite.config.js

```

Stai lavorando con **PHPStan** nel terminale e, quando analizza il tuo codice, gli errori si presentano così:

```
 ------ --------------------------------------------------------------------------------------------------------------------------------------------------------------------
  Line   App/Concerns/PasswordValidationRules.php (in context of class App\Actions\Fortify\CreateNewUser)
 ------ --------------------------------------------------------------------------------------------------------------------------------------------------------------------
  17     Method App\Actions\Fortify\CreateNewUser::passwordRules() should return array<int, array<mixed>|Illuminate\Contracts\Validation\ValidationRule|string> but returns
          array<int, Illuminate\Validation\Rules\Password|string>.
         🪪  return.type
 ------ --------------------------------------------------------------------------------------------------------------------------------------------------------------------
```

Apparentemente i percorsi indicati sono corretti, ma scopri che in realtà sono **incompleti**: manca la parte iniziale
che li àncora alla *root* del progetto. Terminali come iTerm2, o il terminale integrato di PhpStorm e VS Code, riescono
a rendere correttamente *cliccabile* un percorso relativo solo se è completo rispetto alla *root* del progetto. In questo
caso,
il percorso corretto nel filesystem è `src/App/Concerns/PasswordValidationRules.php`.
Con un percorso troncato come `App/Concerns/PasswordValidationRules.php`, il terminale non sa dove cercare il file o
interpreta i link in maniera errata.

Nel mio caso (utilizzo **iTerm 2** su macOS), quando premo CMD e faccio click sul link, questo viene interpretato come un
indirizzo di tipo `http://` e quindi aperto nel browser (che non sa cosa fare).

## Perché succede?

Se il tuo `phpstan.neon` è simile a questo:

```yaml showLineNumbers
parameters:

  paths:
    - src

```

...allora PHPStan riporta i percorsi degli errori *relativamente* a quest'unica sottodirectory, facendoli risultare
incompleti:

Il percorso `App/Concerns/PasswordValidationRules.php` è relativo a `src`, non alla root del progetto. Il terminale non
riesce a
risolverlo e il link non funziona.

## La soluzione

Il modo più semplice è impostare due o più percorsi nel nodo `paths` di `phpstan.neon`:

```yaml showLineNumbers
parameters:
  paths:
    - src
    - tests
```

In questo modo gli errori saranno riportati con percorsi completi relativi alla root:

```
 ------ --------------------------------------------------------------------------------------------------------------------------------------------------------------------
  Line   src/App/Concerns/PasswordValidationRules.php (in context of class App\Actions\Fortify\CreateNewUser)
 ------ --------------------------------------------------------------------------------------------------------------------------------------------------------------------
  17     Method App\Actions\Fortify\CreateNewUser::passwordRules() should return array<int, array<mixed>|Illuminate\Contracts\Validation\ValidationRule|string> but returns
          array<int, Illuminate\Validation\Rules\Password|string>.
         🪪  return.type
 ------ --------------------------------------------------------------------------------------------------------------------------------------------------------------------
```

Il percorso `src/App/Concerns/PasswordValidationRules.php` ora è completo e cliccabile: con un click si apre
direttamente il file alla riga giusta nell'IDE.

## Soluzione alternativa

E se per qualche motivo vuoi che PHPStan analizzi solamente una cartella (es. `src`)?

Aggiungi questo blocco in `phpstan.neon`:

```yaml showLineNumbers
services:
  relativePathHelper:
    class: PHPStan\File\SimpleRelativePathHelper
    arguments:
      currentWorkingDirectory: %currentWorkingDirectory%
```
## Conclusione

Una piccola svista nella configurazione di `phpstan.neon` è sufficiente a rendere i percorsi negli errori inutilizzabili
nel terminale. Con la giusta configurazione, i percorsi risulteranno
completi e cliccabili, permettendo di navigare direttamente al problema con un click.

Migliore **Developer eXperience** = sviluppatore più felice 😄
